Spring Boot + Camunda 7 – Exemple d’intégration

 L’intégration de Spring Boot avec Camunda 7 permet de créer des applications BPM robustes, synchrones et faciles à développer, où le moteur de processus est embarqué directement dans l’application Java.

Contrairement à Camunda 8, Camunda 7 fonctionne avec un process engine Java intégré, ce qui rend l’architecture plus simple pour les applications monolithiques ou les microservices internes.

Dans cet article, nous allons voir un exemple complet d’intégration Spring Boot + Camunda 7, avec BPMN et Service Task Java.


🔹 1. Architecture Camunda 7 + Spring Boot

Dans Camunda 7 :

  • Le moteur BPMN est embarqué dans Spring Boot

  • Les Service Tasks appellent directement du code Java

  • Les transactions sont synchrones

  • Les variables peuvent être des objets Java

👉 C’est une approche idéale pour :

  • projets on-premise

  • applications Spring classiques

  • équipes Java BPM


🔹 2. Prérequis

  • Java 11 ou 17

  • Spring Boot 2.x

  • Camunda 7.x

  • Maven

  • Camunda Modeler


🔹 3. Dépendances Maven

Ajoutez le starter Camunda 7 Spring Boot :

<dependency> <groupId>org.camunda.bpm.springboot</groupId> <artifactId>camunda-bpm-spring-boot-starter</artifactId> </dependency>

Optionnel (Webapps Camunda) :

<dependency> <groupId>org.camunda.bpm.springboot</groupId> <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId> </dependency>

🔹 4. Configuration (application.yaml)

camunda: bpm: admin-user: id: demo password: demo filter: create: All tasks

👉 Cela permet d’accéder à Cockpit / Tasklist / Admin.


🔹 5. BPMN – Service Task Java

Dans Camunda Modeler :

  1. Ajouter un Service Task

  2. Implementation : Java Class

  3. Classe :

com.example.camunda.service.PaymentService

🔹 6. Implémentation Java du Service Task

Exemple simple avec JavaDelegate

package com.example.camunda.service; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.JavaDelegate; import org.springframework.stereotype.Component; @Component public class PaymentService implements JavaDelegate { @Override public void execute(DelegateExecution execution) { String orderId = (String) execution.getVariable("orderId"); Double amount = (Double) execution.getVariable("amount"); String status = amount > 1000 ? "APPROVED" : "REVIEW"; execution.setVariable("paymentStatus", status); execution.setVariable("processedOrderId", orderId); } }

✅ Le code est exécuté dans la même transaction que le processus.


🔹 7. Démarrage du Processus

Exemple via REST API

POST /engine-rest/process-definition/key/order-process/start
{ "variables": { "orderId": { "value": "ORD-101", "type": "String" }, "amount": { "value": 1500, "type": "Double" } } }

🔹 8. Gestion des erreurs

Erreur technique (rollback)

throw new RuntimeException("Erreur de paiement");

➡ rollback de la transaction


Erreur BPMN (flux contrôlé)

throw new BpmnError("PAYMENT_FAILED");

➡ capturable par un Boundary Error Event dans BPMN


🔹 9. Avantages de Camunda 7 avec Spring Boot

✅ Architecture simple
✅ Transactions synchrones
✅ Accès direct aux objets Java
✅ Débogage facile
✅ Idéal pour monolithes et SI internes


🔹 10. Limites de cette approche

❌ Scalabilité limitée
❌ Couplage fort code ↔ processus
❌ Moins adaptée au cloud-native
❌ Migration requise vers Camunda 8 à long terme


✅ Conclusion

L’intégration Spring Boot + Camunda 7 est une solution mature, stable et efficace pour les applications BPM Java traditionnelles. Grâce au moteur embarqué et aux Service Tasks Java, elle permet un développement rapide et une maintenance simple.

Cependant, pour les architectures cloud-native et microservices, Camunda 8 devient la solution recommandée.

💼 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