JavaScript-skript och mallar javascript-scripts-and-templates
Skript gör det möjligt att beräkna värden, utbyta data mellan olika uppgifter i processen och att utföra specifika åtgärder med SOAP-anrop.
Skript är vanliga i ett arbetsflödesdiagram:
-
Alla aktiviteter har initieringsskript. Ett initieringsskript körs när aktiviteten aktiveras och kan användas för att initiera variabler och ändra egenskaperna.
-
Aktiviteten JavaScript-kod används bara för att köra ett skript.
-
Aktiviteten Test utvärderar JavaScript-uttryck för att aktivera lämplig övergång.
-
De flesta textfält är JavaScript-mallar: JavaScript-uttryck kan inkluderas mellan <%= och %>. Dessa fält har en knapp som öppnar en nedrullningsbar lista där du kan ange uttryck.
Objekt som exponeras objects-exposed
JavaScript-skript som körs i ett arbetsflödes-sammanhang får tillgång till en serie ytterligare globala objekt.
- instance: Representerar arbetsflödet som körs. Det här objektets schema är xtk:arbetsflöde.
- uppgift: Representerar de uppgifter som körs. Det här objektets schema är xtk:workflowTask.
- event: Representerar händelserna som aktiverade aktiviteten som körs. Det här objektets schema är xtk:workflowEvent. Det här objektet har inte initierats för AND-join typaktiviteter som har aktiverats från flera övergångar.
- händelser: Representerar listan med händelser som aktiverade den aktuella aktiviteten. Det här objektets schema är xtk:workflowEvent. Tabellen innehåller vanligtvis ett element men kan innehålla flera för AND-join typaktiviteter som har aktiverats baserat på flera övergångar.
- aktivitet: Representerar modellen för den uppgift som körs. Det här objektets schema beror på aktivitetstypen. Det här objektet kan ändras av initieringsskriptet, i andra skript, med obestämda effekter.
De tillgängliga egenskaperna för dessa objekt kan visas i en nedrullningsbar lista genom att klicka på knappen till höger om skriptverktygsfältet.
Exempel
I det här exemplet och i följande exempel skapar du ett arbetsflöde som innehåller en JavaScript-kod aktivitet och End aktivitet enligt bilden nedan.
Dubbelklicka på JavaScript-kod och infoga följande skript:
logInfo("Label: " + instance.label)
logInfo("Start date: " + task.creationDate)
The logInfo(message) infogar ett meddelande i loggen.
Klicka OK när du vill stänga guiden startar du arbetsflödet med åtgärdsknapparna längst upp till höger i listan med arbetsflöden. När körningen är klar, se loggen. Du bör se två meddelanden som motsvarar skriptet: den ena visar arbetsflödets etikett, den andra visar det datum då skriptet aktiverades.
Variabel variables
Variablerna är de kostnadsfria egenskaperna för instance, task och event objekt. De JavaScript-typer som tillåts för dessa variabler är string, number och Date.
Förekomstvariabler instance-variables
förekomstvariablerna (instance.vars.xxx) kan jämföras med globala variabler. De delas av alla aktiviteter.
Uppgiftsvariabler task-variables
Uppgiftsvariabler (task.vars.xxx) kan jämföras med lokala variabler. De används bara av den aktuella uppgiften. Variablerna används av beständiga aktiviteter för att lagra data och används ibland för att utbyta data mellan olika skript för samma aktivitet.
Händelsevariabler event-variables
Händelsevariabler (vars.xxx) möjliggör datautbyte mellan de grundläggande uppgifterna i en arbetsflödesprocess. Dessa variabler skickas av aktiviteten som aktiverade den pågående uppgiften. Det går att ändra dem och definiera nya. De överförs sedan till följande aktiviteter.
Händelsen är de vanligaste variablerna, och de bör användas i stället för förekomstvariabler.
Vissa händelsevariabler ändras eller läses av de olika aktiviteterna. Dessa är alla strängtypsvariabler. En export ställer till exempel in vars.filename variabeln med det fullständiga namnet på den fil som just har exporterats. Alla dessa lästa eller ändrade variabler beskrivs i Om aktiviteter, i avsnitten Indataparametrar och Utdataparametrar av verksamheterna.
Användningsfall example
Exempel 1
I det här exemplet används en instansvariabel för att dynamiskt beräkna den delade procentandelen som ska användas på en population.
-
Skapa ett arbetsflöde och lägg till en Start-aktivitet.
-
Lägg till och konfigurera en JavaScript-kodsaktivitet för att definiera en instansvariabel.
Till exempel:
instance.vars.segmentpercent = 10;
-
Lägg till en Query-aktivitet och målmottagare efter behov.
-
Lägg till en delad aktivitet och konfigurera den så att den utför ett slumpmässigt urval av den inkommande populationen. Procentvärdet för samplingen kan vara vad du vill. Den anges till 50 % i det här exemplet.
Det är den här procentandelen som uppdateras dynamiskt tack vare instansvariabeln som definierats tidigare.
-
I avsnittet Initieringsskript på fliken Avancerat i aktiviteten Dela definierar du ett JS-villkor. JS-villkoret väljer den slumpmässiga samplingsprocenten för den första övergången som kommer från aktiviteten Dela och uppdaterar den till ett värde som anges av instansvariabeln som skapades tidigare.
code language-none activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
-
Se till att komplementet genereras i en separat övergång av aktiviteten Dela och lägg till aktiviteter efter varje utgående övergång.
-
Spara och kör arbetsflödet. Den dynamiska samplingen tillämpas enligt instansvariabeln.
Exempel 2
-
Ta arbetsflödet från föregående exempel och ersätt skriptet för JavaScript-kod aktivitet med följande skript:
code language-none instance.vars.foo = "bar1" vars.foo = "bar2" task.vars.foo = "bar3"
-
Lägg till följande skript i initieringsskriptet för End aktivitet:
code language-none logInfo("instance.vars.foo = " + instance.vars.foo) logInfo("vars.foo = " + vars.foo) logInfo("task.vars.foo = " + task.vars.foo)
-
Starta arbetsflödet och titta sedan på loggen.
code language-none Workflow finished task.vars.foo = undefined vars.foo = bar2 instance.vars.foo = bar1 Starting workflow (operator 'admin')
Det här exemplet visar att aktiviteten som följer JavaScript-kod får åtkomst till förekomstvariablerna och händelsvariablerna, men aktivitetsvariablerna är inte tillgängliga utifrån ('undefined').
Anropa en instansvariabel i en fråga calling-an-instance-variable-in-a-query
När du har angett en instansvariabel i en aktivitet kan du återanvända den i en arbetsflödesfråga.
Så att anropa en variabel instance.vars.xxx = "yyy" i ett filter, ange $(instance/vars/xxx).
Exempel:
-
Skapa en förekomstvariabel som definierar ett leveransens interna namn via JavaScript code: instance.vars.deliveryIN = "DM42".
-
Skapa en fråga vars mål- och filtreringsdimensioner är mottagarna. I villkoren anger du att du vill söka efter alla mottagare som har fått leveransen som anges av variabeln.
Som påminnelse lagras den här informationen i leveransloggarna.
Referera till instansvariabeln i Value kolumn, ange $(instance/vars/@deliveryIN).
Arbetsflödet returnerar mottagarna av DM42-leveransen.
Avancerade funktioner advanced-functions
Förutom de vanliga JavaScript-funktionerna finns det specialfunktioner för att hantera filer, läsa eller ändra data i databasen eller lägga till meddelanden i loggen.
Journal journal
logInfo(message) beskrivs i exemplen ovan. Den här funktionen lägger till ett informationsmeddelande i journalen.
logError(message) lägger till ett felmeddelande i loggen. Skriptet avbryter körningen och arbetsflödet ändras till felstatus (instansen pausas som standard).
Initieringsskript initialization-script
Under vissa omständigheter kan du ändra en aktivitetsegenskap vid körningen.
De flesta aktivitetsegenskaperna kan beräknas dynamiskt, antingen med en JavaScript-mall eller eftersom arbetsflödesegenskaperna uttryckligen tillåter att värdet beräknas av ett skript.
För andra egenskaper måste du dock använda initieringsskriptet. Skriptet utvärderas innan aktiviteten körs. The activity variabeln refererar till aktiviteten som motsvarar uppgiften. Egenskaperna för den här aktiviteten kan ändras och påverkar bara den här aktiviteten.
Relaterade ämnen
Exempel på JavaScript-kod i arbetsflöden