TL;DR;

Der einfachste Weg um Prozesse in einer Camunda Anwendung (auf Spring Boot Basis) zu deployen, ist sie irgendwo unter

/src/main/resources

abzulegen.

Nachdem ich in meinem letzten Artikel gezeigt habe wie wir Camunda mit Hilfe von Spring Boot zum laufen bekommen, ist es jetzt an der Zeit unseren ersten Prozess zu deployen.

Dafür benötigen wir:

  • Eine lauffähige Spring Boot Anwendung mit integrierter Workflow Engine (z.B. aus meinem letzten Artikel)

  • Den Camunda Modeler um einen ersten Prozess zu modellieren.

Theorie

Bevor wir anfangen können sollte ich vielleicht kurz erklären, was sich hinter dem Begriff „Deployment“ verbirgt.

Die Entwicklung eines Prozesses beginnt immer mit der Erstellung eines BPMN Modells. Dieses wird normalerweise in einem grafischen Modeler erstellt. Theoretisch ist es aber auch möglich diese mit einem Texteditor zu erstellen, da BPMN Modelle immer als XML Dateien gespeichert werden.

Damit ein so erstellter Prozess von Camunda ausgeführt werden kann, muss er vorher in der Engine deployed werden. Dabei wird von Camunda eine „Process Definition“ erzeugt und in der Datenbank gespeichert.

Process Definitions werden von Camunda automatisch anhand ihrer ID versioniert. Das bedeutet dass bei jedem Deployment eine neue Versionsnummer für unseren Prozess erzeugt wird. Das ist notwendig, weil es durchaus üblich ist, dass es zum Zeitpunkt des Deployments noch laufende Prozessinstanzen mit der alten Version gibt.

Soviel zur Theorie. Jetzt können wir damit beginnen unseren ersten Prozess zu deployen.

Den Prozess modellieren

Bevor wir einen Prozess deployen können, müssen wir diesen erstmal modellieren. Camunda bietet dafür einen kostenlosen BPMN Modeler an:

https://camunda.com/download/modeler/

Nachdem wir den Modeler heruntergeladen und installiert haben, klicken wir im Menü auf „Create new BPMN Diagramm“. Der Modeler erzeugt nun einen neuen Prozess, welcher erstmal nur ein Start Event enthält.

Da es uns um das Deployment von Prozessen geht, fügen wir einfach ein neues End Event hinzu und verbinden dieses mit dem Start Event. Das ganze sollte dann ungefähr so aussehen:

Außerdem geben wir dem Prozess gleich noch einen Namen und eine ID. Dafür klicken wir auf eine freie Stelle im Prozess und geben die entsprechenden Werte rechts in den Eigenschaften ein.

Jetzt speichern wir das Ganze ab und schon haben wir unseren ersten, wenn auch sehr rudimentären, Prozess modelliert.

Deployment über Resources

Durch die Integration von Camunda und Spring Boot ist es super einfach ein Prozessmodell zu deployen. Alles was wir dafür tun müssen, ist das Modell in unserem Projekt unter /src/main/resources abzulegen. Der Ordnung wegen lege ich die Prozesse immer in einen Unterordner mit dem Namen bpmn, aber dass ist jedem selbst überlassen und hat keine Auswirkung auf das Deployment.

Wenn wir jetzt unsere Anwendung starten, sollten wir im Log einen Eintrag zum Deployment unseres Modells sehen:

STARTER-SB021 Auto-Deploying resources: [file [/Users/Sascha/Repositories/camunda-demos/model-deployment/target/classes/bpmn/MyProcess.bpmn]]

Außerdem sollte der Prozess jetzt auch im Cockpit in der Liste der verfügbaren Prozess Definitionen erscheinen. Diese können wir über den folgenden Link aufrufen:

http://localhost:8080/app/cockpit/default/#/processes

Andere Deployment Möglichkeiten

Neben der einfachen Methode des deployments über die Resources, gibt es auch noch ein paar andere Möglichkeiten. Ich werde diese hier nicht genauer Beschreiben, sondern einfach nur die entsprechenden Dokumentation verlinken.

Die Camunda REST API bietet den Endpunkt /deployments/create welcher verwendet werden kann um Prozessmodelle zur Engine zu überragen.

https://docs.camunda.org/manual/latest/reference/rest/deployment/post-deployment/

Natürlich ist auch über die Java API möglich einen Prozess zu deployen:

https://docs.camunda.org/javadoc/camunda-bpm-platform/7.10/org/camunda/bpm/engine/RepositoryService.html#createDeployment–

Mit der kommerziellen Version von Camunda ist es außerdem möglich, einen Prozess direkt im Browser über das Cockpit hochzuladen und zu deployen.

Nachdem wir jetzt wissen wie wir eine Camunda Anwendung aufsetzen und Prozesse deployen, können wir im nächsten Schritt mit der Modellierung und Implementierung unseres ersten richtigen Prozesses beginnen.

Das entsprechende Projekt zu diesem Artikel liegt wie immer in Bitbucket: https://bitbucket.org/pragtics/camunda-demos/src/master/model-deployment/