18.01.2014 Aufrufe

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

44 Deklarative UML metamodellbasierte Workflowmodellierung<br />

✞<br />

1 context Activity inv seqActivity:<br />

2 let activities:Set(Activity) = pred.oclAsType(Activity)−>select(a|a.isDefined)−>asSet in<br />

3 let ops:Set(Group) = pred.oclAsType(Group)−>select(o | o.isDefined)−>asSet in<br />

4 (self.state = #running or self.state = #done) implies<br />

5 activities−>union(ops.activity)−>forAll(a | a.state=#done or a.state=#skipped)<br />

6<br />

7 context XorDecision inv doneSelectedXor:<br />

8 self.state=#done implies self.guard[decision]−>select(g|g.selected)−>size = 1<br />

✝<br />

Listing 3.7: Definition der Sequenz (WCP1) <strong>und</strong> Exclusive Choice (WCP4)<br />

☎<br />

✆<br />

Objekt and2 das Synchonization Pattern ausgedrückt.<br />

Die deklarative OCL-Invariante zur Klasse AndOperator besagt, dass alle Aktivitätsobjekte bzw. Gruppen<br />

von Aktivitäten, die mit pred verb<strong>und</strong>en sind, abgearbeitet sein müssen, bevor die succ-Aktivitäten starten<br />

können. Die OCL-Invariante wird hier nicht explizit angegeben. Zu dieser Invariante ist zu sagen, dass<br />

FlowOperator-Objekte nicht über die seq-Beziehung verb<strong>und</strong>en sein dürfen. Diese Eigenschaft ist als<br />

So<strong>und</strong>ness-Eigenschaft in einer OCL-Invariante festgelegt, analog zu denen, die in Abschnitt 3.2.6 näher<br />

vorgestellt werden.<br />

Die Workflow Patterns 4&5 werden in Abbildung 3.4(c) näher betrachtet. Für den choice-Operator (WCP4)<br />

wird eine XorDecision-Entscheidungsaktivität gewählt. Während der Ausführung dieser Aktivität muss<br />

der Nutzer genau einen Pfad auswählen, der danach auszuführen ist. Die Auswahl findet über die select()-Operation<br />

der zugehörigen Guard-Objekte (s. Abbildung 3.2) zur Runtime statt. Dass genau ein<br />

Pfad auszuwählen ist, wird in der OCL-Invariante doneSelectedXor in Listing 3.7 spezifiziert. Die nicht<br />

ausgewählten Aktivitäten werden geskippt. Dieses Verhalten betrifft jedoch die imperative Spezifikation der<br />

Prozessausführung, welche in Kapitel 4 näher betrachtet wird.<br />

Der merge-Operator (WCP5) wird mit dem MergeOperator-Objekt in Abbildung 3.4(c) ausgedrückt. Die<br />

Prozesspfade werden dort zusammengeführt. Die zugeordnete OCL-Invariante besagt, dass eine Aktivität<br />

im Zustand done sein muss, damit die Folgeaktivitäten gestartet werden können.<br />

3.2.4.2 Advanced Branching and Synchronization Patterns<br />

In diesem Abschnitt werden mit Abbildung 3.5 weitergehende temporale Beziehungen behandelt, die etwas<br />

kompliziertere Verzweigungs- <strong>und</strong> Synchronisierungsbeziehungen darstellen.<br />

Ein prominentes Beispiel ist mit dem Multichoice <strong>und</strong> dem Structured Synchronizing Merge (WCP6&7) in<br />

Abbildung 3.5(a) ausgedrückt. Diese Patterns wurden bereits von EPKs mit OR-Konnektoren verwendet. Es<br />

kann vom Nutzer mit der OrDecision-Aktivität mehr als nur eine Folgeaktivitätskette ausgewählt werden.<br />

Die nicht ausgewählten Aktivitätsketten werden bis zum zugehörigen MergeOperator geskippt. WCP7<br />

besagt mit structured-Bezeichnung, dass zu jeder Entscheidung ein zugehöriger Merge vorhanden sein<br />

muss. Analog zur Invariante doneSelectedXor aus Listing 3.7 besagt die Invariante für OrDecision, dass<br />

mindestens eine Aktivität nach Beendigung der Aktivität ausgewählt sein muss.<br />

In Abbildung 3.5(b) ist dann das MultiMerge-Pattern (WCP8) modelliert. Dieses besagt, dass die Anzahl<br />

der vorher ausgeführten pred-Aktivitäten, die Iterationszyklen der in der Gruppe enthaltenen Aktivitäten<br />

bestimmt. Sind also Aktivität a1 <strong>und</strong> a3 ausgeführt worden, müssen genau zwei Iterationszyklen beim<br />

Multimerge-Objekt m1 durchgeführt werden. Somit müssten die Aktivitäten a4 <strong>und</strong> a5 zweimal ausgeführt<br />

werden.<br />

Das Structured Discriminator Pattern (WCP9) wird im DMWM-Metamodell mit der Klasse Discriminator

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!