Variabler i Trigger-scripts

Oavsett vilken typ av entitet man har valt så finns det några allmänna variabler som kan användas i scripten:

Varibel

Beskrivning/Typ

NowUtc

datetime, samma som DateTime.UtcNow

DayAgoUtc

datetime

WeekAgoUtc

datetime

MonthAgoUtc

datetime

CurrentUser

Användarobjekt

db

Objekt för att interagera med databasen (dB-frågor)

api

Objekt med hjälpmetoder.

record

Objektet som triggern kör mot.

 

Den viktigaste variabeln är ”record” som Triggern kör mot. Antingen för att den just har blivit sparad (Händelsestyrd trigger) eller för att en kontroll av en Tidsstyrd trigger har fallit ut. Man kan göra vilka ändringar man vill på detta objekt, ändringarna sparas till databasen automatiskt. Ändringar som görs kan påverka andra triggrar så att dessa körs, under förutsättning att dess villkor då blir uppfyllda.

När man handskas med fält när man gör script, måste man använda fältens systemnamn, t.ex. v:record.BaseHeader . I användarinterfacet visas endast fältbenämningen. Detta gör det knepigt och det är en av orsakerna till att vi rekommenderar att man tar hjälp av Nilex när man vill använda Triggerscript. I den nuvarande editorn finns ingen stödfunktion som hjälper dig att hitta rätt namn. Ett sätt att komma runt detta och hitta systemnamnet är att använda funktionaliteten som finns i editorn för Textmallar av E-posttyp. Gör så här:

1.  Öppna NSP i en annan flik eller browser.

2.  I Agentportalen gå till Systeminställningar> Hantera> Textmallar

3.  Skapa en ny textmall, välj malltyp E-post.

4.  Välj samma Entitet i fältet Taggar som är vald i Triggern.

5.  Sätt markören i textfältet.

6.  I listan under fältet Taggar finns en lista med fältbeteckningar. Dubbelklicka på det önskade fältet och systemnamnet skrivs ut i textfältet.

När man använder referensfält i script, d.v.s. fält som pekar på andra objekt, måste man känna till att dessa konverteras till ID-nummer av heltalstyp.

Exempel: Ärendeegenskapen Prioritet (fältbenämning) har systemnamnet v:record.Priority men eftersom det är ett referensfält skall man i ckriptet använda record.PriorityId istället.

Lathund med vanliga Ärendefält

Här följer en lista med, i script ofta använda, systemnamn för fält och deras script-datatyper.

Fältbenämning

Scriptnamn

Datatyp

Agent group:

record.AgentGroupId

int

Agent:

record.BaseAgentId

int

Category:

record.CategoryId

int

Closed date:

record.CloseDateTime

datetime

Created date:

record.CreatedDate

datetime

Description:

record.BaseDescription

string (html)

End User:

record.BaseEndUserId

int

Impact:

record.ImpactId

int

Latest update:

record.UpdatedDate

datetime

Major incident:

record.IsMajor

boolean

Priority:

record.PriorityId

int

Reported by:

record.ReportedById

int

Status:

record.BaseEntityStatusId

int

Subject:

record.BaseHeader

string

Ticket number:

record.ReferenceNo

string

Urgency:

record.UrgencyId

int

 

Alla fält som är tillagda med hjälp av Entitetseditorn har prefixet “u_”.

Fält beräkningar och null-värden

Alla fält har initialt värdet ”null” och det är inte tillåtet att använda ”null”-värden i numeriska beräkningar. Detta betyder att man först måste konvertera ”null” till 0 (noll) för fält som skall användas i script. Det lättaste sättet att göra det är med operatorn “||” som betyder; om värdet till vänster om operatorn är null, använd det som står på högra sidan istället. Exempel:

var value1 = record.u_Value1 || 0;

var value2 = record.u_Value2 || 0;

record.u_SumOfValues = value1 + value2;