Gå til hovedinnhold

[Workflow Builder – GCW] Bruke JavaScript-aktiviteten med V2 Engine

Juliana Maciel Maruri da Cunha avatar
Skrevet av Juliana Maciel Maruri da Cunha
Oppdatert for over 2 uker siden

Denne artikkelen gir en omfattende veiledning om hvordan du bruker JavaScript-aktiviteten i Workflow Builder. Den dekker kjernebegreper, tilgjengelige funksjoner, hvordan du får tilgang til og endrer workflow-konteksten og beste praksis for å skrive effektiv JavaScript-kode. Når du har lest denne artikkelen, vil du ha en klar forståelse av hvordan du kan bruke JavaScript til å forbedre workflowene dine.


Forstå JavaScript-aktiviteten

JavaScript-aktiviteten i Workflow Builder lar deg kjøre personlig tilpasset JavaScript-kode direkte i arbeidsflytene dine. Denne funksjonen muliggjør avansert datamanipulering, oppsett av betinget logikk og integrasjon med andre systemer, avhengig av konfigurasjonen til arbeidsflyten din. JavaScript-koden kjøres i et sikkert miljø drevet av Goja, som er en ren Go-implementering av ECMAScript 5.1, noe som sikrer stabilitet og sikkerhet.


Tilgjengelige funksjoner og objekter

I JavaScript-aktiviteten har du tilgang til et begrenset sett med innebygde JavaScript-objekter og en personlig tilpasset log-funksjon for logging av meldinger. De tilgjengelige objektene inkluderer:

  • Math: Gir matematiske funksjoner og konstanter (f.eks. Math.random(), Math.floor()).

  • JSON: Metoder for parsing og stringifisering av JSON-data (f.eks. JSON.parse(), JSON.stringify()).

  • Date: Funksjoner for håndtering av datoer og klokkeslett (f.eks. new Date(), Date.now()).

  • Array: Det globale Array-objektet for manipulering av matriser.

  • String: Det globale String-objektet for tekstmanipulering.

  • Number: Det globale Number-objektet for numeriske operasjoner.

  • Boolean: Det globale Boolean-objektet for true/false-verdier.

  • Error: Det globale Error-objektet for feilhåndtering.

  • log: En personlig tilpasset funksjon for å sende meldinger til aktivitetens logger.

Eksempel på bruk av log-funksjonen:

JavaScript
log("This message will appear in the activity logs.");log("The value of a variable is: " + someVariable);

Få tilgang til arbeidsflytkontekst

JavaScript-koden din kan få tilgang til hele arbeidsflytkonteksten gjennom en global variabel som heter context. Dette objektet inneholder den nåværende tilstanden og dataene for arbeidsflyten din, slik at du kan lese og endre verdier som tillatt av arbeidsflytens konfigurasjon.

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 rikt på data, inkludert payload, flow:batch:0 og step:print:0.

Eksempler på hvordan du får tilgang til verdier fra 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);

Viktig merknad: Strukturen til context-objektet varierer avhengig av din spesifikke arbeidsflyt. Se alltid på arbeidsflytens input og tidligere aktivitetsutganger for nøyaktige databaner.


Skrive JavaScript-koden din

JavaScript-koden din vil automatisk bli pakket inn i et umiddelbart påkalt funksjonsuttrykk (IIFE) for sikker kjøring. Du trenger ikke å inkludere denne innpakningen i koden din, bare skriv JavaScript-setningene du ønsker å kjøre.


Returnerer resultater

JavaScript-aktiviteten kan returnere verdier som lagres i aktivitetens output. Formatet på den returnerte verdien avhenger av typen:

  • Returnere et JavaScript-objekt: Egenskapene vil bli tilordnet som nøkkel-verdi-par i JSCodeOutput.

  • Returnere andre verdier: Verdier som strenger, tall, boolske verdier eller matriser vil bli pakket inn under en standardnøkkel kalt "result" i JSCodeOutput.

Eksempel: Returnere en vare

JavaScript
var myResult = {  status: "success",  message: "Order processed",  orderId: context.payload.order.id};return myResult;

Dette vil gi et resultat som ligner på:

JSON
{  "flow:js-script:1": {    "message": "Order processed",    "orderId": "048aa79f-7d6e-45bd-930a-81be07be0f19",    "status": "success"  },  "payload": {...}}

Eksempel: Returnere en verdi som ikke er et objekt (streng)

JavaScript
return "Processing complete for order " + context.payload.order.customerOrderId;

Dette vil gi et resultat som:

JSON
{  "result": "Processing complete for order test-order-ref"}

Eksempel: Returnere en matrise

JavaScript
var attributes = context.payload.part.productDetails.attributes;var attributeNames = Object.keys(attributes);return attributeNames;

Dette vil gi et resultat som:

JSON
{  "result": ["CoatingType", "ColorType", "Orientation", "PaperFormat", "PaperType", "ProductStatus", "ProtectionType", "ShapeEdgeType", "SpotFinishingType", "State", "Variable"]}

Feilsøking og logging

log()-funksjonen er viktig for feilsøking i JavaScript-aktiviteten. Alle meldinger som sendes til log() vil vises i delen Logger i aktivitetens utdata, slik at du kan følge med på utførelsen og sjekke variabelverdier.


Gode vaner

  • Hold det fokusert: Bruk JavaScript-aktiviteten for spesifikke datatransformasjoner eller betingede kontroller. Mer kompleks logikk håndteres bedre av dedikerte arbeidsflyttrinn eller eksterne tjenester.

  • Bruk try...catch: Pakk inn koden din i try...catch-blokker for å håndtere uventede feil på en smidig måte og forhindre at arbeidsflyten mislykkes.

  • Valider input: Sjekk alltid at dataene fra context finnes og er i det forventede formatet før du bruker dem.

  • Test grundig: Test JavaScript-koden din grundig med ulike input for å sikre at den fungerer riktig i forskjellige situasjoner.

Ved å følge disse retningslinjene kan du effektivt bruke JavaScript-aktiviteten til å introdusere kraftig personlig tilpasset logikk og fleksibilitet i dine Workflow Builder-arbeidsflyter.


📝 Ikke det du lette etter?

Hjelp oss å forbedre denne artikkelen, send oss en e-post til [email protected] — husk å ta med artikkeltittelen.

Svarte dette på spørsmålet?