Camunda Job Executor vs External Task — Comparaison Complète & Bonnes Pratiques

 Une question très fréquente chez les développeurs Camunda :

Faut-il utiliser Java Delegate (Job Executor) ou External Task (Worker) ?

Les deux exécutent des Service Tasks…
Mais leur architecture et leur comportement en production sont totalement différents.

Un mauvais choix peut provoquer :

  • threads bloqués

  • timeouts

  • incidents moteur

  • impossibilité de scaler


Différence Conceptuelle

CaractéristiqueJob ExecutorExternal Task
ExécutionDans le moteurHors moteur
LangageJava uniquementMulti-langage
ScalabilitéLimitéeTrès élevée
Gestion d’erreurIncidentRetry
Microservices

1) Job Executor (Java Delegate)

Le moteur exécute le code dans son propre pool de threads.

Exemple

public class PaymentDelegate implements JavaDelegate {
public void execute(DelegateExecution execution) {
paymentService.charge();
}
}

Avantages

✔ Simple
✔ Rapide
✔ Idéal pour accès base de données

Problèmes en production

❌ API longues bloquent le moteur
❌ Crash moteur = jobs perdus
❌ Scalabilité difficile


2) External Task (Worker)

Le moteur crée une tâche.
Un worker externe l’exécute.

Exemple

client.subscribe("charge-payment")
.handler((task, service) -> {
paymentService.charge();
service.complete(task);
});

Avantages

✔ Microservices ready
✔ Retry automatique
✔ Scalabilité horizontale
✔ Multi-langage

Inconvénient

Un peu plus lent qu’un delegate local.


Comportement en cas d’échec (Différence Critique)

SituationJob ExecutorExternal Task
Timeout APIIncidentRetry
Worker crashBloquéRepris
Restart moteurPerduSécurisé
Réseau instableIncidentRécupérable

Quand utiliser quoi

Utiliser Job Executor si

  • logique interne

  • opérations rapides

  • accès base locale

Utiliser External Task si

  • API REST

  • paiement

  • email / SMS

  • IA

  • microservices


Recommandation d’Architecture

Moteur BPMN = Orchestrateur
Workers = Logique métier

Ne jamais mettre une logique lourde dans le moteur.


Erreur fréquente en production

Appeler une API REST dans un JavaDelegate

Résultat → blocage du Job Executor

Toujours utiliser External Task pour les IO.


📚 Lectures recommandées

Pour améliorer la stabilité de vos workflows :

👉 https://shikhanirankari.blogspot.com/search/label/French

Articles utiles :

Ces sujets impactent directement le choix du mode d’exécution.


Conseil Final

Job Executor = Automatisation embarquée
External Task = Automatisation distribuée

Les architectures modernes privilégient External Task.


💼 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, Flowable), 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

OOPs Concepts in Java | English | Object Oriented Programming Explained

Scopes of Signal in jBPM

jBPM Installation Guide: Step by Step Setup