Dieser Artikel bietet eine umfassende Anleitung zur Nutzung der JavaScript-Aktivität im Workflow Builder. Er behandelt die wichtigsten Konzepte, die verfügbaren Funktionen, den Zugriff auf den Workflow-Kontext und dessen Änderung sowie bewährte Methoden zum Schreiben effektiver JavaScript-Codes. Am Ende dieses Artikels werden Sie genau wissen, wie Sie JavaScript nutzen können, um Ihre Workflows zu verbessern.
Die JavaScript-Aktivität verstehen
Die JavaScript-Aktivität im Workflow Builder ermöglicht es Ihnen, personalisierten JavaScript-Code direkt in Ihren Workflows auszuführen. Diese Funktion ermöglicht fortschrittliche Datenmanipulation, die Einrichtung von bedingter Logik und die Integration mit anderen Systemen, abhängig von der Konfiguration Ihres Workflows. Der JavaScript-Code läuft in einer sicheren Umgebung, die von Goja unterstützt wird, einer reinen Go-Implementierung von ECMAScript 5.1, die Stabilität und Sicherheit gewährleistet.
Verfügbare Funktionen und Objekte
In der JavaScript-Aktivität haben Sie Zugriff auf eine begrenzte Anzahl von integrierten JavaScript-Objekten und eine personalisierte log
-Funktion zum Protokollieren von Nachrichten. Zu den verfügbaren Objekten gehören:
Math
: Stellt mathematische Funktionen und Konstanten bereit (z. B.Math.random()
,Math.floor()
).JSON
: Methoden zum Parsen und Stringifizieren von JSON-Daten (z. B.JSON.parse()
,JSON.stringify()
).Date
: Funktionen zur Verarbeitung von Daten und Zeiten (z. B.new Date()
,Date.now()
).Array
: Das globale Array-Objekt zur Array-Manipulation.String
: Das globale String-Objekt zur Textmanipulation.Number
: Das globale Number-Objekt für numerische Operationen.Boolean
: Das globale Boolean-Objekt für true/false-Werte.Error
: Das globale Fehlerobjekt für die Fehlerbehandlung.log
: Eine personalisierte Funktion, um Nachrichten in den Protokollen der Aktivität auszugeben.
Beispiel für die Verwendung der log
Funktion:
JavaScript
log("This message will appear in the activity logs.");log("The value of a variable is: " + someVariable);
Zugriff auf den Workflow-Kontext
Ihr JavaScript-Code kann auf den gesamten Workflow-Kontext über eine globale Variable namens context
zugreifen. Dieses Objekt enthält den aktuellen Status und die Daten Ihres Workflows, sodass Sie Werte lesen und ändern können, sofern dies durch die Konfiguration Ihres Workflows erlaubt ist.
Hier ist ein Beispiel für eine typische 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" } }}
Das context
-Objekt enthält viele Daten, darunter payload
, flow:batch:0
und step:print:0
.
Beispiele für den Zugriff auf Werte aus dem 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);
Wichtiger Hinweis: Die Struktur des context
-Objekts variiert je nach Ihrem spezifischen Workflow. Konsultieren Sie immer die Eingaben Ihres Workflows und die Ausgaben der vorherigen Aktivitäten, um genaue Datenpfade zu erhalten.
Deinen JavaScript-Code schreiben
Ihr JavaScript-Code wird automatisch in einen sofort aufgerufenen Funktionsausdruck (IIFE) eingebettet, um eine sichere Ausführung zu gewährleisten. Sie müssen diesen Wrapper nicht in Ihren Code aufnehmen; schreiben Sie einfach die JavaScript-Anweisungen, die Sie ausführen möchten.
Ergebnisse werden zurückgegeben
Die JavaScript-Aktivität kann Werte zurückgeben, die im Output der Aktivität gespeichert werden. Das Format des zurückgegebenen Werts hängt von seinem Typ ab:
Rückgabe eines JavaScript-Objekts: Die Eigenschaften werden als Schlüssel-Wert-Paare in
JSCodeOutput
abgebildet.Rückgabe anderer Werte: Werte wie Zeichenfolgen, Zahlen, Booleans oder Arrays werden unter einem Standard-Schlüssel namens
"result"
in derJSCodeOutput
zusammengefasst.
Beispiel: Rückgabe eines Objekts
JavaScript
var myResult = { status: "success", message: "Order processed", orderId: context.payload.order.id};return myResult;
Dadurch wird eine Ausgabe erzeugt, die ähnlich ist wie:
JSON
{ "flow:js-script:1": { "message": "Order processed", "orderId": "048aa79f-7d6e-45bd-930a-81be07be0f19", "status": "success" }, "payload": {...}}
Beispiel: Rückgabe eines Nicht-Objektwerts (String)
JavaScript
return "Processing complete for order " + context.payload.order.customerOrderId;
Das Ergebnis sieht dann so aus:
JSON
{ "result": "Processing complete for order test-order-ref"}
Beispiel: Rückgabe eines Arrays
JavaScript
var attributes = context.payload.part.productDetails.attributes;var attributeNames = Object.keys(attributes);return attributeNames;
Das Ergebnis sieht dann so aus:
JSON
{ "result": ["CoatingType", "ColorType", "Orientation", "PaperFormat", "PaperType", "ProductStatus", "ProtectionType", "ShapeEdgeType", "SpotFinishingType", "State", "Variable"]}
Debugging und Protokollierung
Die log()
-Funktion ist für das Debugging innerhalb der JavaScript-Aktivität unerlässlich. Alle an log()
gesendeten Nachrichten werden im Abschnitt Protokolle der Aktivitätsausgabe angezeigt, sodass Sie den Ausführungsfluss verfolgen und Variablenwerte überprüfen können.
Empfohlene Vorgehensweisen
Konzentrieren Sie sich auf das Wesentliche: Verwenden Sie die JavaScript-Aktivität für bestimmte Datenumwandlungen oder bedingte Prüfungen. Komplexere Logik wird besser durch spezielle Workflow-Schritte oder externe Dienste gehandhabt.
Verwenden Sie
try...catch
: Fassen Sie Ihren Code intry...catch
-Blöcke, um unerwartete Fehler elegant zu behandeln und Workflow-Fehler zu vermeiden.Eingaben validieren: Überprüfen Sie immer, ob die Daten aus dem
Kontext
vorhanden sind und das erwartete Format haben, bevor Sie sie verwenden.Gründlich testen: Testen Sie Ihren JavaScript-Code mit verschiedenen Eingaben, um sicherzustellen, dass er sich in unterschiedlichen Szenarien korrekt verhält.
Wenn Sie diese Richtlinien befolgen, können Sie die JavaScript-Aktivität effektiv nutzen, um leistungsstarke personalisierte Logik und Flexibilität in Ihre Workflow-Builder-Workflows einzuführen.
📝 Nicht das, was Sie gesucht haben?
Helfen Sie uns, diesen Artikel zu verbessern. Senden Sie uns eine E-Mail an [email protected] – bitte geben Sie den Titel des Artikels an.