Nous modélisons des processus avec BPM et exécutons ledit BPM avec le moteur Camunda dans un environnement Spring. Dans un scénario, j'aimerais exécuter du code Java personnalisé entre deux tâches utilisateur. Ma conclusion de la lecture de nombreuses documentations de Camunda est que je suis mieux avec le concept de tâche de service.
J'aimerais faire deux choses, l'une est de stocker plus d'une variable de processus avec la tâche de service et deux, de définir de manière dynamique quelles variables de processus correspondent à quel paramètre d'entrée de la tâche de service.
À ma connaissance, Camunda propose deux façons d'intégrer du code Java avec des tâches de service :
1.) Déclarer un Spring-Bean implémentant l'interface JavaDelegate. (La méthode reçoit un DelegateExecution en tant que paramètre). Celui-ci me permettrait de stocker autant de variables de résultat que je le souhaite, mais je ne vois pas d'option pour définir une correspondance variable de processus -> variable d'entrée.
2.) Déclarer un bean Spring générique pour être accessible par Camunda et définir que la méthode de ce bean doit être exécutée par la tâche système. Cela me permet de spécifier le modèle de correspondance variable de processus -> variable d'entrée via la définition BPM, mais stocke au plus une variable de résultat.
Alors, y a-t-il un moyen d'atteindre les deux?
Clarification
Pour clarifier mes exigences, parfois mes tâches système peuvent détecter un état incohérent (dans la base de données ou les variables de processus). J'aimerais que les tâches stockent un code d'erreur (similaire aux codes d'erreur des programmes "exit(1)") dans les variables de processus afin que les tâches utilisateur suivantes aient la possibilité de corriger l'erreur. Ce code d'erreur pourrait également être stocké à un emplacement fixe dans les variables de processus, cependant je veux pouvoir au moins mettre un "résultat réel" dans un emplacement désigné.