Technische Realisierung von BPM mit jBPM 5

Grundlagen zur technischen Realisierung von BPM mit jBPM5

Für den Begriff "Business-Process-Management" (BPM) gibt es verschiedene Betrachtungsweisen und Definitionen. Zum einen ist mit BPM die betriebswirtschaftliche Geschäftsprozessanalyse, -modellierung, -steuerung und -optimierung gemeint. Zum anderen gibt es eine IT-Sicht, die sich mit den technischen Aspekten der Prozessautomatisierung und -analyse beschäftigt. Eine allgemeine, aber doch sehr aussagekräftige Definition des BPM-Begriffes lautet wie folgt:

“The main goal of BPM is to provide visibility to the company's business processes and find ways to improve and speed them up to increase profit and reduce costs” [1].

Dieser Blogeintrag beschränkt sich auf die technische Prozessautomatisierung mithilfe von JBoss jBPM5. Um diese Technologie nutzen zu können, ist es notwendig, die zugrunde liegende Prozessnotation BPMN 2.0 zu verstehen.

1.png

Abbildung 1: Entwicklung von Geschäftsprozessnotationen, [4]

Die „Business Process Modeling Notation“ (BPMN) 2.0 ist neben WSBPEL der wichtigste Standard im BPM-Bereich. Die Notation ermöglicht es, Prozesse fachlich zu modellieren, beachtet dabei aber auch die technischen Aspekte. D.h. es ist möglich, die Prozesse anwendungsübergreifend zu speichern und mit einer einheitlichen grafischen Notation anzuzeigen. Da WSBPEL technisch geprägt ist, keine einheitliche Notation bietet und für die Orchestrierung von Webservices genutzt wird, ist es für eine rein fachliche Modellierung nicht geeignet. Nicht zuletzt deshalb wird BPMN 2.0 von immer mehr BPM-Werkzeugen genutzt.

Crashkurs BPMN 2.0

BPMN 2.0 wird im Folgenden in Kurzform anhand eines einfachen Beispielprozesses der Organisation WfMCerläutert:

Abbildung 2: Einfacher BPMN-Beispielprozess

Unterschiedliche Prozessteilnehmer, wie z.B. „Verkauf“, werden in BPMN mithilfe von Pools und Swimlanes dargestellt. Aktivitäten wie „Bestellung entgegennehmen“ sind generische Aufgaben, die entweder automatisch oder von menschlichen Akteuren ausgeführt werden können. Für die automatische Ausführung einer Aufgabe können Fremdanwendungen, Webservices, einfache Codeblöcke oder auch Rule Engines aufgerufen werden. Die Fremdanwendungen führen die Prozessaufgabe durch und ändern Variablen, die den Prozessfluss beeinflussen. Die Aktivität „Bestellung durchführen“ aus dem Beispielprozess ist sehr komplex und daher in Form eines Unterprozesses dargestellt. Subprozesse sind immer dann sinnvoll, wenn die Abstraktionsebene der Prozessmodellierung gewechselt wird. Mithilfe der rautenförmigen „Gateways“ kann der Prozessfluss exklusiv oder parallel geteilt werden. Start- und End-Events kennzeichnen den Ein- und Ausstieg des Prozesses.

BPMN 2.0 ist in der vollen Ausprägung sehr komplex und enthält eine detaillierte Ausführungssemantik. Untersuchungen haben gezeigt, dass in der praktischen Anwendung häufig nur die niedrigeren „Ausbaustufen“ von BPMN verwendet werden, da sie auch von nicht geübten Lesern einfach verstanden werden können.

Einführung jBPM5

jBPM5 (http://www.jboss.org/jbpm/) ist ein Java-basiertes Workflow-Management-System, das von JBoss entwickelt wurde. Es ermöglicht, Prozesse grafisch zu modellieren und automatisch oder mit menschlicher Beteiligung auszuführen. Diese Ausführung findet i.d.R. auf einem Applikationsserver statt, kann aber auch leichtgewichtig innerhalb einer Java-Applikation erfolgen. Die Erläuterungen in diesem Blogeintrag beziehen sich ausschließlich auf jBPM Version 5, die sich stark von den älteren Versionen unterscheidet. Auch die BPMN 2.0 Unterstützung ist erst seit der aktuellen Version verfügbar.

Bestandteile von jBPM5

jBPM Process Designer und Drools Knowledge Repository „Guvnor“

jBPM5 ist sehr stark verzahnt mit der Rules Engine „Drools“, die sehr häufig zusammen mit jBPM eingesetzt wird. Die starke Verzahnung hat den Vorteil, dass Business Rules auch für Kleinstentscheidungen innerhalb eines Geschäftsprozesses verwendet werden können. Diese enge, vorteilhafte Verbindung zu einer Rules Engine ist das wohl wichtigste Abgrenzungsmerkmal von jBPM zu anderen Business-Process-Management-Systemen.

Business Rules sind einfache Regeln, die auch von technisch versierten Fachbereichsmitarbeitern oder Business Analysten definiert werden können. Sie werden für die Entscheidungen eingesetzt, die den Fluss einer Prozessinstanz steuern. Ein weiterer Bestandteil von Drools ist das Knowledge-Repository "Guvnor", in dem alle Business Rules, Geschäftsprozesse und Dokumentationen abgelegt und versioniert werden. Direkt in Guvnor integriert ist auch der jBPM Process Designer, eine BPMN 2.0 kompatible Webanwendung, die das grafische Modellieren der Geschäftsprozesse ermöglicht. Der Process Designer wird in der folgenden Abbildung dargestellt.

Abbildung 3: jBPM Process Designer, integriert in Drools Guvnor

Mit dem jBPM Process Designer werden Prozesse nicht nur erstellt, sondern auch simuliert. Dazu können Simulationsvariablen definiert werden, die beispielsweise entscheiden, mit welcher Wahrscheinlichkeit ein bestimmter Prozesspfad ausgeführt wird.

jBPM Eclipse Plugin

Neben der Modellierung in der Webanwendung ist es auch möglich, Prozesse mithilfe des jBPM Eclipse Plugins zu erstellen. Das Plugin ist allerdings nicht so fortgeschritten wie die Process- Designer-Webanwendung. Trotzdem lohnt es sich, das Plugin zu installieren, da es auch die Verbindung zum Guvnor-Repository herstellt. Dadurch ist es möglich, Prozesse anzupassen, zu versionieren und zu testen. Mithilfe der vordefinierten JUnit-Testklassen ist es einfach möglich, Prozessabläufe zu prüfen. Ein Beispieltestfall findet sich in folgender Abbildung:

Abbildung 4: Testfall erbt von JbpmJUnitTestCase

In der Basisklasse JbpmJUnitTestCasesind jBPM-spezifische Assert-Methoden definiert. Damit ist es sehr einfach möglich, die statische Prozessdefinition zu testen. Schwierig ist dagegen ein Test der Ausführung, da durch die Methode startProcess()ein neuer Thread gestartet wird.

jBPM-Konsole

Eine weitere Webanwendung ist die jBPM-Konsole, die dazu dient, Prozesse zu starten und sich seine Aufgabenpakete abzuholen. Jeder eingeloggte Benutzer hat eine Art „Worklist“, in der die zu erledigenden Aufgaben aufgelistet sind. Jeder Benutzer hat seine eigene Arbeitsliste. Zusätzlich gibt es eine Gruppenliste, die öffentliche Aufgaben enthält. Jeder berechtigte Anwender kann sich Aufgaben aus der Gruppenliste zuweisen. Dadurch werden die Tasks zu den persönlichen Aufgaben hinzugefügt.

jBPM-API Beispiele

Wie bereits in vorherigen Abschnitten erwähnt, ist jBPM Java-basiert. Die API ist sehr einfach gestaltet und kann schnell nachvollzogen werden. Anhand der folgenden Abbildungen werden typische Anwendungsfälle vorgestellt:

Zu Beginn einer Anwendung muss eine KnowledgeBaseaufgebaut werden. Dies geschieht mithilfe der KnowledgeBaseFactory. Für den Aufbau der KnowledgeBasekönnen alle relevanten Prozessdefinitionen oder Business Rules hinzugefügt werden.

Anschließend werden im WorkItemManager die vom Prozess definierten WorkItemHandler registriert und ein Prozess mithilfe der Prozess-ID gestartet. Immer wenn ein Prozess gestartet wird, wird eine konkrete Prozessinstanz erzeugt. Das gleiche Prinzip wird bei der Ausführung von Aktivitäten verfolgt. Alle aktiven Aktivitäten werden durch sog. Node-Instanz-Objekte abgebildet, die in der Prozessinstanz gespeichert werden.

Ein WorkItemHandler wird durch die Implementierung des gleichnamigen Interfaces erstellt. Es ist darauf zu achten, dass die Aktivität nach Ablauf des Codes manuell beendet wird, damit der Prozess weiterläuft.

Durch Events können explizit Prozesspfade ausgelöst werden. Dies ist zum Beispiel notwendig, wenn der Prozess auf das Eintreffen einer Nachricht wartet.

Fazit

jBPM5 ist ein umfangreiches und durchdachtes Werkzeug, um die technischen Aspekte von BPM zu realisieren. Die sehr umfangreiche Spezifikation von BPMN 2.0 wird nahezu vollständig unterstützt. Zudem bietet die enge Verzahnung mit den Business Rules und dem Knowledge-Repository von Drools zahlreiche Vorteile, die kein anderes BPMS bietet. Leider leidet auch die finale Version des Pakets unter Kinderkrankheiten, die während des Tests aufgefallen sind. Darunter fallen z.B. Fehler in den Beispielprojekten, die in dem Starter-Paket mitgeliefert werden, oder Abstürze im webbasierten Process Designer. Trotzdem ist zu sagen, dass sich jBPM in den letzten Jahren stark weiterentwickelt hat und die engen Ziele der Roadmap eingehalten wurden, um nicht den Anschluss an die „großen“ Anbietern von BPMS zu verlieren. Einen schnellen Einstieg in JBPM liefert das „full-installer“-Paket, das eine Demo enthält, die mit Apache Ant gestartet werden kann.

Quellen:
[1]   Salatino, M. Esteban A. – jBPM5 Developer Guide, ISBN: 1849516448
[2]   jBPM.org - http://www.jboss.org/jbpm/ 
[3]   Deutsches BPM-Netzwerk - www.bpm-netzwerk.de/
[4]   Vom Status Quo der Standards im Geschäftsprozessmanagement - http://www.saperionblog.com/lang/de/vom-status-quo-der-standards-im-geschaftsprozessmanagement-und-der-wende-in-deutschland/5428/
[5]   http://www.wfmc.org/
[6]   http://www.bpmn.org