Modèle de transitions
Maarch Digital Flow permet de définir des circuits pour les entités gérées dans l'application, afin de modéliser les différentes étapes de leur cycle de vie au plus près des besoins des différents métiers.
Tous les objets gérés dans l'application possèdent un circuit par défaut qui comporte 4 états de base qui autorisent 5 transitions.
Dans Maarch Digital Flow, la description du circuit des objets et les contraintes applicables sont décrites par des modèles de transitions gérés par l'administrateur. Ces définitions sont ensuite utilisées dans les différentes sections d'administrations des entités.
Accès aux modèles
La section Modèle de transitions de l'administration permet de créer et gérer les modèles. L'administrateur habilité l'utilise pour lister les modèles existants, les gérer et en ajouter de nouveaux.
La liste des modèles de transitions présente en tableau les informations suivantes :
| Attribut | Triable | Filtrable |
|---|---|---|
| Date de création | Oui | - |
| identifiant du cycle de vie | Oui | Oui |
| Libellé | Oui | Oui |
Cette liste peut-être triée.
Cliquer sur l'en-tête de la colonne pour un tri ascendant. Cliquer à nouveau pour un tri descendant.
Cette liste peut être filtrée selon différents critères.
Il suffit de cliquer sur le filtre voulu et de saisir tout ou partie du texte recherché.
Cette liste peut-être exportée au format CSV.
Double cliquer sur une ligne pour en afficher le détail.
Cliquer sur l'action "Ajouter un modèle" pour créer un nouveau type.
Propriétés des modèles de transitions
| Champ | Type | Description |
|---|---|---|
| Identifiant métier | texte |
Le nom utilisé par le système pour identifier le modèle. Il ne peut être changé quand le modèle est en cours d'utilisation |
| Libellé | texte |
Le nom affiché aux utilisateurs lorsqu'ils utilisent le modèle |
| Description | texte |
Description du modèle |

Contenu du modèle
Le modèle de circuit personnalisé permet de définir les statuts que peuvent prendre les entités, les sous-statuts éventuellement associés, les conditions qui doivent être remplies pour permettre les transitions ainsi que les actions complémentaires réalisées lors des événements.
On y trouve donc les éléments suivants :
- à la racine, 1 à 4 des états principaux fournis par l'application :
Copie de travail,Courant,ConservéetRésiduel, - des sous-états de ces états principaux, pour préciser les circuits et décrire les transitions possibles,
- des événements, qui peuvent consister en transitions vers d'autres états ou sous-états,
- des tâches associées aux événements


A partir de cet écran, il est possible de sauvegarder une copie du modèle au format Json (Télécharger) ou bien d'importer un modèle Json (Importer un fichier)
Statut
| Champ | Type | Description |
|---|---|---|
| Nom | identifiant |
Le nom du statut parmi les 4 statuts fournis par le système. (workingCopy, current, preserved,residual) |
| initial | identifiant |
L'identification du sous-statut attribué si aucun sous-statut n'est fourni à l'application lors de l'entrée de l'entité dans ce statut. |
| final | booléen |
Indique si le statut est final et accepte que les entités porteuses soient détruites de manière irréversible. |
| subStatuses | liste de sous-statuts |
La définition des sous-statuts que peuvent prendre les entités utilisant le modèle lorsqu'elles sont dans ce statut. |
Sous-statut
| Champ | Type | Description |
|---|---|---|
| name | identifiant |
Le nom du sous-statut défini qui doit être unique dans le statut. |
| displayName | texte |
Libellé du sous-statut affiché aux utilisateurs. |
| description | texte |
Description du sous-statut |
| final | booléen |
Indique si le sous-statut est final ou non et accepte que les entités porteuses sortent du statut. |
| events | tableau d'événements |
La définition des événements et transitions associés au statuts. |
Evénement
| Champ | Type | Description |
|---|---|---|
| name | identifiant |
Identification d'un événement survenant dans l'application et impactant l'entité porteurse du statut ou sous-statut de rattachement, par exemple l'entrée dans le statut ou sous-statut, sortie du statut ou sous-statut, mise à jour des données, changement de propriétaire, annotation, etc. |
| displayName | texte |
Libellé de l'événement affiché aux utilisateurs. (actions possibles) |
| description | texte |
Description de l'évènement (affiché dans la fenêtre d'action aux utilisateurs) |
| target | identifiant |
identifiant du sous-statut cible sous la forme statut.sous-statut |
| beforeTasks | tableau de tâches |
La définition des tâches à éxécuter avant que l'évènement ne sois pris en compte. La tâche est éxécutée avant la transition portée par l'évènement. |
| afterTasks | tableau de tâches |
La définition des tâches à éxécuter après que l'évènement est survenu. La tâche est éxécutée après la transition portée par l'évènement. |
| canRun | tableau d'identifiants |
L'évènement ne peut être déclenché que par les agents dont les identifiants sont précisés (groupes ou utilisateurs). Si vide, l'évènement peut être déclenché par tous les agents ayant accès à l'entité. |
| mandatoryAnnotation | booléen |
Si vrai, une annotation sera rendue obligatoire à la saisie dans la fenêtre d'action |
Tâche
Une tâche est une opération réalisée automatiquement par l'application lorsqu'un événement ou une transition survient et que les conditions nécessaires sont remplies.
(voir administration des tâches)
| Champ | Type | Description |
|---|---|---|
| identifier | identifiant |
Identifiant de la tâche à éxécuter. |
| sequence | entier |
ordre d'exécution des tâches en cas de pluralité de tâches |
| blocking | booléen |
si vrai, indique de stopper l'évènement si une erreur survient lors de l'exécution (pertinent sur beforeTasks) |
| filter | Non implémenté |
Exemple de modèle de transition
{
"workingCopy": {
"initial": "nouveau_dossier",
"final": false,
"subStatuses": [
{
"name": "nouveau_dossier",
"displayName": "Nouveau dossier",
"description": "Nouveau dossier de Ressources Humaines",
"final": false,
"events": [
{
"name": "activer",
"target": "current.dossier_actif",
"displayName": "Activer le contrat",
"description": "Vous allez activer le contrat",
"position": 1,
"beforeTasks": [
{
"identifier": "ask_create_self_evaluated_matricule",
"sequence": 1,
"blocking": true,
"filter": null
}
],
"afterTasks": [],
"canRun": [
"ressources_humaines"
],
"mandatoryAnnotation": false
}
]
}
]
},
"current": {
"initial": "dossier_actif",
"final": false,
"subStatuses": [
{
"name": "dossier_actif",
"displayName": "Dossier actif",
"description": "Dossier actif de Ressources Humaines",
"final": false,
"events": [
{
"name": "cloturer",
"target": "preserved.dossier_cloture",
"displayName": "Clôturer le dossier",
"description": "Vous allez clôturer le dossier",
"position": 1,
"beforeTasks": [],
"afterTasks": [],
"canRun": [
"ressources_humaines"
],
"mandatoryAnnotation": true
}
]
}
]
},
"preserved": {
"initial": "dossier_cloture",
"final": false,
"subStatuses": [
{
"name": "dossier_cloture",
"displayName": "Dossier clôturé",
"description": "Dossier clôturé (preserved)",
"final": true,
"events": []
}
]
},
"residual": null
}