Dit artikel biedt een uitgebreide handleiding voor het gebruik van de JavaScript-activiteit in Workflow Builder. Het behandelt de kernconcepten, beschikbare functies, hoe je toegang krijgt tot en het aanpassen van de workflowcontext, en best practices voor het schrijven van effectieve JavaScript-code. Aan het einde van dit artikel heb je een duidelijk inzicht in hoe je JavaScript kunt gebruiken om je workflows te verbeteren.
De JavaScript-activiteit begrijpen
Met de JavaScript-activiteit in Workflow Builder kun je gepersonaliseerde JavaScript-code rechtstreeks in je workflows uitvoeren. Met deze functie kun je geavanceerde gegevensmanipulatie uitvoeren, voorwaardelijke logica instellen en integreren met andere systemen, afhankelijk van de configuratie van je workflow. De JavaScript-code wordt uitgevoerd in een veilige omgeving die wordt aangedreven door Goja, een pure Go-implementatie van ECMAScript 5.1, die stabiliteit en veiligheid garandeert.
Beschikbare functies en objecten
In de JavaScript-activiteit heb je toegang tot een beperkte set ingebouwde JavaScript-objecten en een gepersonaliseerde log
functie voor het loggen van berichten. De beschikbare objecten zijn onder andere:
Math
: Biedt wiskundige functies en constanten (bijv.Math.random()
,Math.floor()
).JSON
: Methoden voor het parseren en stringificeren van JSON-gegevens (bijv.JSON.parse()
,JSON.stringify()
).Date
: Functies voor het verwerken van datums en tijden (bijv.new Date()
,Date.now()
).Array
: Het wereldwijde Array-object voor arraymanipulatie.String
: Het globale String-object voor tekstmanipulatie.Number
: Het wereldwijde Number-object voor numerieke bewerkingen.Boolean
: Het globale Boolean-object voor true/false-waarden.Fout
: Het globale foutobject voor foutafhandeling.log
: Een gepersonaliseerde functie om berichten naar de logboeken van de activiteit te sturen.
Voorbeeld van het gebruik van de log
functie:
JavaScript
log("This message will appear in the activity logs.");log("The value of a variable is: " + someVariable);
Toegang tot workflowcontext
Je JavaScript-code kan toegang krijgen tot de volledige workflowcontext via een globale variabele genaamd context
. Dit object bevat de huidige status en gegevens van je workflow, waardoor je waarden kan lezen en wijzigen zoals toegestaan door de configuratie van je workflow.
Hier is een voorbeeld van een typische context
structuur:
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" } }}
Het context
object bevat veel gegevens, waaronder payload
, flow:batch:0
en step:print:0
.
Voorbeelden van het ophalen van waarden uit de context
:
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);
Belangrijke opmerking: De structuur van het context
object varieert afhankelijk van je specifieke workflow. Raadpleeg altijd de input van je workflow en de vorige activiteit outputs voor nauwkeurige datapaden.
Je JavaScript-code schrijven
Je JavaScript-code wordt automatisch verpakt in een onmiddellijk aangeroepen functie-expressie (IIFE) voor veilige uitvoering. Je hoeft deze wrapper niet in je code op te nemen; schrijf gewoon de JavaScript-instructies die je wilt uitvoeren.
Resultaten worden weergegeven
De JavaScript-activiteit kan waarden retourneren die worden opgeslagen in de output van de activiteit. Het formaat van de geretourneerde waarde is afhankelijk van het type:
Een JavaScript-object retourneren: De eigenschappen worden in de
JSCodeOutput
als key-value pairs toegewezen.Andere waarden retourneren: Waarden zoals strings, getallen, booleans of arrays worden verpakt onder een standaard sleutel genaamd
"result"
in deJSCodeOutput
.
Voorbeeld: een object retourneren
JavaScript
var myResult = { status: "success", message: "Order processed", orderId: context.payload.order.id};return myResult;
Dit zal een output opleveren die vergelijkbaar is met:
JSON
{ "flow:js-script:1": { "message": "Order processed", "orderId": "048aa79f-7d6e-45bd-930a-81be07be0f19", "status": "success" }, "payload": {...}}
Voorbeeld: een niet-objectwaarde (string) retourneren
JavaScript
return "Processing complete for order " + context.payload.order.customerOrderId;
Dit zal resulteren in een output zoals:
JSON
{ "result": "Processing complete for order test-order-ref"}
Voorbeeld: Een array retourneren
JavaScript
var attributes = context.payload.part.productDetails.attributes;var attributeNames = Object.keys(attributes);return attributeNames;
Dit zal resulteren in een output zoals:
JSON
{ "result": ["CoatingType", "ColorType", "Orientation", "PaperFormat", "PaperType", "ProductStatus", "ProtectionType", "ShapeEdgeType", "SpotFinishingType", "State", "Variable"]}
Debugging en loggen
De log()
functie is essentieel voor het debuggen binnen de JavaScript-activiteit. Alle berichten die naar log()
worden gestuurd, worden weergegeven in het gedeelte Logs van de uitvoer van de activiteit, zodat je de uitvoeringsstroom kunt volgen en de waarden van variabelen kunt controleren.
Beste praktijken
Houd het gefocust: Gebruik de JavaScript-activiteit voor specifieke datatransformaties of conditionele controles. Complexere logica kan beter worden afgehandeld door speciale workflowstappen of externe services.
Gebruik
try...catch
: Plaats je code intry...catch
blokken om onverwachte fouten op te vangen en workflowfouten te voorkomen.Invoer valideren: Controleer altijd of de gegevens van de
context
bestaan en in het verwachte formaat zijn voordat je ze gebruikt.Test grondig: Test je JavaScript-code grondig met verschillende invoerwaarden om te zorgen voor correct gedrag in verschillende scenario's.
Door deze richtlijnen te volgen, kun je de JavaScript-activiteit effectief gebruiken om krachtige gepersonaliseerde logica en flexibiliteit in je Workflow Builder-workflows te introduceren.
📝 Niet wat je nodig had?
Help ons dit artikel te verbeteren, stuur ons een e-mail naar [email protected] — vermeld alsjeblieft de titel van het artikel.