J'ai deux "tâches de service" synchrones distinctes dans le diagramme BPMN2.0 - "Action 1" et "Action 2". Après l'exécution réussie de "Action 1", un événement extérieur est attendu (une action en dehors du système géré par le moteur BPM). Après l'événement, "Action 2" doit être exécutée immédiatement (encore une fois, tâche de service synchrone). La partie compliquée pour moi est comment définir le délai d'attente pour l'événement, ce qui signifie que l'événement est attendu, mais seulement pour un certain temps (par exemple 1 minute) ... Ensuite, une gestion d'erreur timeout devrait être exécutée. Donc, l'action 2 doit être exécutée entre 0 et 60 secondes après l'action 1, dès que possible ou pas du tout.Evénement intermédiaire ou temporisateur en BPM
Une idée pour y parvenir sans utiliser de tâche asynchrone (voir la deuxième image)?
J'ai une idée (troisième photo), mais je ne sais pas si cela fonctionnerait comme prévu ...
Le schéma sera exécuté dans le moteur Activiti BPM ...
synchrone exécution
Async excecution
solution proposée
Je ne l'ai pas utilisé Activiti avant (je ne l'ai utilisé mon propre implémentations bpm), mais je pense que vous devriez être capable d'accomplir votre scénario en créant une séquence de: tâche de service java (action 1), tâche de réception java (attente d'un événement externe) et tâche de service java (action 2). Afin d'implémenter le délai d'attente sur la tâche de réception, vous devez attacher l'événement de limite de temporisation sur la tâche de réception java. –
merci, une question de plus - est-il possible d'implémenter la longueur de timeout en tant que variable pour instance de processus ou il doit être défini dans la spécification de processus (xml)? – tomas
Il semble être possible: http://www.activiti.org/userguide/#timerEventDefinitions –