Camunda ? Kézako ?
Camunda est une plateforme open source de workflow et de processus métier qui permet aux organisations de modéliser, d’exécuter et de surveiller leurs processus de manière efficace, offrant une grande flexibilité et une intégration facile avec d’autres systèmes. Elle est conçue pour supporter les normes BPMN (Business Process Model and Notation) et DMN (Decision Model and Notation), ce qui facilite la collaboration entre les équipes métier et techniques.
Pourquoi utiliser Camunda ?
La solution Camunda ne représente pas une seule application mais comprend un ensemble de composants dont :
- Camunda Modeler: Un outil de modélisation de processus qui permet aux utilisateurs de créer et de visualiser des processus métier à l’aide de la notation BPMN. Les utilisateurs peuvent créer des modèles de processus, les valider et les exporter pour une exécution sur la plateforme Camunda.
- Camunda Engine: Le cœur de la plateforme Camunda, responsable de l’exécution des processus. Il prend en charge les processus définis avec BPMN et DMN, permettant une grande flexibilité dans la gestion des règles de décision et des flux de travail.
- Camunda Cockpit: L’interface qui permet aux administrateurs de suivre l’exécution des processus, d’identifier les potentiels blocages et de prendre des mesures correctives. Il offre des fonctionnalités de reporting et d’analyse pour améliorer la compréhension des processus métier et optimiser leur exécution.
- Camunda Tasklist: L’application qui permet aux utilisateurs d’interagir avec les processus en cours, leur donnant la possibilité d’effectuer des tâches manuelles assignées à leur rôle dans le processus. Les utilisateurs peuvent consulter leurs tâches, les traiter et les compléter, tout en bénéficiant d’une interface utilisateur intuitive et personnalisable.

L’écosystème riche de Camunda permet une large flexibilité dans les fonctionnalités qu’il est possible d’implémenter. De plus, il n’est pas nécessaire d’installer toute la suite afin de faire fonctionner Camunda.
Exemple d’implémentation
Camunda peut s’installer de plusieurs manières, par exemple avec Docker, en application standalone ou en l’intégrant dans une application Spring Boot.
Par la suite, nous allons voir un exemple d’implémentation dans un projet Maven/Spring Boot.
La version majeure de Camunda utilisée ici est la version 7. Il existe une version 8 plus adaptée pour des solutions cloud-native.
Tout d’abord, ajouter ces dépendances dans le pom.xml :


Ensuite, générer un fichier BPMN via Camunda Modeler :
Il est possible de renseigner directement dans le fichier BPMN des informations telles que :
- Le nom du workflow : permet de différencier le workflow à appeler s’il y en a plusieurs. Camunda ne se base pas sur le nom du fichier mais sur l’identifiant du workflow

- Les conditions à respecter pour que le workflow puisse avancer
- Les différents services Java à appeler pour effectuer les traitements adéquats
Une fois le BPMN généré, l’importer dans le projet dans le dossier src/main/resources ou un sous-dossier spécifique. Camunda va scanner le dossier pour rechercher les fichiers « .bpmn » existants. Lancer un « clean install » afin que Camunda prenne en compte les nouveaux fichiers.
Pour initier une instance dans le workflow créé (étape 1), passer par le service « RuntimeService » de Camunda :

Dans le cas de routage exclusif (étape 2), un contrôle est effectué selon la condition indiquée pour chaque flèche sortant du routage :

Ici, la condition se fait selon la valeur de la variable « typeReclamation ». Il est bien entendu possible de combiner plusieurs conditions.
Dans le cas d’une « user task » (étape 3), Camunda sera en attente d’une notification de l’application pour continuer à dérouler le workflow :
Ici, on initialise la variable « remboursementAutorise » qui est utilisé par le routage succédant la tâche.
Il est également possible d’appeler des services qui ne nécessitent aucune intervention humaine (étape 4).
Pour ceci, on peut par exemple implémenter l’interface « JavaDelegate » de Camunda :
L’objet « delegateExecution » contient toutes les informations techniques du workflow, ainsi que l’état des variables selon l’avancement du workflow. Le lien de la classe « delegate » avec le workflow se fait à l’aide de l’annotation @Component, dont la valeur doit correspondre à celle indiquée dans le BPMN :

Enfin, lorsque l’exécution du workflow atteint l’étape finale (étape 5), l’instance du workflow est clôturée. On peut appeler des services si besoin.
Remarque: Si le workflow nécessite une mise à jour, il est nécessaire de recompiler le projet avec la nouvelle version. Les process déjà instanciés continueront néanmoins dans la version du workflow à laquelle ils ont été initiés.
Camunda propose néanmoins une version payante (Camunda Enterprise) qui permet de gérer la migration des process vers les nouveaux workflows.
Suivi sur Camunda Cockpit
Une fois que des instances Camunda ont été instanciées, il est possible de les suivre sur le cockpit (accessible par exemple depuis http://localhost:8080/camunda/app/) :

L’interface propose une vue globale sur le workflow déployé et où se positionnent toutes les instances qui ont été démarrées sur une version donnée. Les précédents workflows déployés et non nettoyés restent également accessibles.
Il est possible d’accéder au détail de chaque instance et de vérifier l’état des variables à un instant t :

Pour aller plus loin
L’exemple ci-dessus ne présente que quelques fonctionnalités parmi tout ce que propose Camunda. Il est possible de prendre en compte les erreurs et les traiter en conséquence, ajouter des contrôles temporels, imbriquer des sous-workflows au sein d’un workflow principal.
N’hésitez pas à jeter un coup d’œil à la documentation et visionner les nombreux tutoriels qu’ils proposent.
Également, deux fois par an, une conférence est organisée (la CamundaCon) afin de présenter et discuter des nouveautés concernant l’orchestration des processus et l’automatisation avec des sessions techniques et des présentations de cas concrets.
Parmi les grands noms utilisant Camunda, on peut y retrouver notamment AT&T, Generali, Zalando ou encore Universal Music Group.
Conclusion
Camunda offre une palette diversifiée d’outils permettant d’implémenter des processus métiers complexes basés sur des standards reconnus, une partie des fonctionnalités étant cependant payante. Les différentes interfaces proposées facilitent le suivi des processus après déploiement. La prise en main peut néanmoins être difficile et il sera important de bien poser la conception des processus avant de les implémenter. L’utilisation de Camunda peut être lourde pour des petits projets mais peut être plus pertinente sur une application en microservices par exemple.