Prozessautomatisierung mit BPMN und Activiti

Für Sie interessant:

 

Open Source Businesslösungen

In dem Seminar Open Source Businesslösungen lernen Sie kompetente Entscheidungen für den Einsatz von speziellen Open Source Lösungen zu treffen.

Dies ist Teil 1 einer Artikel-Serie zur Prozessautomatisierung mit BPMN und Activiti. In diesem ersten Teil geht es um die vorbereitenden Tätigkeiten, die notwendig sind, um die angebotenen Dienste zur Steuerung der Prozessautomatisierung der Laufzeitumgebung nutzen zu können.
In Teil 2 geht es um die Modellierung und Einbindung eines BPMN-Prozesses. Der dritte und letzte Teil thematisiert den Aufruf der Activiti Engine und seiner Services.

In vielen IT-Projekten spielen (Geschäfts-)Prozesse eine große Rolle. Die Anforderungen reichen von einer vollständigen Neumodellierung bis hin zur Analyse und Optimierung der bestehenden Geschäftsprozesse.

Als Projektbeteiligte stehen sich in der Regel zwei Parteien gegenüber: Die fachlichen und die technischen Spezialisten. Und da beginnt auch häufig bereits das erste Problem – denn die fachliche und die technische Sprache stimmen selten überein. Daraus können Kommunikationsprobleme resultieren, die wiederum weitreichende negative Folgen für den Erfolg des Projekts mit sich führen können.

Modellierungssprachen

Bild: Flickr.com / kev-shine

Bild: Flickr.com / kev-shine

Um Verständigungsprobleme möglichst zu vermeiden, haben findige Menschen die so genannten Modellierungssprachen erfunden. Es entstanden Sprachen für die fachliche wie auch für die technische Welt. Darüber hinaus gibt es auch Modellierungssprachen mit höherem Abstraktionsniveau, die fachliche und technische Sprachenwelten verknüpfen wollen. Quasi eine Modellierungsbasis für beide Parteien.
Eine der bekannteren Sprachen aus diesem Bereich ist die so genannte Business Process Model and Notation (kurz: BPMN). Sie bietet einen großen Fundus an Bausteinen, mit denen sich Geschäftsprozesse und Arbeitsabläufe beschreiben lassen. Die Reduzierung aufs Wesentliche steht dabei im Vordergrund. Die BPMN ist weder zu technisch noch zu fachspezifisch. Im Idealfall können fachliche und technische Spezialisten Hand in Hand an der Gestaltung eines Geschäftsprozesses in BPMN arbeiten.

Aus Sicht des Softwareentwicklers ist wohl der größte Vorteil die Tatsache, dass die BPMN-Modelle in einer standardisierten XML-Struktur gespeichert werden. Das macht den Weg frei für Prozessautomatisierung innerhalb einer Laufzeitumgebung (Process Engine), die diese Strukturen automatisiert verstehen und verarbeiten kann. Prozessabläufe müssen somit nicht mehr vom Entwickler implementiert werden, sondern werden aus dem Modell automatisiert erfasst.
Daraus lassen sich weitere Vorteile für die Entwicklung ableiten. Zum Beispiel werden die Implementierungszyklen kürzer, denn ein fachliches muss nicht mehr in ein technisches Modell überführt werden. Die Prozesse lassen sich im Vergleich zur klassischen Softwareentwicklung mit wenig Aufwand anpassen, da primär bloß das Modell angepasst werden muss.
Bei der Activiti Engine handelt es sich um eine solche (Open Source) Laufzeitumgebung. In ihr werden die in BPMN modellierten Prozesse ausgeführt, die Prozessabläufe gesteuert und ausgewertet. Technisch gesehen handelt es sich um eine Java-basierte Komponente, die mit wenig Aufwand in eigene Java-Projekte integriert werden kann, wie anhand dieses Artikels gezeigt wird.

Vorbereitende Tätigkeiten: Einbindung der Activiti Engine

Im ersten Schritt wird die Einbindung der Activiti Engine anhand eines fiktiven Beispiels erläutert. Das gewählte Beispiel ist dabei bewusst sehr abstrakt und schmal gehalten, denn es soll lediglich die von der Laufzeitumgebung angebotenen Dienste zur Steuerung der Prozessautomatisierung näher bringen. Doch bevor die Laufzeitumgebung genutzt werden kann, müssen innerhalb des Java-Projekts gewisse Voraussetzungen gegeben sein. Diese werden nun im Folgenden beschrieben.

Activiti-Bibliothek einbinden

Um die Activiti Engine nutzen zu können, müssen die dazugehörigen Bibliotheken eingebunden werden. Die Nutzung des Build-Management-Tools Maven erleichtert diesen Vorgang, denn es wird lediglich die zum Projekt gehörende POM-Datei um die benötigten Abhängigkeiten erweitert (siehe Abbildung 1).

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://waven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>de.lmis.hhu.activiti</groupId>
    <artifactId>my-first-activiti</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
          <groupId>org.activiti</groupId>
          <artifactId>activiti-engine</artifactId>
          <version>5.15.1</version>
        </dependency>      
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <version>1.4.178</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.5</version>
        </dependency>
    </dependencies>
</project>

Neben der eigentlichen Activiti Engine (aktuelle Version: 5.15.1) wird eine Datenbank benötigt. In ihr werden alle für die Verwaltung, Ausführung, Steuerung und Überwachung der Prozesse benötigten Daten hinterlegt. Im Beispiel kommt eine eingebettete Datenbank (H2 Database) zum Einsatz. Andere Datenbanksysteme (z. B. MySQL, Oracle, PostgreSQL etc.) ließen sich jedoch ebenfalls nutzen. Der passende Datenbank-Treiber muss dann einfach innerhalb der POM als Abhängigkeit hinzugefügt werden.
Auf Wunsch protokolliert die Activiti Engine wichtige Schritte im Log. Im Beispiel wird das Logging-Framework SLF4J zusätzlich eingebunden.

Activiti Konfiguration

Die Basiskonfiguration der Activiti Engine ist überschaubar. Um mit der Datenbank kommunizieren zu können, müssen die Zugangsdaten (Zugriffs-URL, DB-Treiber, Nutzername und Passwort) innerhalb einer Konfigurationsdatei hinterlegt werden, wie in Abbildung 2 zu sehen ist.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.oirg/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="processEngineConfiguration"
        class ="org.acitiviti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <property name="jdbcUrl" value="jbdc:h2:mem:activiti;DB_CLOSE_DELAY=1000"></property>
    <property name="jdbcDriver" value="org.h2.Driver"></property>
    <property name="jdbcUsername" value="sa"></property>
    <property name="jdbcPassword" value=""></property>
    <property name="databaseSchemaUpdate" value="true"></property>
    <property name="jobExecutorActivate" value="false"></property>
    <property name="mailerverHost" value="mail.my-corp.com"></property>
    <property name="mailServerPort" value="5025"></property>
  </bean>
</beans>

 

Die oben dargestellte Konfigurationsdatei wird mit dem Namen „activiti.cfg.xml“ in den Ressource-Ordner des Java-Projekts gespeichert.

 Logging-Konfiguration

 Das Logging-Framework wird innerhalb einer Properties-Datei konfiguriert und ebenfalls im Ressource-Ordner hinterlegt. Die nachfolgende Abbildung zeigt die Konfiguration für das Beispiel-Projekt.

 

log4j.rootLogger = DEBUG, CA

# ConsoleAppender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern= %d{hh:m:ss,SSS} [%t] %-5p %c %x - %m%n


log4j.logger.org.apache.ibatis.level=INFO
log4j.logger.javax.activation.level=INFO

Artikel-Serie „Prozessautomatisierung mit BPMN und Activiti“

Bei diesem Blog-Eintrag handelt es sich um den ersten von insgesamt drei Beiträgen zum Thema „Prozessautomatisierung mit BPMN und Activiti“.

Teil 2 der Artikel-Serie über die Modellierung und Einbindung eines BPMN-Prozesses finden Sie hier .

Im dritten und letzten Teil geht es um den Aufruf der Activiti Engine und seiner Services.

 

Bildquelle: Flickr.com nach Lizenzbestimmungen Creative Commons „CC BY 2.0„.