Workflow Befehle¶
Workflows werden über eine XML-Struktur definiert.
Es stehen verschiedene Befehle - die im Anschluß beschrieben werden - zur Arbeit mit Containern und Workflows bereit. Folgende Optionen können bei mehreren dieser Befehle verwendet werden:
Mit --init
werden Verzeichnisse, die nicht existieren, angelegt. Wird das Argument
nicht angegeben und ein Verzeichnis existiert nicht, wird eine Exception geworfen.
Das --debug
-Argument sorgt für die Ausgabe von Zusatzinformationen.
Container erstellen¶
Container können über den Befehl alvine-platform workflow:factory
erstellt werden.
In dem folgenden Beispiel werden drei Container --count=3
für den Workflow publish-item.xml
über
die Factory-Klasse
erstellt. Allen erstellten Containern werden die Argumente mykey1=1
und mykey2=Test
als Eigenschaft zugeweisen.
alvine-platform workflow:factory \
--workflow publish-item.xml \
--class \\Alvine\\Application\\Workflow\\Factory \
--argument mykey1=1 --argument "mykey2=Test" \
--count=3
Hinweis
Der Backslash ist bei vielen Shells ein Sonderzeichen zum Escapen von Sonderzeichen. Aus diesem Grund müssen PHP-Klassennamen in diesen Shells mit 2 Backslashes geschrieben werden.
Die Container werden in diesem Beispiel nach /var/alvine-platform/workflow/queue/item-boarding
serialisiert.
Information über Container¶
Informationen zu einem oder mehreren Container kann man mit dem Befehl alvine-platform workflow:info
auslesen. Als Parameter --path
muss entweder eine Container-Datei oder ein Verzeichnis mit Containern
angegeben werden.
Wird ein Verzeichnis angegeben, so durchsucht der Befehl rekursive alle Unterverzeichnisse.
alvine-platform workflow:info \
--path /var/alvine-platform/workflow/queue/item-boarding
Alternativ kann über --container-id
eine ID angegeben werden. In diesem Fall muss zusätzlich der
verwendete Workflow --workflow
angegeben werden.
alvine-platform workflow:info \
--workflow publish-item.xml \
--container-id 1425
Statusänderung von Containern¶
Container können auch einzeln über die ID von einem Status zum nächsten
überführt werden. Dazu gibt es den Befehl alvine-platform workflow:transfer
.
Der Befehl erwartet als Parameter den
Workflow --workflow
und mindestens eine ID --container-id
eines Containers. Der Container wird anhand der ID gesucht und
mit der angegebenen Transition --transition
in den neuen Status überführt.
alvine-platform workflow:transfer \
--workflow publish-item.xml \
--container-id 1425 \
--transition transfer2 \
--reset-error
Mit der Option --reset-error
wird versucht Container, die sich im Fehlerzustand befinden,
zu reaktivieren und zu transferieren. Bei korrupten Datenstrukturen im Container schlägt das immer fehl.
Statusänderung aller Container eines Status¶
Der Übergang aller Containers eines Status --from
mit der angegebenen Transition --transition
in den nächsten Status
erfolgt mittels dem Befehl alvine-platform workflow:run
. Als Argument muss zusätzlich der gewünschte
Workflow --workflow
angegeben werden.
er Ausgangsstatus --from
angegeben werden.
alvine-platform workflow:run \
--workflow publish-item.xml \
--transition transfer2 \
--from created