00196840-01_IM_EDM_1.9_DE.pdf - 第49页
Installations anleitung SIPLACE Engin eering Data Manager ( EDM) Version 1.9 Ausgabe 0 2/2011 49 < transiti on name =" getTemplate List " curre ntState =" clientIdle " event =" pul lData "…
Installationsanleitung SIPLACE Engineering Data Manager (EDM) Version 1.9 Ausgabe 02/2011
48
Client Workflow-Konfiguration
). Dabei handelt es sich um eine Datei im XML-Format. Auf den Inhalt dieser Datei und den Bezug zur
Theorie will ich im Folgenden eingehen.
Am Anfang ist es zunächst notwendig, alle Zustände, Ereignisse und Transitionen zu deklarieren Dies ist
notwendig, damit die Workflowengine, die auf der Konfigurationsdatei arbeitet, den Automaten leichter
verifizieren kann.
Wir definieren zunächst den Startzustand:
<state name="clientIdle" isStartState="true" />
In den nun folgenden Zustandsdeklarationen darf nun isStartState=“true“ nicht mehr auftauchen, da ein
Automat ja genau einen Startzustand besitzt.
Ein „normaler“ Zustand wird deklariert:
<state name="selectObjects" />
Will man einen Zustand als Endzustand markieren:
<state name="done" isEndState="true" />
Fehlerzustände werden wie folgt gekennzeichnet:
<state name="timedOut" isErrorState="true" />
Ein Zustand kann gleichzeitig sowohl Fehler- als auch Endzustand sein:
<state name="failed" isErrorState="true" isEndState="true" />
Die Namen der Zustände müssen eindeutig sein. Als nächstes folgt in der Konfigurationsdatei die
Deklaration der Ereignisse, auf die die Workflowengine reagieren kann:
<event name="pullData" />
Die Namen der Ereignisse müssen ebenfalls eindeutig sein, da diese wie die Zustände bei der Definition
der Transitionen referenziert werden.
Die Transitionen stellen das Herzstück der Workflowdefinition dar. Sie stellen eine Art „Legostein“ dar, aus
denen ein Kundenworkflow zusammengesetzt werden kann.
Sie bestimmen die Reaktion auf eingehende Ereignisse. Jede Transition kann dabei durch ihre Auslösung
eine beliebige Anzahl so genannter Actions ausführen. Um ein gewisses Maß an Kontrollfluss zu
ermöglichen kann eine Transition mit einer speziellen Action versehen werden, die einen Rückgabewert
besitzt. Solche Actions heißen Controller. Dann wird aus Ausgangszustand, Ereignis und Ergebnis der
Action der Folgezustand ermittelt. Am Beispiel sieht das so aus:
Installationsanleitung SIPLACE Engineering Data Manager (EDM) Version 1.9 Ausgabe 02/2011
49
<transition name="getTemplateList" currentState="clientIdle" event="pullData">
<newState name="waitTemplateList">
<action
class="Siemens.SiplacePro.EDM.DataExchange.Actions.AcquireTempl
ateListAction,DataExchange" />
<action
class="Siemens.SiplacePro.EDM.DataExchange.Actions.SendRequestA
ction,DataExchange" />
</newState>
</transition>
Abbildung 12 Beispiel einer einfachen Transition
Diese Transition geht vom Zustand clientIdle in den Zustand waitTemplateList über, wenn das Ereignis
pullData ausgelöst wird. Beim Übergang werden zwei Aktionen ausgeführt, die jeweils in der bereits aus
der Applikationskonfiguration bekannten Notation für Klassen angegeben werden. Die Aktionen werden in
der Reihenfolge ihres Auftretens in der Datei ausgeführt.
<transition name="selectTemplate" currentState="waitTemplateList"
event="templateList"
class="Siemens.SiplacePro.EDM.DataExchange.Actions.AskForTemplateAction,D
ataExchange">
<newState name="waitTemplate" value="OK">
<action
class="Siemens.SiplacePro.EDM.DataExchange.Actions.AcquireTempl
ateAction,DataExchange" />
<action
class="Siemens.SiplacePro.EDM.DataExchange.Actions.SendRequestA
ction,DataExchange" />
</newState>
<newState name="canceled" value="Cancel" />
</transition>
Abbildung 13 Beispiel einer bedingten Transition
Diese Transition führt den Zustandsübergang unter Berücksichtigung eines Controllers aus. Diese
spezielle Aktion wird über das Attribut „class“ in der Notation für Klassen angegeben. In diesem Fall
existiert nicht nur wie im ersten Beispiel in Abbildung 12 ein „newState“-Tag, sondern für jedes mögliche
Ergebnis des Controllers eines. Um dies handhaben zu können, wird das „newState“-Tag um ein Attribut
„value“ erweitert. Ein Controller liefert immer einen Zeichenkettenwert zurück, so dass das Ergebnis auf
jeden Fall in der XML-Datei darstellbar ist.
Installationsanleitung SIPLACE Engineering Data Manager (EDM) Version 1.9 Ausgabe 02/2011
50
Um Anwendungsfälle, wie das Auftreten von für alle Zustände gültigen Fehlerzustände – wie Sie in EDM
durch die asynchrone Kommunikation in Form von Timeouts auftreten – für den Ersteller der
Workflowkonfiguration leichter handhaben zu können, besteht die Möglichkeit Transitionen wie in
Abbildung 14 zu definieren:
<transition name="timeoutDefault" currentState="all" event="timeOut">
<newState name="timedOut" />
</transition>
Abbildung 14 Defaulttransition
Durch die Angabe von „all“ als Ausgangszustand wird diese Transition für alle Zustände übernommen.
Obige Transition definiert ergo ein allgemeines Timeoutverhalten. Eine Defaulttransition wird nur
ausgeführt, wenn für das jeweilige Ereignis keine spezifische Transition definiert ist. Hiermit besteht implizit
die Möglichkeit mehrere Transition für ein Zustands/Ereignispaar zu definieren. Es ist jedoch nicht möglich,
mehrere Defaulttransitionen für ein Ereignis zu beschreiben.