Ein Überblick über die Integration von Spring in Activiti

Dreamteam für BPM-Projekte

Matthias Hüller


In diesem Artikel soll gezeigt werden, an welchen Stellen Spring in Activiti integriert wurde und welche Features bei der Implementierung von BPMN-2.0-Prozessen helfen. Dabei werden die einzelnen Punkte jeweils durch einfache Codebeispiele beschrieben. Das vollständige Beispielprojekt ist über GitHub [3] als Maven-Projekt abrufbar.

Als das Activiti-Projekt im Jahr 2010 von Alfresco gestartet wurde, war direkt auch SpringSource als Partner mit im Boot. So verwundert es wenig, dass das Spring Framework sehr gut in Activiti integriert ist und umgekehrt auch Activiti selbst sehr einfach in bestehenden Spring-Projekten eingesetzt werden kann. Der offizielle Activiti User Guide [4] gibt dabei bereits einen guten Überblick über die Spring-Integration. Außerdem enthält das Activiti Download Package das Beispielprojekt „activiti-spring-examples“, das verschiedene Features der Spring-Integration exemplarisch vorstellt. Nachfolgend sollen bestimmte Eigenheiten dieser Spring-Integration genauer vorgestellt und auch auf Best Practices aus dem Projektalltag hingewiesen werden.

ProcessEngineFactoryBean als Startpunkt

Um Activiti in ein bestehendes Spring-Projekt zu integrieren, reicht es zunächst, die beiden Bibliotheken activiti-engine.jar und activiti-spring.jar zum Classpath der Anwendung (z. B. WEB-INF/lib einer WAR) hinzuzufügen. Der eigentliche Einstiegspunkt für die Spring-Integration ist jedoch die Klasse ProcessEngineFactoryBean, die als normale Spring Bean definiert wird und die ProcessEngine als Herz von Activiti erstellt. Deren Konfiguration erfolgt über die Bean SpringProcessEngineConfiguration, über die alle Einstellungen der Engine – wie z. B. die Data Source, der Transaction Manager oder auch die Deployment Resources – konfiguriert werden können (Listing 1). Die Deployment Resources erlauben es unter anderem, den Pfad zu BPMN-2.0-Prozessdateien zu definieren, die beim Start der Engine automatisch deployt werden. Dabei werden doppelte Deployments von nicht geänderten Prozessen verhindert, was insbesondere in frühen Entwicklungsphasen und für Unit Tests sinnvoll ist, in denen der Spring Context laufend neu gestartet wird.

Listing 1

Ein Überblick über die Integration von Spring in Activiti

Dreamteam für BPM-Projekte

Matthias Hüller


In diesem Artikel soll gezeigt werden, an welchen Stellen Spring in Activiti integriert wurde und welche Features bei der Implementierung von BPMN-2.0-Prozessen helfen. Dabei werden die einzelnen Punkte jeweils durch einfache Codebeispiele beschrieben. Das vollständige Beispielprojekt ist über GitHub [3] als Maven-Projekt abrufbar.

Als das Activiti-Projekt im Jahr 2010 von Alfresco gestartet wurde, war direkt auch SpringSource als Partner mit im Boot. So verwundert es wenig, dass das Spring Framework sehr gut in Activiti integriert ist und umgekehrt auch Activiti selbst sehr einfach in bestehenden Spring-Projekten eingesetzt werden kann. Der offizielle Activiti User Guide [4] gibt dabei bereits einen guten Überblick über die Spring-Integration. Außerdem enthält das Activiti Download Package das Beispielprojekt „activiti-spring-examples“, das verschiedene Features der Spring-Integration exemplarisch vorstellt. Nachfolgend sollen bestimmte Eigenheiten dieser Spring-Integration genauer vorgestellt und auch auf Best Practices aus dem Projektalltag hingewiesen werden.

ProcessEngineFactoryBean als Startpunkt

Um Activiti in ein bestehendes Spring-Projekt zu integrieren, reicht es zunächst, die beiden Bibliotheken activiti-engine.jar und activiti-spring.jar zum Classpath der Anwendung (z. B. WEB-INF/lib einer WAR) hinzuzufügen. Der eigentliche Einstiegspunkt für die Spring-Integration ist jedoch die Klasse ProcessEngineFactoryBean, die als normale Spring Bean definiert wird und die ProcessEngine als Herz von Activiti erstellt. Deren Konfiguration erfolgt über die Bean SpringProcessEngineConfiguration, über die alle Einstellungen der Engine – wie z. B. die Data Source, der Transaction Manager oder auch die Deployment Resources – konfiguriert werden können (Listing 1). Die Deployment Resources erlauben es unter anderem, den Pfad zu BPMN-2.0-Prozessdateien zu definieren, die beim Start der Engine automatisch deployt werden. Dabei werden doppelte Deployments von nicht geänderten Prozessen verhindert, was insbesondere in frühen Entwicklungsphasen und für Unit Tests sinnvoll ist, in denen der Spring Context laufend neu gestartet wird.

Listing 1

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang