Denne artikel giver en omfattende guide til at bruge JavaScript-aktiviteten i Workflow builder. Den dækker kernekoncepter, tilgængelige funktioner, hvordan du får adgang til og ændrer workflow-konteksten, og bedste praksis for at skrive effektiv JavaScript-kode. Når du har læst denne artikel, vil du have en klar forståelse af, hvordan du kan udnytte JavaScript til at forbedre dine workflows.
Forstå JavaScript-aktiviteten
JavaScript-aktiviteten i Workflow Builder giver dig mulighed for at køre tilpasset JavaScript-kode direkte i dine workflows. Denne funktion muliggør avanceret datamanipulation, opsætning af betinget logik og integration med andre systemer, afhængigt af dit workflows konfiguration. JavaScript-koden kører i et sikkert miljø drevet af Goja, som er en ren Go-implementering af ECMAScript 5.1, hvilket sikrer stabilitet og sikkerhed.
Tilgængelige funktioner og objekter
I JavaScript-aktiviteten har du adgang til et begrænset sæt af indbyggede JavaScript-objekter og en tilpasset log
-funktion til logning af beskeder. De tilgængelige objekter omfatter:
Math
: Giver matematiske funktioner og konstanter (f.eks.Math.random()
,Math.floor()
).JSON
: Metoder til parsing og stringificering af JSON-data (f.eks.JSON.parse()
,JSON.stringify()
).Date
: Funktioner til håndtering af datoer og tidspunkter (f.eks.new Date()
,Date.now()
).Array
: Det globale Array-objekt til array-manipulation.String
: Det globale String-objekt til tekstmanipulation.Number
: Det globale Number-objekt til numeriske operationer.Boolean
: Det globale Boolean-objekt for sand/falsk-værdier.Fejl
: Det globale fejlobjekt til fejlhåndtering.log
: En tilpasset funktion til at sende beskeder til aktivitetens logfiler.
Eksempel på brug af log
-funktionen:
JavaScript
log("This message will appear in the activity logs.");log("The value of a variable is: " + someVariable);
Adgang til workflow-kontekst
Din JavaScript-kode kan få adgang til hele workflow-konteksten via en global variabel ved navn context
. Dette objekt indeholder den aktuelle tilstand og data for dit workflow, så du kan læse og ændre værdier, som det er tilladt af dit workflows konfiguration.
Her er et eksempel på en typisk context
-struktur:
JSON
{ "flow:batch:0": { "batchUid": "692576827", "batchedBy": { "CoatingType": "glossy-lamination", "ColorType": "4-4" }, "quantity": "1" }, "payload": { "facility": { "countryId": "DE", "name": "DE_GCSB", "timeZone": "Europe/Berlin" }, "files": { "default": "https://..." }, "order": { "amount": "19.99", "clientId": "test-orders", "deliveryAddress": { "address_line_1": "123 Test St", "city": "Testville", // ... more address details }, // ... more order details }, "part": { "id": "7101535136", "productDetails": { "attributes": { "CoatingType": "glossy-lamination", "ColorType": "4-4", // ... more attributes }, "derivedAttributes": { "height": { "value": "55" }, // ... more derived attributes } } } // ... more payload data }, "step:print:0": { "machine": { "0": "digital-presses-hp-indigo-7900", "#": "1" }, "machineTypes": "digital-presses", "sheetSizes": { "0": "sra3", "#": "1" } }}
context
-objektet er fyldt med data, herunder payload
, flow:batch:0
og step:print:0
.
Eksempler på adgang til værdier fra konteksten
:
JavaScript
// Get the client ID from the order payloadvar clientId = context.payload.order.clientId;log("Client ID: " + clientId);// Access a product attributevar coatingType = context.payload.part.productDetails.attributes.CoatingType;log("Product Coating Type: " + coatingType);// Access a derived attribute's valuevar productHeight = context.payload.part.productDetails.derivedAttributes.height.value;log("Product Height: " + productHeight);// Get the customer's city from the delivery addressvar city = context.payload.order.deliveryAddress.city;log("Delivery City: " + city);// You can also modify context values (if allowed by workflow permissions)context.payload.order.deliveryAddress.city = "New Testville";log("Updated Delivery City: " + context.payload.order.deliveryAddress.city);
Vigtig bemærkning: Strukturen af context
-objektet varierer afhængigt af din specifikke workflow. Se altid din workflows input og tidligere aktivitetsoutput for nøjagtige datastier.
Skriv din JavaScript-kode
Din JavaScript-kode vil automatisk blive pakket ind i et "immediately invoked function expression" (IIFE) for sikker eksekvering. Du behøver ikke at inkludere denne wrapper i din kode; skriv blot de JavaScript-udsagn, du ønsker at udføre.
Returnerer resultater
JavaScript-aktiviteten kan returnere værdier, der vil blive gemt i aktivitetens output. Formatet af den returnerede værdi afhænger af dens type:
Returnering af et JavaScript-objekt: Egenskaberne vil blive kortlagt som nøgle-værdi-par i
JSCodeOutput
.Returnering af andre værdier: Værdier som f.eks. tekststrenge, tal, booleske værdier eller arrays vil blive pakket ind under en standardnøgle kaldet
"result"
iJSCodeOutput
.
Eksempel: Returnering af et objekt
JavaScript
var myResult = { status: "success", message: "Order processed", orderId: context.payload.order.id};return myResult;
Dette vil give et output, der ligner:
JSON
{ "flow:js-script:1": { "message": "Order processed", "orderId": "048aa79f-7d6e-45bd-930a-81be07be0f19", "status": "success" }, "payload": {...}}
Eksempel: Returnering af en ikke-objektværdi (streng)
JavaScript
return "Processing complete for order " + context.payload.order.customerOrderId;
Dette vil resultere i en output som:
JSON
{ "result": "Processing complete for order test-order-ref"}
Eksempel: Returnering af et array
JavaScript
var attributes = context.payload.part.productDetails.attributes;var attributeNames = Object.keys(attributes);return attributeNames;
Dette vil resultere i en output som:
JSON
{ "result": ["CoatingType", "ColorType", "Orientation", "PaperFormat", "PaperType", "ProductStatus", "ProtectionType", "ShapeEdgeType", "SpotFinishingType", "State", "Variable"]}
Fejlfinding og logning
log()
-funktionen er vigtig til fejlfinding i JavaScript-aktiviteten. Alle beskeder, der sendes til log()
, vil blive vist i afsnittet Logs i aktivitetens output, så du kan følge eksekveringsflowet og inspicere variabelværdier.
Bedste fremgangsmåder
Hold det fokuseret: Brug JavaScript-aktiviteten til specifikke datatransformationer eller betingede tjek. Mere kompleks logik håndteres bedre af dedikerede workflow-trin eller eksterne tjenester.
Brug
try...catch
: Indsæt din kode itry...catch
-blokke for at håndtere uventede fejl elegant og forhindre workflow-fejl.Valider input: Tjek altid, at dataene fra
context
eksisterer og er i det forventede format, før du bruger dem.Test grundigt: Test din JavaScript-kode grundigt med forskellige input for at sikre korrekt adfærd under forskellige scenarier.
Ved at følge disse retningslinjer kan du effektivt bruge JavaScript-aktiviteten til at introducere kraftfuld tilpasset logik og fleksibilitet i dine Workflow Builder-workflows.
📝 Var det ikke det, du ledte efter?
Hjælp os med at gøre denne artikel bedre, send os en e-mail på [email protected] — husk at skrive artiklens titel med.