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


📌 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.


💼 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     


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