Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
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