Exemple d’intégration Spring Boot + Camunda 8

L’intégration de Spring Boot avec Camunda 8 permet de construire des applications de workflow modernes, cloud-native et hautement scalables. Contrairement à Camunda 7, Camunda 8 repose sur une architecture découplée, où les processus BPMN sont exécutés par le moteur Zeebe et la logique métier est implémentée via des Job Workers externes.

Dans cet article, nous verrons un exemple simple et complet d’intégration entre Spring Boot et Camunda 8.


🔹 1. Principe d’architecture Camunda 8

Dans Camunda 8 :

  • Le processus BPMN est déployé sur le moteur Zeebe

  • Les Service Tasks génèrent des Jobs

  • Les Job Workers Spring Boot consomment ces jobs

  • La communication est asynchrone et événementielle

👉 Il n’y a plus de moteur BPM embarqué dans l’application Spring Boot.


🔹 2. Prérequis

  • Java 17+

  • Spring Boot 3+

  • Camunda 8 (Self-Managed ou SaaS)

  • Camunda Modeler

  • Maven


🔹 3. Dépendance Maven

Ajoutez le starter Camunda 8 :

<dependency> <groupId>io.camunda</groupId> <artifactId>spring-boot-starter-camunda</artifactId> </dependency>

Cette dépendance fournit :

  • le client Zeebe

  • l’annotation @JobWorker

  • l’intégration Spring Boot native


🔹 4. Configuration Spring Boot (Self-Managed)

camunda: client: mode: self-managed zeebe: gateway-address: 127.0.0.1:26500 auth: enabled: false

📌 Pour Camunda 8 SaaS, une configuration OAuth est nécessaire.


🔹 5. Configuration BPMN

Dans Camunda Modeler :

  1. Créer un Service Task

  2. Implementation : Job Worker

  3. Type : order-worker

  4. Retries : 3

👉 Le type BPMN doit correspondre exactement au type du worker Java.


🔹 6. Implémentation du Job Worker Spring Boot

Exemple Java avec @JobWorker

package com.example.worker; import io.camunda.zeebe.client.api.response.ActivatedJob; import io.camunda.zeebe.spring.client.annotation.JobWorker; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; @Component public class OrderWorker { @JobWorker(type = "order-worker", autoComplete = true) public Map<String, Object> handle(final ActivatedJob job) { Map<String, Object> vars = job.getVariablesAsMap(); String orderId = (String) vars.get("orderId"); Double amount = ((Number) vars.get("amount")).doubleValue(); String status = amount > 1000 ? "APPROUVÉ" : "À_VÉRIFIER"; Map<String, Object> output = new HashMap<>(); output.put("orderStatus", status); output.put("orderId", orderId); return output; } }

✅ Les variables retournées sont automatiquement enregistrées dans le processus.


🔹 7. Gestion des erreurs et retries

Retry automatique (exception)

if (amount == null) { throw new RuntimeException("Montant manquant"); }
  • Les retries diminuent automatiquement

  • Un Incident est créé dans Operate si les retries atteignent zéro


🔹 8. Lancer l’exemple

  1. Démarrer Camunda 8 (Docker Compose)

  2. Déployer le BPMN

  3. Démarrer un processus avec les variables :

{ "orderId": "ORD-1001", "amount": 1500 }
  1. Lancer l’application Spring Boot

  2. Vérifier l’exécution dans Operate


🔹 9. Problèmes fréquents

  • Type BPMN ≠ type @JobWorker

  • Mauvaise adresse du gateway

  • Application Spring Boot arrêtée

  • Variables absentes ou mal typées


✅ Conclusion

L’intégration Spring Boot + Camunda 8 permet de créer des solutions BPM modernes, robustes et évolutives. Grâce aux Job Workers, la logique métier est clairement séparée des processus, ce qui facilite la maintenance, la montée en charge et l’architecture microservices.

💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM), DMN/Drools.

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup