Teil 1: Einführung in BPMN, BPMN-Ausführbarkeit in .NET und die Open-Source-BPM-Plattform von Camunda

Workflows mit BPMN effektiv automatisieren [Teil 1]
Kommentare

BPMN ist der globale ISO-Standard für Prozessmodellierung und Workflowautomatisierung. Dabei geht es nicht darum, mit „Zero-Code“ die „lästigen Entwickler“ loszuwerden, sondern um fachlich lesbare Modelle, die mit technischen Attributen angereichert auf einer leichtgewichtigen Engine ausgeführt werden.

Leider bietet Microsoft selbst keine Lösung an, weswegen oft Potenziale verschenkt werden – völlig unnötig! Dieser Artikelzweiteiler führt deshalb kurz in BPMN und automatisierbare Workflows ein und zeigt am Beispiel der Open-Source-BPM-Plattform von Camunda, wie man eine bestehende BPMN-Lösung in der .NET-Welt nutzen kann.

In Teil 1 widmen wir uns zunächst einer Einführung in BPMN anhand eines Beispiels, betrachten die BPMN-Ausführbarkeit in .NET und schauen uns die Open-Source-BPM-Plattform von Camunda an, inklusive deren Installation.

BPMN = Business Process Management and Notation

Workflowmanagement ist ein alter Hut. Das macht ihn aber nicht minder interessant. Wann immer Abläufe und „Geschäftsprozesse“ am Werk sind, werden diese mindestens als Anforderung grafisch modelliert. Dafür hat sich seit Jahren ein Standard etabliert, der weltweit auf dem Vormarsch ist: BPMN (Business Process Management and Notation) in der aktuellen Version 2.0. Der Clou: Diese Modelle können – um technische Details angereichert – direkt auf einer Engine ausgeführt werden.

Die BPMN ist sehr mächtig, was die Abbildung von typischen Geschäftsprozessen angeht. Mit BPMN ist es zudem möglich, dass der real ablaufende Prozess immer gleich der grafischen Darstellung der Anforderung ist. Das erlaubt nicht nur ein fachliches Monitoring zur Laufzeit, sondern auch spätere Prozessänderungen ohne Archäologie im Softwaresystem. Denn Prozessmodelle sind nicht mehr nur stumme Zeugen einer längst vergangenen Wunschliste in der Anforderungsanalyse, sondern zentrale lebende Artefakte.

Eine typische Workflow-Engine bringt neben der Transparenz durch grafische Modelle weitere Features mit, die den Einsatz interessant machen. Dabei dreht es sich vor allem um langlaufende Prozesse, denn viele Prozesse können Wochen oder Monate andauern, bis sie abgeschlossen sind. Eine Workflow Engine kann daher zum Beispiel Wartezustände effizient verwalten und unterstützt zeitliche Eskalationen. Vorgefertigte Komponenten wie Aufgabenlisten oder Monitoringtools können das Leben weiter vereinfachen.

Sehen Sie sich auch das Interview mit Bernd Rücker über das Erstellen einer Java-Workflow-Engine für die .NET-Welt an!

BPMN am Beispiel

Starten wir mit einem Beispiel. Stellen Sie sich vor, Sie möchten eine neue KFZ-Versicherung abschließen. Sie gehen ins Internet und geben alle notwendigen Daten ein. Nachdem Sie auf „Antrag senden“ geklickt haben legt bei dem Versicherungsunternehmen Ihrer Wahl ein Geschäftsprozess los, zum Beispiel der in Abbildung 1 (für diesen Artikel natürlich stark vereinfacht). Ich möchte nur ein paar Hinweise zu dem Modell geben, da die Darstellung in BPMN glücklicherweise recht intuitiv ist:

  • Am Startevent „Antrag erhalten“ wird eine neue Prozessinstanz erzeugt.
  • „Risiko prüfen“ ist ein so genannter Business-Rule-Task. Hier wird eine Entscheidungstabelle angesprochen, die im Schwesterstandard DMN (Decision Model and Notation) definiert ist. Sie ermittelt, ob der Antrag vollautomatisiert angenommen oder abgelehnt wird. Nur im Zweifelsfall (gelbes Risiko) wird ein Mensch involviert.
  • „Risiken?“ ist ein so genanntes exklusives Gateway. Hier wird eine Routing-Entscheidung getroffen; der Prozessfluss muss genau einen ausgehenden Pfad nehmen. Dies ist abhängig von Daten im Prozess, in diesem Fall dem Ergebnis der Entscheidungstabelle zur Risikoprüfung.
  • „Neuantrag prüfen“ ist ein Usertask, also eine Aufgabe für einen Menschen. Diese wird über eine Aufgabenliste angezeigt und ein entsprechendes Formular bearbeitet. Der Prozess läuft weiter, sobald der Mensch seine Arbeit erledigt hat. Da dies beliebig lange dauern kann, ist ein Timerevent angeheftet, das bei Verzögerungen einen parallelen Zweig zur Eskalation anstößt.
  • „Police ausstellen“ ist ein Servicetask, hier wird eine bestehende Funktionalität eines Bestandsystems aufgerufen.
  • „Police zuschicken“ ist ein Send-Task, der sich technisch wie ein Servicetask verhält. Im Modell ist dadurch jedoch grafisch sichtbar, dass hier eine (asynchrone) Nachricht verschickt wird, in unserem Fall eine E-Mail.
  • Die Prozessinstanz beendet, sobald alle Pfade in einem End-Event, hier „Antrag policiert“ oder „Antrag abgelehnt“, angekommen sind.
Abb. 1: Ein Versicherungsneuantrag in BPMN

Abb. 1: Ein Versicherungsneuantrag in BPMN

In BPMN können beliebig viele Pfade parallel ausgeführt werden, sie müssen auch nicht symmetrisch modelliert werden. BPMN eignet sich immer dann, wenn alle Durchläufe eines Geschäftsprozesses dem gleichen Muster folgen. Dies ist in unserem Neuantrag gegeben. Wir sprechen von strukturierten Geschäftsprozessen oder eben Workflows. Typische Beispiele sind: Bestellung oder Antragseingang (z. B. DSL-Neuanschluss, KFZ-Versicherung, Kreditkarte, Klamotten), Bearbeitung einer Schadensmeldung (z. B. Haftpflicht, Autounfall), Lieferung (z. B. Paket). Das soll auch schon als Schnelleinstieg in BPMN genügen, bei Interesse empfehle ich einen Blick in das Tutorial oder das „Praxishandbuch BPMN 2.0“ (Freund, J., Rücker, B.; Carl Hanser Verlag, 4. Auflage, 2014).

Der Prozess liegt nicht nur als Bild vor, sondern wird als XML-Datei abgespeichert. Das XML-Format ist standardisiert, sodass prinzipiell beliebige Modellierungswerkzeuge mit beliebigen Ausführungs-Engines gekoppelt werden können.

BPMN-Ausführbarkeit in .NET

Obwohl Microsoft selbst am BPMN-Standard mitgearbeitet hat, gibt es bis heute keine BPMN-Werkzeuge von Microsoft. Diverse Kunden haben uns weiterhin bestätigt, dass alle existierenden Workflowansätze in der .NET-Welt, wie z. B. die Windows Workflow Foundation, für ernsthafte Geschäftsprozesse nicht ausreichen und außerdem viel zu alt sind, um BPMN zu unterstützen. Daher muss man sich nach anderen Lösungen umsehen.

Camunda BPM

Eine Variante ist die Open-Source-BPM-Plattform von Camunda, die nativ BPMN 2.0 unterstützt und die Sie direkt herunterladen können. Die Plattform selbst ist zwar in Java entwickelt und daher eigentlich in diesem Universum zu Hause, allerdings wird sie vermehrt auch im .NET-Umfeld eingesetzt – was nicht nur am Mangel an Alternativen liegt. Ich möchte an dieser Stelle erwähnen, dass ich selbst als Camunda Evangelist natürlich nicht neutral bin, als BPMN-Enthusiast aber vor allem das Thema Workflowautomatisierung vorantreiben möchte. Zum Glück passt das in diesem Fall zusammen.

Abb. 2: Das Architekturbild zeigt die Komponenten der Camunda-Plattform (blau), eine Prozessanwendung (rot) und dazwischen der beispielhafte C#-Camunda-Client

Abb. 2: Das Architekturbild zeigt die Komponenten der Camunda-Plattform (blau), eine Prozessanwendung (rot) und dazwischen der beispielhafte C#-Camunda-Client

In Abbildung 2 sind die Camunda-Komponenten ersichtlich (blau eingefärbt). Herzstück ist die Engine, die neben BPMN auch CMMN (Fallbearbeitung für unstrukturierte Prozesse) sowie DMN (Entscheidungstabellen) ausführen kann. Es gibt weiterhin ein REST-API und HTML5-Weboberflächen für die Aufgabenliste, das Monitoring sowie die Administration. Natürlich gibt es auch ein grafisches Modellierungswerkzeug, das ebenfalls BPMN, CMMN und DMN beherrscht. Der Camunda Modeler kann dabei sowohl von Businessanalysten als auch von Entwicklern eingesetzt werden.

Es gibt verschiedene Varianten, wie Camunda in einem .NET-Umfeld eingesetzt werden kann. Die erste Grundsatzfrage lautet: Soll Java-Code geschrieben werden oder nicht? Denn Sie könnten an den Servicetasks im Prozessmodell einfach Java-Code referenzieren. Dieser wird dann durch die Camunda Engine direkt aufgerufen, wenn eine Prozessinstanz den Servicetask durchläuft. Auch wenn dies die häufigste Variante in der Java-Welt ist, möchte ich diese Alternative in diesem Artikel nicht weiter betrachten. Denn es ist auch möglich, komplett ohne Java auszukommen, was.NET-Anwender meist bevorzugen.

Die Camunda Engine kann dazu als Blackbox verwendet werden, mit der über die REST-Schnittstelle kommuniziert wird. Camunda wird dafür auf einem Application Server betrieben, z. B. Apache Tomcat oder WildFly. Für beide stehen vorkonfigurierte Pakete zum Download bereit, sodass Sie wenige Berührungspunkte mit diesen Java-Komponenten haben. Die Installation ist im Kasten „Installation von Camunda BPM“ beschrieben.

Prinzipiell ist es in diesem Szenario natürlich auch denkbar, die Camunda-Installation in der Cloud vorzunehmen (oder einen fertigen Camunda-Cloud-Dienst zu nutzen, der aktuell in Planung ist). Spätestens dann entfällt jegliches Hantieren mit Java-Komponenten. Schauen wir uns an, wie wir dann unseren Neuantragsprozess umsetzen, ohne eine Zeile Java-Code zu schreiben.

Installation von Camunda BPM

Wir empfehlen zum Ausprobieren folgenden Stack:

  1. Camunda Modeler herunterladen, entpacken und direkt starten.
  2. Oracle Java Development Kit 8 installieren (wenn noch nicht vorhanden).
  3. Download der aktuellen Camunda WildFly Community Distribution, alternativ kann auch eine kostenlose Testversion der Enterprise Edition angefordert werden. Diese ist stabiler und enthält mehr Features, zum Beispiel im Monitoringtool Cockpit.
  4. Die Distribution ist eine einfache ZIP-Datei, die lokal entpackt wird und über das enthaltene Batchskript direkt gestartet wird.
  5. Dabei wird eine einfache mitgelieferte dateibasierte Datenbank gestartet (H2), die zum Spielen völlig ausreicht.
  6. Soll beispielsweise auf MS SQL Server umgestellt werden, so ist das genaue Vorgehen in der Dokumentation beschrieben.
  7. Nach dem Starten steht die Webanwendung unter http://localhost:8080/camunda zur Verfügung. Einfach mit demo/demo anmelden.
  8. Das REST-API steht unter http://localhost:8080/engine-rest/ zur Verfügung, eine Authentifizierung ist im Auslieferzustand nicht erforderlich.

In Teil 2 dieses Artikels blicken wir auf die Prozessanwendung von Camunda BPM, geben Code-Beispiele und zeigen wie man die Webanwendung Camunda Tasklist als Aufgabenliste für Ihre Anwender produktiv verwenden kann. Außerdem schauen wir uns das Prozessmonitoring unter BPM an und erläutern, wie man eine eigene WPF-Aufgabenliste entwickelt.

Sehen Sie sich auch das Interview mit Bernd Rücker über das Erstellen einer Java-Workflow-Engine für die .NET-Welt an!

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -