Dateiformat für Workflows
Workflowdefinitionen können als XMl Dateien definiert werden, damit sie extern erstellt und dann in eine Shop Installation eingespielt werden können. Alternativ können Workflows natürlich auch per SQL Script in eine neue Installation eingespielt werden, die die notwendigen Datensätze in den Tabellen der Shop Datenbank erzeugen.
Ein Workflow kann so aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<workflow name="SendInBlueRegistrierung" trigger="CustomerNew" start="#2">
<step id="#2" name="1" action="Centauri.Shop.Workflows.Process.Get">
<data>
<parameter>name,link,title,appellation,firstname,surenme,company,company_department,company_memo,street,zip,city,country,sup_company,sup_company_department,sup_company_memo,sup_street,sup_zip,sup_city,sup_country,tel,email,vatid</parameter>
<xpath>customer/surname,emailconfirm/link,customer/title,customer/appellation,customer/firstname,customer/surenme,customer/company,customer/company_department,customer/company_memo,customer/street,customer/zip,customer/city,customer/country,customer/sup_company,customer/sup_company_department,customer/sup_company_memo,customer/sup_street,customer/sup_zip,customer/sup_city,customer/sup_country,customer/tel,customer/email,customer/vatid</xpath>
</data>
<transition destination="#3" success="yes" />
</step>
<step id="#3" name="2" action="Centauri.Shop.Workflows.SendInBlue.Send" final="yes">
<data>
<parameter>subject,link,title,appellation,firstname,surenme,company,company_department,company_memo,street,zip,city,country,sup_company,sup_company_department,sup_company_memo,sup_street,sup_zip,sup_city,sup_country,tel,email,vatid</parameter>
<subject>Registrierung</subject>
<template>0</template>
</data>
</step>
<mapping origin="*" />
</workflow>
In der Datei muss ein workflow Knoten vorhanden sein. Der Knoten benötigt folgende Attribute
Attribut | Inhalt |
|---|---|
name | Der Name des Workflows im Zielsystem. Wird der Workflow importiert und ist dieser Name bereits vorhanden, wird dieser überschrieben. |
trigger | Definiert mit einer Konstante den Auslöser des Workflows. Die möglichen Auslöser sind unten definiert. |
start | Dieses Attribut verweist auf den Id des ersten Schritts. |
Folgende Konstanten können als Auslöer eines Workflows verwendet werden:
Konstante | Bedeutung |
|---|---|
ORDER | Ein neuer Auftrag im Online-Shop wurde erstellt. |
CANCELATION | Ein Auftrag im Online-Shop wurde storniert. |
NONCATALOG | Eine neue Freitextanfrage ist erstellt worden. |
OFFERREQUEST | Eine neue Angebotsanfrage wurde erstellt. |
CUSTOMERNEW | Ein neuer Kunde wurde registriert. |
CUSTOMERUPDATE | Die Daten des Kunden wurden im Kundenkonto aktualisiert. |
INVOICEUPDATE | Die Rechnungsadresse des Kunden wurde aktualisiert. |
DELIVERYUPDATE | Die Lieferadresse des Kunden wurde aktualisiert. |
COWORKERNEW | Ein neuer Mitarbeiter wurde im Kundenkonto angelegt. |
COWORKERUPDATE | Die Daten eines Mitarbeiters wurden im Kundenkonto aktualisiert. |
COWORKERDELETE | Ein Mitarbeiter wurde im Kundenkonto gelöscht. |
MESSAGE | Ein Kunde hat eine Nachricht erstellt. |
NEWSLETTERNEW | Ein neuer Newsletterempfänger wurde erstellt. |
RECOMMEND | Eine neue Weiterempfehlung wurde angelegt. |
OFFER | Ein Angebot wurde zu einer Angebotsanfrage erstellt. |
TIMESTAMP | Der Workflow wird zeitgesteuert aufgerufen. |
SCRIPT | Der Workflow wird durch einen anderen Workflow aufgerufen. |
INTERNAL | Der Workflow wird hardcoded aufgerufen. |
Unterhalb des Knotens können beliebig viele step Knoten angeordnet werden, die die einzelnen Schritte des Workflows definieren. Der step Konten erlaubt folgende Attribute
Attribut | Inhalt |
|---|---|
id | Interne Bezeichnung des Schrittes - normalerweise einfach durchnumeriert. Die Angabe ist verpflichtend. Über diese Id werden Referenzen in der Workflow Definition hergestellt und z.B. der Start- und der nächste Knoten referenziert. Es gibt keine Formdefinition, d.h. es können einfache Zahlen, Zeichen oder die oben sichtbare #nn Schreibweise verwendet werden. |
name | Definiert eine sichtbare Beschreibung des Schritts und sollte so sprechend gewählt werden, das bei späteren Aufzeichnungen damit der Sinn dieses Schritts identifiziert werden kann. |
action | Definiert die Aktion des Arbeitsschritts. Die Angabe ist verpflichtend. Der Inhalt muss einer NET Klasse entsprechen, die von der Workflow Engine instanziert werden kann. |
final | Dieses Attribut ist optional und definiert, ob der entsprechende Schritt ein Endpunkt im Workflow ist. Bei einem Knoten mit dem Attribut final auf den Wert yes stoppt die Workflow Engine die Ausführung.. |
Innerhalb des step Knotens kann ein data Knoten mit Parametern existieren, die die Aktion des Schritts steuern. Die erlaubten Unterknoten hängen von der Aktion ab. Beim Importieren wird nicht validiert, ob die Parameter überhaupt von der Workflow Aktion benutzt werden.
Innerhalb des step Knotens können außerdem eine beliebige Anzahl an transition Knoten existieren. Mit diesen Knoten wird der Übergang auf den nächsten Schritt definiert. Ein transition Knoten kann folgende Attribute enthalten
Attribut | Inhalt |
|---|---|
destionation | Das Attribut definiert den Id des Schritts, der als nächstes ausgeführt werden soll. Die Angabe ist verpflichtend. |
success | Das Attribut definiert, ob der Übergang nach einer erfolgreichen oder eine fehlgeschlagenen Aktion ausgeführt werden soll. Ist das Attrbut success auf den Wert yes gestellt, wird der Übergang nur bei erfolgreicher Ausführung gefolgt. |
Unterhalb des workflow Knotens kann eine beliebige Anzahl an mapping Knoten vorkommen, die Nebenbedingungen definiert, ob der Trigger für den Workflow ausgelöst werden soll. Mögliche Attribute sind
Attribut | Inhalt |
|---|---|
origin | Das Attribut kann entweder * oder ein Bezeichner für einen Auftragsursprung sein. Die Angabe ist verpflichtend. Der Trigger wird nur ausgeführt, wenn im Shop der entsprechende Auftragsursprung aktiv ist. Auftragsursprünge werden z.B. durch Definition in der web.config, durch EDI Strecken, durch Multishops, etc. festgelegt werden. Ist das Attribut auf * gesetzt, gilt der Trigger immer. |
customergroup | Das Attribut definiert eine Kundengruppe, die aktiv sein muss, um den Trigger auszulösen. Das Attribut definiert den Namen der Kundengruppe. Ist eine entsprechend benannte Kundengruppe nicht vorhanden, wird der Trigger und damit der Workflow nicht ausgelöst. |