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.
46 Deklarative UML metamodellbasierte Workflowmodellierung<br />
(a) WCP12: Multiple Instances without Synchronization<br />
(b) WCP13: Multiple Instances with a Priori Design-Time<br />
Knowledge<br />
(c) WCP14: Multiple Instances with a Priori Run-Time Knowledge<br />
(d) WCP15: Multiple Instances without a Priori Run-Time<br />
Knowledge<br />
Abbildung 3.6: Multiple Instance Patterns<br />
verwendet. Die operationale Semantik der Klasse ist wiefolgt: Zur Runtime müssen alle über die Assoziation<br />
instance verb<strong>und</strong>enen Ausführungsinstanzen im Zusand waiting sein, damit die übergeordnete MultiInstance-<br />
Aktivität ebenfalls in den Zustand waiting versetzt werden kann. Damit kann die Folgeaktivität a2 erst dann<br />
ausgeführt werden, wenn alle Instanzen von mi abgearbeitet, d.h. synchronisiert sind. Im Gegensatz zu<br />
WCP12 müssen die einzelnen Ausführungsinstanzen in WCP13 nicht synchronisiert werden. Somit kann in<br />
Abbildung 3.6(b) die Aktivität mi in den Ausführungszustand done versetzt werden, auch wenn noch einzelne<br />
Ausführungsinstanzen ausgeführt werden. Folglich darf die Folgeaktivität a2 ohne Synchronisierung der<br />
Ausführungsinstanzen gestartet werden.<br />
Die Klasse MIRuntime aus Abbildung 3.2 repräsentiert WCP14. Bei diesem Pattern wird erst zur Runtime<br />
beim Starten der Aktivität die Anzahl der zu erzeugenden Instanzen festgelegt. Hierfür wird die Operation<br />
enterNoOfInst() aus dem Metamodell genutzt. Die einzelnen Ausführungsinstanzen werden analog zum<br />
Verhalten von WCP12 synchronisiert. In Abbildung 3.6(c) ist somit die Aktivität a2 erst dann zu starten,<br />
wenn alle Instanzen von mi beendet wurden.<br />
Das letzte Multiinstanz-Pattern ist in Abbildung 3.6(d) mit der Klasse MIRuntimeWithAdd angewendet<br />
worden. Das Verhalten der Objekte dieser Klasse ist analog zum WCP14, wird jedoch um die Operation<br />
addInstance() erweitert. Dem Nutzer steht über diese Operation die Möglichkeit offen, neue Ausführungsinstanzen<br />
während der Ausführung hinzuzufügen. Erst nachdem die Multiinstanz-Aktivität beendet wurde,<br />
können auch keine weiteren Instanzen erzeugt werden.<br />
Die oben beschriebene Ausführungssemantiken der verschiedenen MultiInstance-Patterns sind anhand der<br />
unterschiedlichen OCL-Invarianten im Metamodell spezifiziert. Diese Invarianten werden hier jedoch nicht<br />
weiter angegeben.<br />
3.2.4.4 State-based Patterns<br />
Abbildung 3.7 zeigt die drei Patterns, die zu den State-based Patterns gehören. Das Deferred Choice-Pattern<br />
kann sehr einfach modelliert werden (s. Abbildung 3.7(a)). Die OCL-Invariante allWaitingXorOneRunningOthersSkipped<br />
zur Definition der Semantik ist in Listing 3.8 spezifiziert. Sie besagt, dass zum einen alle<br />
Aktivitäten aus der DeferredChoice-Gruppe im Zustand waiting sein dürfen. Wenn sich zum anderen eine<br />
Aktivität im Zustand running befindet, müssen alle anderen im Zustand skipped überführt worden sein.<br />
Das nächste Pattern ist Interleaved Parallel Routing, welches in Abbbildung 3.7(b) modelliert wurde. Es ist<br />
ähnlich einfach zu modellieren wie der vorher betrachtete Deferred Choice. Der Unterschied liegt darin,<br />
dass mit InterleavedParallelRouting ein anderes Gruppenobjekt verwendet wurde, in dem eine andere<br />
OCL-Invariante gilt. Damit gilt eine andere Semantik, die mit der Invariante atMostOneRunning in Listing<br />
3.8 spezifiziert wurde. Sie besagt, dass höchstens eine Aktivität der Gruppe zur gleichen Zeit ausgeführt