Sie können dieses Tutorial auch auf Englisch und Französisch aufrufen.

 

Dies ist das letzte Tutorial zur Flexibilität in YAWL. Im Zentrum stehen hier Exlets und deren Definition im YAWL-Editor. Die nachfolgende Zip-Datei enthält die notwendigen Dateien für den Start und das Ende des Tutorials.

 

Hallo und willkommen zu einem weiteren Tutorial zur Flexibilität in YAWL. Wir werden jetzt über Exlets sprechen. Sie sind möglicherweise mit Konzepten zur Ausnahmebehandlung in Programmiersprachen vertraut, z. B. in Java: catch and throw usw. In YAWL sind Exlets der Mechanismus, der in Kombination mit Worklets die Behandlung von Ausnahmen übernimmt. Wir werden mit einem Beispiel für Tutorial 17 fortfahren, in dem wir nicht richtig reagiert haben, wenn der Manager die Anfrage abgelehnt hat. Wir möchten den Antragsteller über die Ablehnung informieren und den Fall dann vorzeitig beenden. Was wir also in YAWL tun müssen, müssen wir zuerst ein Worklet definieren, das den Anforderer informiert, und dann eine Post-Constraint-Regel definieren, um ein Exlet aufzurufen. Und wir werden ein Exlet schreiben, dass zuerst den Fall aussetzt, dann die Ausgleichsaktion zum Aufrufen des Worklets ausführt und dann den Fall beendet. Was müssen wir also tun? Wir müssen ein Worklet definieren, das als Ausgleichsmaßnahme verwendet wird, um den Anforderer darüber zu informieren, dass die Anforderung abgelehnt wurde. Und dann müssen wir den Fall genau dort stoppen. Beginnen wir also zunächst mit der Definition des Worklets. Ein Worklet ist eine normale YAWL-Spezifikation. Deshalb habe ich den YAWL-Editor hier mit einer leeren Spezifikation geöffnet. Als erstes kopiere ich die Datentypdefinitionen der übergeordneten Spezifikation in die Spezifikation, um dieselben komplexen Typen verwenden zu können, die wir definiert haben. Also öffne ich die Datentypdefinitionen hier und kopiere sie einfach und füge sie hier ein. Und Sie können dies aus der übergeordneten Spezifikation im Zusatzmaterial extrahieren. Dann ist das nächste: Ich möchte den Anforderer in Form über die Ablehnung informieren, und jetzt muss ich die Variablen definieren. Und was ich brauche, ist die Kaufanfrage und auch die Tatsache, dass sie nicht genehmigt wurde. Und ich werde hier zwei Variablen definieren: zuerst auf der Nettoebene. Also gehe ich hier zu Datenvariablen und definiere die variable Kaufanforderung vom Typ Bestellanforderungstyp. Und dies hat keinen Bereich lokal, aber es hat jetzt Bereich Eingabe / Ausgabe. Außerdem werde ich eine genehmigte Variable definieren, eine boolesche Variable. und wieder die Scope-Ein- / Ausgabe. Dann kann ich diese Variablen hier an unsere Aufgabe weitergeben und sie als Eingabevariablen weitergeben, da sie nur zur Information da sind. Sie müssen also nicht bearbeitet werden. Und dann werde ich dies als Spezifikation speichern und dies verwenden. Ich werde dieses eine Worklet informieren. Ich sollte dies auch einem Antragsteller anbieten. Wo ist meine Beschaffung? Okay! Das nächste ist: Ich muss es als Worklet in die YAWL- Engine hochladen. Das ist also diese Schaltfläche hier: Workflow... Worklet erfolgreich hinzugefügt. Als nächstes werde ich dies schließen und jetzt zur übergeordneten Spezifikation gehen. Und ich werde hier einfach zur Unter-Workflow-Bestellung gehen und den Kauf genehmigen. Und jetzt definieren Sie eine Regel und die Regel, die ich definieren werde, ist eine Verletzung der Arbeitselemente nach der Einschränkung für die Genehmigung des Kaufs und der genehmigten... der Wert der genehmigten muss falsch sein. Und wenn dieser Wert falsch ist, führen wir eine Aktion aus und rufen hier den Editor auf. Der erste Schritt besteht also darin, das Arbeitselement hier auszusetzen. Der nächste Schritt besteht darin, eine Ausgleichsaktion durchzuführen, und jetzt werde ich gefragt, welches der Worklets ich verwenden möchte. Und dies ist das Inform-Worklet. Und dann möchte ich den Fall nicht fortsetzen, sondern nur den Fall beenden. Und zu guter Letzt muss ich all diese miteinander verbinden. Dann gibt es hier eine Ausrichtungsschaltfläche. Und dann ist das erledigt. Also haben wir jetzt ein Exlet definiert. Oh, es gibt immer noch ein Problem: Ungültige Aktion für Ausnahme nach Artikeleinschränkung. Vielleicht müssen wir den Fall hier aussetzen. Der Zielfall bleibt im angehaltenen Zustand. Jetzt ist es okay. Wir müssen also die richtige Kombination aus Federung und Entfernen von Dingen finden. In Ordnung ausrichten und dann hinzufügen und schließen. Jetzt wurde die Regel erfolgreich hinzugefügt und wir haben dieses Exlet und jetzt müssen wir sehen, ob dies wie erwartet funktioniert. Das ist also unser Hauptworkflow. Wir können also einfach einen neuen Fall starten: Fall-ID 6. Und dann sehen, was passiert. Okay, der erste ist "Kaufanfrage vorbereiten" und wird zwei Robbie Rays zugewiesen. Das ist also der erste. Also werden wir uns mit diesem Benutzer anmelden. Abgeschlossen! Als nächstes haben wir "Kauf genehmigen". Dies wird unserem Benutzer mam zugewiesen und wir akzeptieren und starten es. Und jetzt wollen wir sehen, was passiert, wenn wir nicht zustimmen. Und jetzt können wir sehen, dass "Bestellung vorbereiten" ausgesetzt ist und "Über Ablehnung informieren" ein Arbeitselement ist, das Robbie Rays zugewiesen ist. Wir können also sehen, dass dies hier nicht genehmigt wurde. Wir vervollständigen dies. Jetzt schauen wir uns unseren Arbeitsvorrat an. Es ist leer und die Fallliste ist ebenfalls leer. Also funktioniert alles wie erwartet. Sie haben sich vielleicht gefragt, wie wir den richtigen Benutzer identifiziert haben, der die Anfrage ursprünglich ausgeführt hat, als wir den Antragsteller über die Ablehnung informiert haben? Die Antwort ist, dass wir es nicht getan haben. Das Problem ist, dass das vertraute Muster, das in YAWL integriert ist, nur innerhalb einer Spezifikation verwendet werden kann. Und da das Worklet, das den Anforderer informiert, eine andere Spezifikation ist, können wir dies hier nicht verwenden. Die Lösung hierfür besteht darin, den Vervollständiger der Aufgabe in einer Variablen zu speichern, diese Variable dann als Parameter an das Worklet zu übergeben und diese dann im Worklet dem Wert dieser Variablen zuzuweisen. Dies kann in YAWL erfolgen, erfordert jedoch die Verwendung von Codelets. Und wir werden Codelets in einem späteren Tutorial behandeln. Damit sind unsere Tutorials zur Flexibilität in YAWL abgeschlossen. Danke fürs Zuschauen!