Wie man Workflows mit Activiti als Open Source Process Engine leichtgewichtig in die Java-Welt bringt

Standards im Duett: BPMN 2.0 und Java EE 6

Bernd Rücker, Daniel Meyer


In diesem Artikel wollen wir zeigen, wie man mit Activiti BPMN-2.0-Prozesse auf Basis von Java EE 6 umsetzen kann. Dazu haben wir uns als Anwendungsbeispiel die Bearbeitung einer Anfrage für ein Versicherungsangebot herausgesucht. Der Prozess ist in BPMN 2.0 modelliert und in Abbildung 1 zu sehen. Er beginnt mit dem Ereignis, dass ein Kunde ein Angebot für eine Versicherungspolice beantragt hat. Der nächste Schritt im Prozess ist dann eine Service Task, also eine automatisierte (wir denken: „Java“-)Tätigkeit, in der versucht wird, anhand der vom Kunden erhaltenen Daten ein Angebot zu erstellen. Dem Kunden wird dann die Aufgabe zugeordnet (UserTask), das Angebot zu akzeptieren oder abzulehnen. Mit dieser Aufgabe wird eine Frist verknüpft (siehe „angeheftetes Zeitereignis“). Läuft diese Frist ab, wird dem Kunden die Aufgabe entzogen, und der Prozess wird beendet. Falls der Kunde das Angebot annimmt, wird ein Vertrag erstellt und dem Kunden postalisch zugestellt.

Abb. 1: Ein einfacher Prozess in BPMN 2.0 modelliert

Zur Modellierung des Prozesses lässt sich im Prinzip jedes BPMN-2.0-kompatible Tool verwenden. Das Activiti-Projekt stellt dazu ein eigenes Eclipse Plug-in bereit, den „Activiti Designer“. Verwenden wir diesen, entsteht eine Datei mit der Endung .bpmn20.xml. Diese XML-Datei ist das ausführbare Artefakt, das wir später an die Process Engine Activiti geben werden. Das Format dieser Datei wird durch den BPMN-2.0-Standard vorgegeben. Bevor wir den Prozess aber von Activiti ausführen lassen können, ist noch einiges an Implementierungsarbeit zu leisten. Wieso? Die Process Engine kann man sich wie eine Art „transaktionalen Zustandsautomaten“ vorstellen. Das heißt konkret: Wenn wir den Prozess ausführen, erlaubt Activiti es uns, einzelne Instanzen (= Durchläufe) von dem Prozess zu initiieren, die jeweils mit einer eindeutigen Identifikation (Process Instance ID) versehen werden. Der Zustand dieser Instanzen wird dann von Activiti für uns in einer Datenbank verwaltet. Wenn wir jetzt von Prozessimplementierung reden, dann reden wir von der Entwicklung dessen, was noch darum herum passieren muss, also zum Beispiel Eingabemasken bzw. Formulare, Services usw. Für diese Implementierung haben wir uns einen weiteren Standard ausgesucht, Java Enter­prise Edition 6. Wir gehen an dieser Stelle also davon aus, dass der Leser zumindest mit Grundlagen von JSF und CDI vertraut ist.

Los geht’s: Wir starten den Prozess mit einem JSF-Formular

Um zu zeigen, wie elegant das g...

Wie man Workflows mit Activiti als Open Source Process Engine leichtgewichtig in die Java-Welt bringt

Standards im Duett: BPMN 2.0 und Java EE 6

Bernd Rücker, Daniel Meyer


In diesem Artikel wollen wir zeigen, wie man mit Activiti BPMN-2.0-Prozesse auf Basis von Java EE 6 umsetzen kann. Dazu haben wir uns als Anwendungsbeispiel die Bearbeitung einer Anfrage für ein Versicherungsangebot herausgesucht. Der Prozess ist in BPMN 2.0 modelliert und in Abbildung 1 zu sehen. Er beginnt mit dem Ereignis, dass ein Kunde ein Angebot für eine Versicherungspolice beantragt hat. Der nächste Schritt im Prozess ist dann eine Service Task, also eine automatisierte (wir denken: „Java“-)Tätigkeit, in der versucht wird, anhand der vom Kunden erhaltenen Daten ein Angebot zu erstellen. Dem Kunden wird dann die Aufgabe zugeordnet (UserTask), das Angebot zu akzeptieren oder abzulehnen. Mit dieser Aufgabe wird eine Frist verknüpft (siehe „angeheftetes Zeitereignis“). Läuft diese Frist ab, wird dem Kunden die Aufgabe entzogen, und der Prozess wird beendet. Falls der Kunde das Angebot annimmt, wird ein Vertrag erstellt und dem Kunden postalisch zugestellt.

Abb. 1: Ein einfacher Prozess in BPMN 2.0 modelliert

Zur Modellierung des Prozesses lässt sich im Prinzip jedes BPMN-2.0-kompatible Tool verwenden. Das Activiti-Projekt stellt dazu ein eigenes Eclipse Plug-in bereit, den „Activiti Designer“. Verwenden wir diesen, entsteht eine Datei mit der Endung .bpmn20.xml. Diese XML-Datei ist das ausführbare Artefakt, das wir später an die Process Engine Activiti geben werden. Das Format dieser Datei wird durch den BPMN-2.0-Standard vorgegeben. Bevor wir den Prozess aber von Activiti ausführen lassen können, ist noch einiges an Implementierungsarbeit zu leisten. Wieso? Die Process Engine kann man sich wie eine Art „transaktionalen Zustandsautomaten“ vorstellen. Das heißt konkret: Wenn wir den Prozess ausführen, erlaubt Activiti es uns, einzelne Instanzen (= Durchläufe) von dem Prozess zu initiieren, die jeweils mit einer eindeutigen Identifikation (Process Instance ID) versehen werden. Der Zustand dieser Instanzen wird dann von Activiti für uns in einer Datenbank verwaltet. Wenn wir jetzt von Prozessimplementierung reden, dann reden wir von der Entwicklung dessen, was noch darum herum passieren muss, also zum Beispiel Eingabemasken bzw. Formulare, Services usw. Für diese Implementierung haben wir uns einen weiteren Standard ausgesucht, Java Enter­prise Edition 6. Wir gehen an dieser Stelle also davon aus, dass der Leser zumindest mit Grundlagen von JSF und CDI vertraut ist.

Los geht’s: Wir starten den Prozess mit einem JSF-Formular

Um zu zeigen, wie elegant das g...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang