Événements de workflow
Le système utilise deux types d’événements : les événements de plateforme enregistrés et les événements de workflow.
Événements de la plateforme enregistrés
Les événements enregistrés sont créés dans les règles métier et sont utilisés pour des tâches telles que l’envoi de notifications par e-mail lorsque des enregistrements sont insérés dans la base de données. Les événements de workflow sont enregistrés dans les workflows uniquement et ne sont utilisés nulle part ailleurs dans la plateforme. Les événements de plateforme enregistrés peuvent être déclenchés par un workflow à des fins externes, mais ne peuvent pas être utilisés dans le cadre d’un workflow.
Événements de workflow
Les événements de workflow suivent des règles différentes de celles des événements de plateforme enregistrés à l’aide du registre des événements. Les événements de la plateforme sont saisis dans la table Enregistrement d’événement [sysevent_register] et sont disponibles pour les processus de la plateforme. Les événements de workflow sont déclenchés exclusivement pour le moteur de workflow et sont utilisés uniquement pour diriger le travail d’exécution des contextes de workflow. Lorsqu’un événement est enregistré dans un workflow, il est joint à une activité en cours d’exécution dans la colonne registered_events de la table Activité d’exécution du workflow [wf_executing].
Les événements de workflow peuvent également être diffusés dans un workflow à partir de n’importe quelle source de script ayant accès au contexte du workflow, telle qu’un include de script ou une activité Exécuter un script . Dans ce cas, l’événement, tel que l’annulation, est transmis à tous les enregistrements de la table Exécution du workflow [wf_executing] pour un contexte spécifique.
Que ce soit par registre ou par diffusion, un événement est géré par la définition d’activité associée à l’activité en cours d’exécution. Chaque définition d’activité est associée à un ensemble de gestionnaires. Par exemple, la plupart des activités sont fournies avec des gestionnaires d’événements onExecute, onCancel et onUpdate . À titre d’exemple d’événement plus spécifique, l’activité Approbation - Utilisateur est également associée à onDetermineApprovalState, qui est spécifique au travail de l’activité d’approbation.
Plusieurs événements parallèles
Un même workflow peut avoir plusieurs threads d’événements s’exécutant simultanément, par exemple lorsqu’un workflow possède des minuteurs qui se chevauchent sur des branches de workflow distinctes. Si un thread supplémentaire se termine avant le premier thread, le système stocke les informations d’événement du thread supplémentaire dans la table Commandes en file d’attente du workflow [wf_command]. Une fois le premier thread terminé, le système récupère les informations stockées par le thread supplémentaire et poursuit le workflow avec les informations d’événement de chaque thread.