Home > Workflow

Définition du workflow


Définir une procédure

Une procédure se définit en trois actes, au sein de la branche Workflow - définitions :

L'image ci-après illustre cette définition :

Définition

Déclaration des étapes

Une étape est rattachée à une procédure, elle est décrite par un identifiant unique au sein de la procédure.

L'étape est ensuite spécialisée par des propriétés spécifiques à son type (un objet spécifique par type). Une étape est associée à un seul type.

Tâches automatiques

Deux types de tâches automatiques sont disponibles : 

Tâches automatiques de la bibliothèque de classes

Les tâches automatiques de la bibliothèque de classes sont des classes étendant ScriptTaskBean .

La méthode executeScript() est appelée dès que la procédure arrive à l'étape correspondant à cette tâche, comme montré dans l'exemple suivant . Cette méthode ne doit pas lancer de Thread car le workflow avance au retour de cette méthode. Il faut donc que tout le traitement nécessaire soit inclus dans cette méthode, et ce de manière synchrone.

Il est possible d'alimenter des variables du bean dynamiquement. Pour cela, il faut que le bean suive la recommandation JavaBean sur la notion de setter. Les variables doivent être déclarées comme paramètres du bean dans module.xml. Le contexte de données n'est pas accessible dans le Java Bean.

EBX.Platform fournit des tâches automatiques natives : 

Tâches automatiques spécifiques

Les tâches automatiques spécifiques sont des classes étendant ScriptTask .

La méthode executeScript() est appelée dès que la procédure arrive à l'étape correspondant à cette tâche comme montré dans l'exemple suivant . Cette méthode ne doit pas lancer de Thread car le workflow avance au retour de cette méthode. Il faut donc que tout le traitement nécessaire soit inclus dans cette méthode, et ce de manière synchrone.

Il n'est pas possible de modifier la valeur des variables du bean de façon dynamique pour les tâches automatiques spécifiques. En revanche, le contexte de données est directement accessible dans le Java Bean.

Conditions

Deux types de condition sont disponibles : 

Conditions de la bibliothèque de classes

Les conditions doivent étendre ConditionBean comme dans l'exemple suivant .

Il est possible d'alimenter dynamiquement des variables du bean. Pour cela, il faut que le bean suive la recommandation JavaBean sur la notion de setter. Les variables doivent être déclarées comme paramètres du bean dans module.xml. Le contexte de données n'est pas accessible dans le Java Bean.

EBX.Platform fournit des conditions natives : 

Conditions spécifiques

Les conditions doivent étendre Condition comme dans l'exemple suivant .

Il n'est pas possible de modifier la valeur des variables du bean de façon dynamique pour conditions spécifiques. En revanche, le contexte de données est directement accessible dans le Java Bean.

Tâches manuelles

Les tâches manuelles sont des classes étendant UserTask .

La méthode handleCreate est appelée pour initier la transaction utilisateur. Cette méthode va créer et allouer autant de bons de travail que nécessaire : si cette méthode n'est pas surchargée, le comportement par défaut est d'utiliser la liste de profils sélectionnés. Concrètement, pour chaque profil sélectionné, un bon de travail est créé.

A l'exécution, par défaut, la tâche utilisateur est considérée comme terminée quand chaque bon de travail est accepté. Il est possible de modifier ce comportement en sélectionnant une autre stratégie de terminaison : 

Si aucun seuil d'erreur n'est défini pour la tâche utilisateur, le workflow s'arrête si un bon de travail est rejeté à l'exécution : ce champ définit le nombre de rejets qui est toléré à l'exécution. Une exception est faite pour les stratégies qui gèrent le rejet ( 'Terminer la tâche utilisateur dès que tous les bons de travails sont terminés' et 'Terminer la tâche utilisateur dès que tous ses bons de travail sont acceptés ou dès qu'un bon de travail est rejeté' ). Pour ces stratégies, les rejets sont toujours tolérés.

La méthode handleCreate peut être surchargée si nécessaire comme dans l'exemple suivant .

Une tâche utilisateur correspond à un Manager Component

Services natifs

Les services suivants sont fournis nativement :

UI services spécifiques

En plus des services natifs, l'utilisateur peut définir un service UI spécifique sur une adaptation, une branche ou une version.

Déclaration d'un UI service

Les services UI spécifiques doivent être déclarés dans module.xml pour être rendus disponibles dans la définition des tâches manuelles, comme dans l'exemple suivant .

Pour des informations supplémentaires, voir également InteractionHelper .

Extension de service

Il est possible d'étendre des services dans module.xml. L'extension de service est disponible pour tous les types de service (natifs, module, d'adaptation). Grâce au mécanisme d'extension, l'utilisateur peut créer un nouveau service à partir d'un service existant avec ses propres libellé et description et des propriétés supplémentaires. De cette manière, l'utilisateur a la possibilité d'ajouter des paramètres spécifiques à des services natifs (uniquement des paramètres d'entrée pour les services natifs).

Sauf pour les services natifs, l'extension du service et le service étendu doivent être déclarés dans le même fichier module.xml.

Les extensions de service ne peuvent pas être étendues à leur tour. La surcharge des propriétés n'est pas permise.

Pour des informations supplémentaires, voir également InteractionHelper .

Variables en entrée

Les noms de ces variables correspondent aux variables d'entrée du service à appeller. Elles sont automatiquement affichées quand l'utilisateur sélectionne un service dans la liste déroulante (l'affichage est basé sur la déclaration du service dans module.xml).

La valorisation peut correspondre soit à une variable issue du DataContext sous la forme ${variable}, soit à une constante.

Variables en sortie

La valeur correspond au mapping à réaliser dans le DataContext. Ainsi, le paramètre en sortie xpath peut correspondre à code dans le DataContext.

Les variables de sortie sont automatiquement affichées quand l'utilisateur sélectionne un service dans la liste déroulante (l'affichage est basé sur la déclaration du service dans module.xml).

Rejet optionnel

Par défaut, le rejet est désactivé. Dans ce mode, seul le bouton 'Accepter' est affiché durant l'exécution des bons de travail.

Il est possible d'activer le rejet pour une tâche manuelle, dans l'écran de définition d'une tâche manuelle.

Tâches temporelles

Le workflow fournit deux fonctionnalités pour contrôler que les tâches manuelles sont terminées à temps.

Relance mail

Il est possible de spécifier une périodicité pour la relance mail (en jours). Quand le temps de la période indiquée est dépassé, une notification de travail à effectuer est envoyée de nouveau pour les tâches manuelles qui ne sont pas terminées. La relance mail a lieu tant que la tâche n'est pas terminée (au maximum un rappel par jour).

Date limite

Une tâche manuelle peut avoir une date limite. Quand cette date est atteinte, et que la tâche n'est pas terminée, un mail spécifique est envoyé aux utilisateurs concernés, afin de les alerter. Une fois la date limite atteinte, un mail est envoyé une fois par jour.

La périodicité des contrôles peut être spécifiée : pour plus d'information, voir la configuration du workflow.

Il y a deux types de date limite : 

Lien entre les étapes

Deux étapes peuvent être reliées entre elles. Une relation peut être qualifiée de trois manières différentes :

Home > Workflow