Spring Boot + Camunda External Task Pattern (Guide complet)

 Dans les workflows d’entreprise, la logique métier longue ne doit pas s’exécuter dans le moteur BPM.

Camunda utilise le External Task Pattern : un worker récupère les tâches et les traite indépendamment.

C’est la meilleure approche pour intégrer des microservices avec BPM.

Dans ce guide vous apprendrez :

  • Qu’est-ce qu’un External Task

  • Pourquoi l’utiliser

  • Implémentation avec Spring Boot

  • Bonnes pratiques production



Cette architecture est couramment utilisée dans les environnements microservices modernes.

👉 environnements microservices modernes


📌 Qu’est-ce que l’External Task Pattern ?

Dans Camunda Platform, une Service Task peut être exécutée à l’extérieur du moteur.

Au lieu que le moteur appelle un service →
le worker récupère (pull) la tâche.

Donc le moteur ne bloque jamais.


🖼️ Architecture External Task


🧠 Pourquoi utiliser External Tasks ?

Service Task classique :

Moteur appelle service directement
→ Couplage fort
→ Blocage en cas d’erreur

External Task :

Worker récupère la tâche
→ Couplage faible
→ Retry possible
→ Très scalable


🛠 Étape 1 : Créer Service Task externe

Dans Modeler :

Service Task → Type = External

Nom du topic :

payment-service

Camunda attend maintenant un worker.


🛠 Étape 2 : Dépendance Spring Boot

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

🛠 Étape 3 : Configuration

camunda: bpm: client: base-url: http://localhost:8080/engine-rest async-response-timeout: 10000

🛠 Étape 4 : Worker Java

@Component @ExternalTaskSubscription("payment-service") public class PaymentWorker implements ExternalTaskHandler { @Override public void execute(ExternalTask task, ExternalTaskService service) { String orderId = task.getVariable("orderId"); System.out.println("Paiement pour " + orderId); service.complete(task); } }

Le worker interroge automatiquement Camunda.


🖼️ Cycle d’exécution


🔁 Gestion des erreurs

service.handleFailure( task, "Erreur paiement", "Timeout gateway", 3, 60000 );

Camunda réessaiera automatiquement.


🔐 Lock Duration

Le worker verrouille la tâche pendant le traitement.

Empêche plusieurs workers de traiter la même tâche.


🧪 Flux complet

  1. Le processus atteint la service task

  2. Camunda crée external task

  3. Worker récupère

  4. Worker traite

  5. Worker complète

  6. Processus continue


⚠️ Erreurs fréquentes

❌ Lock trop court
❌ Pas de retry
❌ Logique métier dans moteur
❌ Appels bloquants


🏆 Bonnes pratiques

✔ Plusieurs workers
✔ Services idempotents
✔ Retry configuré
✔ Microservices séparés
✔ Monitoring erreurs


🎯 Quand utiliser External Tasks ?

Utiliser pour :

  • Microservices

  • APIs externes

  • Traitements longs

  • Paiements

  • Intégrations tierces

Éviter pour :

  • Logique simple Java

  • Traitements courts


🎯 Conclusion

L’External Task Pattern rend Camunda :

  • Scalable

  • Résilient

  • Adapté aux microservices

C’est l’approche recommandée en production.


📚 Lecture 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).

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

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


🎥 Learn IT with Shikha on YouTube

Prefer learning through videos? Watch practical tutorials on Kafka, Camunda, Alfresco, Java, Spring Boot, Microservices and Enterprise Architecture.

▶ Subscribe to Learn IT with Shikha on YouTube

Comments

Popular posts from this blog

Top 50 Camunda BPM Interview Questions and Answers for Developers (2026 Guide)

10 BPMN Best Practices Every Camunda Developer Should Know

OOPs Concepts in Java | English | Object Oriented Programming Explained