# Business Process Engine

Der Begriff Business Process Engine bezeichnet ein Geschäftsprozess-Anwendungssoftwaremodul, das sich auf die (reine) Ausführung (execution) von Geschäftsprozessen in Unternehmen konzentriert.

## Grundlegendes: Geschäftsprozesse und Business Process Engines

Die auszuführenden Geschäftsprozesse – also die vorstrukturierte Abfolge von einzelnen Aktivitäten – müssen vorher entsprechend definiert werden (in einer Prozessdefinition oder einem Prozess-Template); beim eigentlichen Ausführen des so definierten Prozesses arbeitet die „Business-Process-Engine“ einfach alle Aktivitäten und ihre „Verbindungen“ (also die Übergänge von einer Aktivität zur nächsten) ab. Die gerade in Ausführung befindlichen Prozesse nennt man dabei, im Unterschied zur Prozessdefinition, Prozessinstanzen.
Bei den Aktivitäten unterscheidet man typischerweise Humanaktivitäten (oft auch Human Tasks genannt) und Maschinenaktivitäten (Machine Tasks genannt), letztere sind also Aktivitäten, die wieder von einem (anderen) Programm, Programmteil oder Modul einer anderen Applikation ausgeführt werden. Im Rahmen einer service-orientierten Architektur werden oft SOA Services als Maschinenaktivität aufgerufen bzw. ausgeführt.
Durch die Fähigkeit der „Business-Process-Engine“, die Ausführung von Humanaktivitäten und Maschinenaktivitäten in bzw. zu einem ganzen Prozess zu verknüpfen, werden derartige Anwendungen gerne (und sinnvollerweise) im Rahmen der Integration von Prozessen oder auch der Enterprise Application Integration eingesetzt.

## Angrenzende Gebiete

Angrenzende Gebiete sind die der Workflow-Management-Systeme und Geschäftsprozessmanagementsysteme. Während sich eine „Business-Process-Engine“ nur um die Ausführung von (irgendwo anders definierten) Prozessdefinitionen kümmert, beinhalten WfMS oder BPMS Systeme die notwendigen zusätzliche Funktionen, um auch derartige Prozesse definieren zu können (typischerweise in Form eines Prozessdesigners) und die in der „Business-Process-Engine“ ablaufenden Prozessinstanzen überwachen und steuern zu können (heute als Business-Activity-Monitoring, BAM geläufig).
In diesem Sinne ist eine „Business-Process-Engine“ notwendiger Bestandteil eines WfMS (man könnte dann auch von einer „Workflow Engine“ sprechen) bzw. eines BPMS.

## Software im Bereich der Unternehmensanwendungsintegration

Viele Programme im Bereich der Unternehmensanwendungsintegration (enterprise application integration) haben sich heute in Richtung eines Enterprise Service Buses (ESB) weiterentwickelt, wobei ein ESB typischerweise ebenfalls in der Lage ist, einzelne (atomare) Services miteinander zu höherwertigen (zusammengesetzten) Services zu verknüpfen. Da jede derartige Verknüpfung (technisch nennt man das Service-Orchestrierung) ebenfalls so etwas wie eine Orchestration-Engine benötigt, bezeichnen manche Hersteller (fälschlicherweise) ihren ESB ebenfalls als „Business-Process-Engine“ (oder WfMS oder BPMS). Die Nagelprobe für derartige Bezeichnungen ist immer die Frage, ob die Engine (der ESB) in der Lage ist, neben Maschinenaktivitäten auch Humanaktivitäten auszuführen; dann und nur dann verdient die Orchestration Engine des ESBs die Charakterisierung als „Business-Process-Engine“.
Nebenbemerkung: Viele Orchestration Engines setzen heute den WS-BPEL-Standard ein, um ausführbare Prozesse zu definieren. Derartige Engines sind also im Wesentlichen WS-BPEL-Interpreter. Beachtenswert in diesem Zusammenhang ist die Tatsache, dass der reine WS-BPEL 2.0 Standard nicht in der Lage ist, Humanaktivitäten in die Definition einzubinden und auszuführen. Die Hersteller erweitern daher den Standard um proprietäre Elemente, um sich trotz WS-BPEL-„Konformität“ auch die notwendigen Funktionen einer „Business-Process-Engine“ zur Verfügung zu stellen.
Weil es keine graphische Modellierung der Prozesse für die Prozess Engine mit WS BPEL gab, wurde mit BPMN 2.0 Business Process Model and Notation von der Object Management Group eine neue Notation erfunden, die sowohl für die fachliche Spezifikation in der Fachabteilung bis zur Ausführung auf einer Process Engine eine sowohl graphische als auch eine XML Notation zur Verfügung gestellt wurde. Die Bearbeitung der Modelle erfolgt beispielsweise in Activiti mit einem graphischen Designer.

## Einsatzgebiete

Ein wesentliches Einsatzgebiet für eine „Business-Process-Engine“ ist die Automatisierung von Geschäftsprozessen und das Geschäftsprozessmanagement. Aber auch in einer (vollen) SOA haben „Business-Process-Engines“ zur Ausführung von (Human) Prozessen einen festen Platz.

## Beispiele für Business-Process-Engines

Bei den kommerziellen Anbietern kann zwischen Anbietern, die
* von einer integrationszentrischen (SOA-zentrischen) Perspektive [INT], oder
* von einer humanzentrischen Perspektive [HUM]
kommen, unterschieden werden (alphabetische Reihenfolge):
* Appian [HUM]
* AristaFlow [INT]
* Bosch Software Innovations [INT]
* Comindware Tracker [INT]
* Fuego [HUM]
* Fujitsu Interstage [HUM]
* IBM WebSphere Process Manager [INT]
* Intalio [HUM]
* Lombardi [HUM]
* Microsoft [INT]
* Oracle Business Process Manager [INT]
* Pegasystems [HUM]
* SAP NetWeaver Process Engine [INT]
* Savvion [HUM]
* SoftProject [INT]
* Software AG webMethods BPMS [INT]
* Tibco iProcess [HUM]
* Tibco Rendezvous [INT]
* Vitria [INT]
In den meisten Fällen haben die Anbieter ihre „Business-Process-Engine“ zu einem kompletten Business Process Management System (BPMS) erweitert.
An quelloffenen „Business-Process-Engines“ sind u. a. zu nennen:
* Enhydra Shark
* JBoss jBPM
* Activiti
* Camunda BPM
* Flowable
* Imixs-Workflow [HUM]
* Temporal