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 Enterprise 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...
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 Enterprise 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...