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

 

In diesem Tutorial geht es um Ripple Down Rules (RDR). RDR sind Binärbäume, die in YAWL verwendet werden, um die Behandlung von Sonderfällen in Workflows sukzessive zu erweitern. In Kombination mit Worklets und Exlets bieten sie Flexibilität für YAWL-Workflows. Die angehängte ZP-Datei enthält die Spezifikationen und Regelsätze, die für die Installation auf Ihrem eigenen System benötigt werden.

 

Hallo und willkommen zum zweiten Tutorial zum Thema Flexibilität! Dieses Mal werden wir über Ripple-Down-Regeln sprechen. Ripple-Down-Regeln sind Binärbäume mit einer Bedingung und einer Schlussfolgerung. Der Zustand wird anhand der Daten des Falls bewertet, und die Schlussfolgerung ist ein Worklet. Durch die Erstellung dieser Ripple-Down-Regeln können wir das Verhalten einer Workflow-Spezifikation dynamisch erweitern, indem wir sie einer Aufgabe in der Workflow-Spezifikation hinzufügen. Und dann kann dieser Binärbaum wachsen, wenn Sonderfälle eintreffen und sich mit Sonderverhalten befassen, an das wir bei der Erstellung der ursprünglichen Spezifikation nicht gedacht haben. Diese Ripple-Down-Regeln werden mit einem Zwei-Phasen-Mechanismus ausgewertet. In der ersten Phase gehen wir den Baum hinunter und jedes Mal, wenn eine Bedingung als wahr bewertet wird, gehen wir nach rechts und jedes Mal, wenn eine Bedingung als falsch bewertet wird, gehen wir nach links. Wir tun dies, bis wir ein Blatt im Baum erreichen. Wenn wir zu einem Blatt kommen, gehen wir zur zweiten Phase. Und dann gehen wir wieder den Baum hinauf und bewerten jede der Bedingungen. Die erste Bedingung, die wahr ist, bestimmt dann, welches der Worklets ausgeführt wird. Nun, das klingt sehr komplex und ich denke, wir müssen es genauer betrachten. Schauen wir uns also ein Beispiel an. Das Beispiel stammt also aus der YAWL-Distribution und handelt von der Organisation eines Konzerts. Bevor wir die Show im Konzert machen, überprüfen wir, wie viele Tickets verkauft wurden. Und wenn die Anzahl der verkauften Tickets unter einem bestimmten Schwellenwert liegt, werden wir eine bestimmte Aktion durchführen, um den Veranstaltungsort neu zu buchen. Diese Aktion wird durch einen so genannten Workitem-Pre-Constrained-Verstoß ausgelöst, und ich zeige Ihnen den damit verbundenen Ripple-Down-Regelbaum, der in der Spezifikation enthalten ist. Und so können Sie alle Spezifikationen wie gewohnt im Zusatzmaterial abrufen, aber Sie können sie auch in der YAWL-Distribution finden. Jeder Ripple-Down-Regelbaum hat also einen Knoten der obersten Ebene mit der Bedingung true und dem Standardverhalten. Das Standardverhalten, wie es in der YAWL-Spezifikation angegeben ist. Und wir nennen dies die Bedingung und dies die Schlussfolgerung. Jeder Knoten in diesem Baum - wenn es sich nicht um ein Blatt handelt - hat zwei Kinder. Das Kind auf der linken Seite ist dasjenige, das wir nehmen, wenn die Bedingung nicht bewertet wird, aber hier ist es eine konstante Wahrheit, so dass dies immer gegeben ist. Und auf der rechten Seite haben wir einen Knoten, der genommen wird, wenn die Bedingung als wahr bewertet wird. In diesem Fall gehen wir hier auf die rechte Seite und möchten eine Regel haben, die besagt, dass bei verkauften Tickets weniger als 75 Prozent der Tickets als Bedingung gelten. In diesem Fall wechseln wir zum mittleren Veranstaltungsort. Der Wechsel zu einem mittleren Veranstaltungsort ist also der Name eines Worklets, dass wir zuvor angegeben haben. Und dann sagen wir mal, wenn es noch schlimmer ist und wir weniger als 50 Prozent der Tickets verkauft haben, die wir in einen kleinen Veranstaltungsort umtauschen möchten. Wenn dies zutrifft und weniger als 75 Prozent und weniger als fünfzig Prozent der verkauften Tickets verfügbar sind, wechseln wir zu einem kleinen Veranstaltungsort. Und wenn es weniger als zwanzig Prozent sind, stornieren wir die Show. Dies ist also der rdr-Baum, der in der Spezifikation und im daran angehängten Regelsatz enthalten ist. Wir werden das später sehen, wenn wir dies im YAWL-Editor öffnen. Und dann können wir uns vorstellen, diese Blattknoten hier zu haben, leere Knoten, die an jeden der Knoten hier angehängt sind, und nur der Allgemeinheit halber möchte ich Ihnen zeigen, dass es auch möglich ist, den Baum um Knoten zu erweitern auf der linken Seite. So könnten wir zum Beispiel sagen, wenn die verkauften Tickets mehr als 95 Prozent betragen, informieren wir darüber, dass alles ausverkauft ist. So etwas wie eine Presseinformation. Okay! Ich meine, dies ist nicht in der YAWL-Spezifikation enthalten, aber wir werden das Verhalten des Algorithmus jetzt nur mit diesem vollständigen Baum erklären. So in der ersten Phase beginnen wir, dass wir hier und die erste Phase nach unten geht. Jedes Mal, wenn eine Bedingung als wahr bewertet wird, gehen wir zur rechten Seite. Und wenn es falsch ist, gehen wir zur linken Seite. Das ist also die Konstante, die wahr ist. Also gehen wir nach links nach rechts. Nehmen wir an, dass für den ersten Fall, für den wir Tickets verkauft haben, 40 Prozent und für den Fall, dass zwei verkaufte Tickets 98 Prozent betragen. Und dann sehen Sie für die beiden Fälle, wie dies funktioniert. Im ersten Fall ist das verkaufte Ticket also 40, also weniger als 75 Prozent. Es ist wahr, es sind weniger als 50 Prozent. Das ist wahr. Es ist nicht weniger als 20 Prozent. Schließlich landen wir hier in diesem Knoten. Und dann sind wir an einem Blatt und die zweite Phase beginnt. Jetzt gehen wir den Baum hinauf und die erste Bedingung, die wahr ist, bestimmt, welche Schlussfolgerung zu ziehen ist. Also dieser ist falsch, dieser ist wahr. Also wechseln wir zu einem kleinen Veranstaltungsort. Für den Fall, dass wir 40 Prozent haben, wechseln wir zu einem kleinen Veranstaltungsort. Nehmen wir nun Fall 2: 98 Prozent der verkauften Tickets. Das ist also wahr, wir gehen zur rechten Seite. Das ist falsch. Wir gehen zur linken Seite und das ist wahr. Also gehen wir zur rechten Seite. Also, was wir jetzt in diesem Blatt sind. Jetzt ist die zweite Phase. Wir gehen einen Schritt weiter und diese Bedingung ist wahr. So informieren wir über ausverkaufte Tickets. Nehmen wir einen dritten Fall und sagen wir, es sind 91 Prozent. Dieser ist wahr. Dieser ist falsch. Dieser ist falsch und so kommen wir hier zu diesem Knoten. Nun ist die zweite Phase mit 91 falsch. Das ist falsch. Das ist wahr. Also machen wir das Standardverhalten. Wir tun also, was in der Spezifikation selbst gesagt wird, und rufen hier kein Worklet auf. Wir können den Workflow zum Organisieren von Konzerten sehen, der der übergeordnete Prozess in der unteren Ebene ist, und Sie können ihn auch hier im YAWL-Editor öffnen sehen. Und wir haben gerade über den Ripple-Down-Regelbaum gesprochen. Wo können wir also den Ripple-Down-Regelbaum im YAWL-Editor sehen? Die Antwort ist, dass wir die Aufgabe " Anzeigen anzeigen " auswählen müssen und dann diese Anzahl von Symbolen für den Worklet-Service hier haben. Wenn wir auf dieses klicken, um den Regelsatz für die aktuelle Spezifikation anzuzeigen, erhalten wir den Ripple-Down-Regelbaum hier im YAWL-Editor. Dies ist etwas kleiner als der, den wir gerade gezeichnet haben, weil zuerst nie der oberste Knoten erwähnt wird, was immer wahr ist. Diese Notiz kann also nicht bearbeitet werden. Es wird also nicht im Editor angezeigt. Wir beginnen also mit dem zweiten Knoten. Außerdem werden nicht alle Blätter angezeigt, die wir dem rdr-Baum hinzugefügt haben. Schauen wir uns also diesen ersten Knoten hier an, den Knoten der obersten Ebene. Wir können sehen, dass es sich um einen Workitem-vorbeschränkten Verstoß handelt, was bedeutet, dass er überprüft wird, bevor das Workitem gestartet wird. Es handelt sich um die Aufgabe "Do show" und auf der rechten Seite sehen wir den Datenkontext dafür. Wir haben also die Tickets 20.000 verkauft und die Sitzplätze 30.000. Und wenn die verkauften Tickets kleiner sind als die mit 0,75 multiplizierten Sitzplätze, führen wir die Aktionen hier in dieser Liste aus. Tatsächlich muss die Anzahl der verkauften Tickets weniger als 75 Prozent der Sitzplätze betragen, um diese Regel bearbeiten zu können. Die Aktionen, die dann ausgeführt werden, bestehen darin, zuerst die Arbeitselemente anzuhalten, damit niemand sie ausführen kann, dann eine Ausgleichsaktion auszuführen, die auf den mittleren Veranstaltungsort geändert wird, und dann das Arbeitselement fortzusetzen. Diese drei Schritte können also in der grafischen Notation dargestellt werden, wie hier in der Zeichnung gezeigt. Wenn wir diese Regeln bearbeiten, erhalten wir hier im Editor dieselbe Notation. Ich werde das im folgenden Video zeigen. Wir können uns also vorstellen, dass dieses Arbeitselement mit diesem Symbol angehalten wird. Dann haben wir die Ausgleichsaktion und dann das Symbol für die Fortsetzung des Arbeitselements. Die Ausgleichsmaßnahme hier ist der Wechsel des Worklets zum mittleren Veranstaltungsort. Wir werden es uns vorerst nicht ansehen und sehen, dass es sich um "Stadion abbrechen", "Büchtheater" und "Fans beraten" handelt. Nachdem dies erledigt ist, haben wir die Aufgabe "Do show" abgeschlossen. Und dies ist die modifizierte Version in dieser speziellen Situation. Wenn wir uns die anderen Knoten im Editor ansehen, geht es beim nächsten darum, ob nur weniger als 50 Prozent der Sitze verkauft wurden. Dann wechseln wir zum kleinen Veranstaltungsort. Dies kann also der zweite hier in dieser Zeichnung sein. Und das letzte hier ist "Show abbrechen ", was anders ist, weil der Fall am Ende entfernt wird und nicht fortgesetzt wird. Kompensieren Sie also "Show abbrechen" und dann haben wir dieses Stoppen des Falls oder Entfernen des Falls. Sie können auch sehen, dass die effektive zusammengesetzte Regel, die durch den rdr-Baum definiert wird, hier im YAWL-Editor erneut angezeigt wird. Versuchen wir also, diesen Fall auszuführen. Wir haben also bereits alles in das YAWL-System geladen und werden nun die Hauptspezifikation, die übergeordnete Spezifikation, hochladen und sie erhält die Fall-ID 4. Und wir können sehen, dass wir "Stadion buchen" die erste Aufgabe haben, die jetzt nicht angeboten wird. Also werde ich diese Aufgabe für den Benutzer Matt Murdock starten und mich gleichzeitig mit diesem Benutzer hier anmelden. Und wir können sehen, was passiert. Also wird dieser gestartet und ich habe jetzt die Kosten für den Veranstaltungsort, die Sitzplätze 25.000 und ich habe den Namen des Veranstaltungsortes, der das ANZ-Stadion ist. Okay! Damit ist diese Aufgabe erledigt. Denken Sie daran, dass wir 25.000 Sitzplätze haben und wir schauen auf unsere Benutzeroberfläche und sehen das nächste Arbeitselement "Tickets verkaufen", das wieder nicht angeboten wird. Also werde ich es dem gleichen Benutzer anbieten. Und jetzt haben wir die Ticketkosten und die verkauften Tickets und sagen wir, wir haben 12.000 verkaufte Tickets, was weniger als die Hälfte der Sitzplätze ist. Dann würden wir erwarten, zu einem kleinen Veranstaltungsort zu wechseln. Und jetzt können Sie in der Admin-Oberfläche das Workitem "Do show" hier sehen. Dieser ist ausgesetzt, weil wir ihn in unseren Aktionen ausgesetzt haben, und dann haben wir hier das Arbeitselement "Stadion abbrechen " , das aktiviert und nicht angeboten wird. Beachten Sie auch, dass "Stadion abbrechen " die Fall-ID 5 hat, während unser übergeordneter Fall die Fall-ID 4 hat. Daher wird ein neuer Fall für unser Worklet erstellt, und wir starten dieses Abbruch-Stadion erneut, damit derselbe Benutzer es einfach macht. Und dann können wir das Stadion absagen. Jetzt haben wir hier das nächste Arbeitselement: "Konzertsaal buchen". Und jetzt haben wir einen anderen Veranstaltungsort, der bei fünfzehntausend Sitzplätzen weniger kostet. Und die nächste Aufgabe heißt "Tell punters". Also starten wir es erneut für denselben Benutzer. So können wir jetzt die Sitzgelegenheiten und den Konzertsaal mit dem Namen des Veranstaltungsortes sehen und jetzt ist das Worklet fertig und wir haben die Aufgabe "Show zeigen" hier nicht angeboten. Und "Do Show" ist jetzt im Konzertsaal mit einer geringeren Anzahl von Sitzplätzen und unseren verkauften Tickets. Das ist alles! Sie haben also gesehen, dass dies ziemlich komplex ist. Aber es ist auch ziemlich mächtig. Wie Sie in den Grafiken hier hinter mir sehen können, die aus dem YAWL-Buch stammen, haben wir drei Ebenen auf der untersten Ebene, wir haben die übergeordnete Workflow-Spezifikation mit der Aufgabe "Do show". Und dann ist "Do show" mit einem Exlet verbunden. Dies ist in der mittleren Schicht. Und dieses Exlet ist eine Verletzung der Einschränkungen vor der Arbeit: Zum Beispiel, dass die Anzahl der verkauften Tickets nicht ausreicht. Und dann gibt es dieses Verhalten, das in diesem Exlet definiert ist - und wir werden Exlets im nächsten Tutorial behandeln - und dann ruft dieses Exlet als Ausgleichsaktion das Worklet auf, das sich hier zum mittleren Veranstaltungsort ändert. Und das ist die oberste Ebene. Sie können also Worklets und Exlets auf diese Weise kombinieren, aber Sie können Worklets auch alleine ohne Exlets verwenden. So sehen Lassen Sie sich auf diesem im Detail im nächsten Tutorial. Bis dann!