18.01.2014 Aufrufe

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

38 Deklarative UML metamodellbasierte Workflowmodellierung<br />

den Klassen vom Metamodell in Abbildung 3.2 bereitgestellt werden. Die Aktivitäten werden mit dem<br />

Zustand waiting initialisiert. Daraufhin hat der Nutzer die Möglichkeit, die Aktivität mit dem Aufruf start()<br />

zu starten oder mit skip() zu überspringen. Befindet sich das Aktivitätsobjekt im Zustand running kann es<br />

mit finish() regulär beendet werden. Mit dem Aufruf fail() gibt der Nutzer an, dass während der Ausführung<br />

ein Fehler passiert ist. Nur speziellen Cancel Aktivitäten ist es möglich, sie während der Ausführung<br />

abzubrechen. Ganze Prozesse können mit cancel() abgebrochen werden, wenn es sich um Prozesse vom Typ<br />

CancelProcess handelt.<br />

Gr<strong>und</strong>sätzlich sind Aktivitätsobjekte der Klassen Activity, Cancel <strong>und</strong> der Unterklassen von Decision nur<br />

einmal ausführbar. Die Operationen, die von der Klasse Activity bereitgestellt werden, erlauben kein Zurücksetzen<br />

des Zustandes, was ein wiederholtes Ausführen ermöglichen würde. Die dafür vorgesehene Operation<br />

nextIteration() ist der Klasse IterationGroup zugeordnet. Wenn sich die Aktivität im Zustand done, skipped<br />

oder canceled befindet <strong>und</strong> einer Iterationsgruppe zugeordnet ist, ist darüber eine wiederholte Ausführung<br />

möglich. Diese Operation nextIteration() ist jedoch weiteren Ausführungsbedingungen unterworfen, die in<br />

Abschnitt 3.2.3.1 näher erläutert werden. Es sind hier nur geordnete Iterationsdurchläufe möglich. D.h. es ist<br />

erst dann ein neuer Iterationsdurchlauf erlaubt, wenn bei allen in der Gruppe enthaltenen Aktivitätsobjekten<br />

die Transition in den Zustand waiting nach den State Charts von Abbildung 3.3 möglich ist.<br />

Aktivitäten, die inhärent ohne explizites Zurücksetzen der Aktivität mehrfach ausgeführt werden können,<br />

sind Iteration-Aktivitäten. Deren Verhalten ist im Zustandsdiagramm von Abbildung 3.3(b) verdeutlicht.<br />

Mit den Operationsaufrufen start() <strong>und</strong> finish() können beliebig viele Iterationen durchgeführt werden. Ein<br />

Iterationszyklus ist dafür im Sequenzdiagramm von Abbildung 4.6(b) angegeben. Bei einem Iterationszyklus<br />

kann statt finish() auch fail() aufgerufen werden. Die Ausführungssemantik ist damit folgende: Mit dem<br />

fail()-Aufruf schlägt nicht die Iterationsaktivität an sich fehl, sondern der aktuell ausgeführte Zyklus. Somit<br />

kann z.B. wenn ein Zyklus fehlerhaft beendet wurde, ein weiterer ausgeführt werden, der dann die komplette<br />

Aktivität zum Erfolg führt.<br />

Iterationen werden schließlich explizit über die Methode finish() beendet, wenn sich das Objekt im Zustand<br />

waiting befindet. Der Aufruf cancel() ist nur indirekt über die Klasse CancelProcess möglich. Mit skip()<br />

können Iterationen nur übersprungen werden, wenn noch kein Iterationszyklus durchlaufen wurde, was durch<br />

den zugeordneten OCL-Guard [self.iteration->isEmpty()] ausgedrückt wird. Falls schon ein Iterationszyklus<br />

initiiert wurde, ist ein Aktivitätsobjekt, das diesen repräsentiert, über die Assoziation iteration verb<strong>und</strong>en.<br />

Bereits beendete, übersprungene oder abgebrochene Iterationen können nach dem Zustandsdiagramm von<br />

Abbildung 3.3(b) genauso wie normale Aktivitäten über die Methode nextIteration() wieder zurückgesetzt<br />

werden, wenn sie sich in einer Iterationsgruppe befinden.<br />

3.2.3 OCL-Zusicherungen<br />

Im Gegensatz zu allen anderen bekannten Metamodellansätzen zur Workflowmodellierung (s. Abschnitt<br />

2.5.3) wurde in DMWM umfangreich <strong>und</strong> zu verschiedenen Zwecken von OCL-Constraints Gebrauch<br />

gemacht. Insbesondere wird OCL zur Definition der operationalen Semantik der neu entwickelten Workflowsprache<br />

genutzt, um eine weitgehend plattformunabhängige, deklarative Spezifikation zu erreichen.<br />

Zunächst wird zur Definition der operationalen Semantik in Abschnitt 3.2.3.1 beschrieben, wie die in<br />

Abbildung 3.3 gezeigten Zustandsautomaten anhand von OCL-Vor- <strong>und</strong> Nachbedingungen ausgedrückt<br />

werden. Daraufhin werden in Abschnitt 3.2.3.2 die Gr<strong>und</strong>lagen <strong>und</strong> OCL-Hilfsfunktionen aus dem Metamodell<br />

erklärt, die benötigt werden, um die temporalen Beziehungen mit OCL zu spezifizieren. Hierzu<br />

gehört u.a. die Berechnung von transitiven Hüllen im Zusammenhang mit reflexiven Assoziationen aus<br />

dem UML-Klassendiagramm. Schließlich werden in Abschnitt 3.2.3.3 noch exemplarisch temporale Bezie-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!