Informations d'exécution

Les activités qui effectuent un travail lié à l'application (par opposition au travail avec le moteur de flux de travaux uniquement, tel que les activités d'acheminement et de processus de fin) nécessitent une limite transactionnelle transparente entre le moteur et le code d'application. Il s'avère également utile de posséder des appels asynchrones entre le moteur de flux de travaux et l'application (c'est-à-dire qu'un utilisateur ne devrait pas avoir à attendre que le flux de travaux passe à l'activité suivante avant que le contrôle ne lui soit renvoyé dans l'interface utilisateur).

Il existe trois fonctions différentes dans une activité de flux de travaux : start(), execute() et complete(). Après qu'une activité soit terminée dans l'instance du processus de flux de travaux, le moteur de flux de travaux appelle la fonction pour continuer le processus. Cette fonction évalue les transitions sortantes provenant de cette activité afin de déterminer laquelle ou lesquelles seront suivies.

Pour chaque activité à suivre, la fonction start() correspondante est appelée. Les données de l'instance d'activité appropriée sont ensuite configurées pour cette activité. Si l'activité doit être exécutée directement, sans messagerie JMS (l'API Java Message Service fait partie de Java EE), (à savoir qu'une activité d'acheminement est toujours exécutée directement car aucun travail lié à l'application n'est impliqué), la méthode execute() est appelée dans ce cas. Sinon, un message JMS est envoyé pour exécuter l'activité spécifiée (à savoir une activité automatique). Le gestionnaire de message de flux de travaux résout le processus et l'activité spécifiés dans le message et appelle la fonction execute() sur l'activité.

Après avoir appelé le code d'application pour réaliser le travail spécifié par l'activité, un autre message est envoyé pour terminer l'activité. Le gestionnaire de message de flux de travaux résout à nouveau le processus et l'activité spécifiés dans le message et appelle la fonction complete pour l'activité. Après avoir marqué l'activité comme terminée, la fonction permettant de continuer le processus est de nouveau appelée pour résoudre l'ensemble de transitions à suivre à partir de l'activité terminée et le processus redémarre.