Modellierung von Workflows mit Petri-Netzen
Modellbasierte Entwicklung hat sich aufgrund der Komplexität großer Softwaresystemen heutzutage bislang nicht auf breiter Front durchgesetzt. In Bereichen wie der Modellierung von Arbeitsabläufen (Workflows) oder auch in Fertigungsprozessen hingegen finden modellbasierte Systeme oftmals Anwendung. Viele setzen hier auf endliche Automaten (State Machines), wie zum Beispiel JIRA. Petri-Netze werden dabei nur selten eingesetzt, obwohl gerade diese für solche Anwendungsfälle sehr gut geeignet sind. Der wichtigste Unterschied zwischen endlichen Automaten und Petri-Netzen ist dabei im Zustandsübergang zu finden, dieser ist bei endlichen Automaten immer gleichartig geregelt, während er sich in Petri-Netzen von Zustand zu Zustand unterscheiden kann.
Stellen und Transitionen im Workflow
Für die Darstellung von Workflows ist eine vereinfachte Variante der Stellen/Transitions-Netze gut geeignet, der wohl bekanntesten Form von Petri-Netzen. Eine formale Beschreibung findet sich in der Literatur. Dabei ist vor allem entscheidend, dass es in S/T-Netzen jeweils eine Menge von Stellen und eine Menge von Transitionen gibt, wobei Verbindungen nur zwischen Stellen und Transitionen und umgekehrt zulässig sind. Für Workflows sind Stellen als Zustand und Transitionen als Aktionen des Workflows definiert. Wichtigste Einschränkung hierbei ist, dass es jeweils nur immer genau einen aktiven Zustand im Petri-Netz gibt, der den Workflow-Zustand darstellt.
Beispiele aus der Praxis
Für die grafische Darstellung werden Stellen – im Weiteren auch Status genannt – als Kreise dargestellt und Transitionen – im Weiteren auch Aktionen genannt – als Rechtecke. Es sind also immer nur Verbindungen zwischen Kreisen und Rechtecken zulässig, nicht aber von Kreis zu Kreis oder Rechteck zu Rechteck. Für einen Workflow gibt es zum Beispiel folgende unterscheidbare Aktionen:
- Eine automatische Transition schaltet direkt weiter
- Eine zeitgesteuerte Transition schaltet zu einem definierten Zeitpunkt automatisch weiter
- Eine manuelle Transition schaltet abhängig von einer Benutzer-Entscheidung weiter
- Eine Benachrichtigung versendet eine Mail-Nachricht und schaltet dann selbst weiter.
Natürlich sind noch viele weitere Varianten denkbar und in der Praxis sinnvoll, wie die Generierung von Reports oder automatische Entscheidungen abhängig von Attributen. Hier variieren die Anforderungen natürlich zwischen den jeweiligen Anwendungen.
Wie kann so etwas in der Praxis aussehen?
Ein ganz einfacher, komplett manueller Freigabeworkflow könnte dann wie folgt aussehen:
Einfache Umsetzung
Diesen Workflow kann man einfach um Benachrichtigungen bei Beantragung, Ablehnung und Freigabe erweitern, ebenso wie um Aktionen, wenn eine Prüfung innerhalb einer festgelegten Frist nicht erfolgt. Und genau darin liegt eben die Stärke der Petri-Netze: Im Workflow lassen sich unterscheidbare Aktionen modellieren. Auch eine Erweiterung um neue Aktionstypen zu einem späteren Zeitpunkt ist je nach Implementierung unkompliziert möglich.
Die Umsetzung eines solchen Workflow-Systems ist ebenfalls sehr einfach, dazu müssen lediglich die Workflow-Modelle im System abgelegt werden und Modell und aktueller Status von den Entitäten referenziert werden. Wie eine solche Implementierung konkret aussehen kann, stellen wir in einem späteren Beitrag vor.
Literatur:
https://de.wikipedia.org/wiki/Petri-Netz
Wolfgang Reisig: Petri-Netze – Modellierungstechnik, Analysemethoden, Fallstudien. Vieweg + Teubner Verlag, Auflage 2010.
Bernd Baumgarten: Petri-Netze – Grundlagen und Anwendungen. Spektrum Akademischer Verlag, 2. Auflage 1997.
Titelbild: © 1xpert – Fotolia.com
Softwareentwicklung