6.9. Suivi des Workflows¶
La solution logicielle VITAM intègre une solution de suivi et de gestion des Workflows. Elle permet entre autres de :
- Relancer un Workflow arrêté
- Mettre en pause un Workflow démarré
- Rejouer une étape d’un Workflow
- Annuler un workflow
6.9.1. Suivi¶
Le suivi peut être réalisé via IHM, par des appels REST ou par un playbook ansible.
6.9.1.1. IHM¶
Il existe une page dans l”IHM de démonstration, permettant d’influer sur les processus en cours. Tous les processus mis en pause, automatiquement (lors d’un FATAL) ou bien manuellement (Mode pas à pas) apparaissent sur cette IHM. Il est également possible, à partir de cette IHM, de relancer le processus ou bien de rejouer une étape, après action d’exploitation.
6.9.1.2. Appels REST¶
Il est tout aussi possible d’exécuter ces différentes actions sur l”API en direct, via des appels curl
par exemple sur le composant access external :
- PUT sur le endpoint /operations/GUID avec comme header X-Action:RESUME par exemple.
Pour plus d’information, consulter la documentation des API externes.
6.9.1.3. Playbook ansible¶
Lancer le script suivant
ansible-playbook -i environments/<inventaire> ansible-vitam-exploitation/check_workflow_status.yml --vault-password-file vault_pass.txt
Ou si le fichier vault_pass.txt
n’existe pas
ansible-playbook -i environments/<inventaire> ansible-vitam-exploitation/check_workflow_status.yml --ask-vault-pass
6.9.2. Cas des worklows en FATAL¶
Un workflow se met en pause dès qu’il se retrouve en statut FATAL. Plusieurs causes peuvent expliquer un tel état.
6.9.2.1. Plugins et Handlers¶
Plusieurs problèmes peuvent expliquer qu’un Handler ou un plugin retourne une erreur « FATAL » et donc provoque la mise en pause du Worfklow.
Si le composant workspace est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour tous les Handlers et plugins.
Si le composant logbook est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour les handlers suivants :
- CommitLifeCycleActionHandler
- CommitLifeCycleObjectGroupActionHandler
- CommitLifeCycleUnitActionHandler
- ListLifecycleTraceabilityActionHandler
- FinalizeLifecycleTraceabilityActionHandler
- RollBackActionHandler
Si le composant functional-administration est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour les Handlers suivants :
- CheckArchiveProfileRelationActionHandler
- CheckArchiveProfileActionHandler
- GenerateAuditReportActionHandler
- PrepareAuditActionHandler
Si le composant metadata est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour les Handlers suivants :
- AccessionRegisterActionHandler
- ListArchiveUnitsActionHandler
- PrepareAuditActionHandler
- ArchiveUnitRulesUpdateActionPlugin
- AuditCheckObjectPlugin
- IndexObjectGroupActionPlugin
- IndexUnitActionPlugin
- RunningIngestsUpdateActionPlugin
Si le composant storage est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour les Handlers suivants :
- CheckStorageAvailabilityActionHandler
- FinalizeLifecycleTraceabilityActionHandler
- GenerateAuditReportActionHandler
- PrepareTraceabilityCheckProcessActionHandler
- PutBinaryOnWorkspace
- CheckIntegrityObjectPlugin
- CheckExistenceObjectPlugin
- StoreMetaDataObjectGroupActionPlugin
- StoreMetaDataUnitActionPlugin
- StoreObjectActionHandler
- StoreObjectGroupActionPlugin
Si le composant processing est défectueux ou ne répond plus, alors un FATAL pourra être obtenu pour les Handlers suivants :
- ListRunningIngestsActionHandler
Si le composant FormatIdentifier est défectueux et ne répond plus, alors un FATAL pourra être obtenu pour le Handler suivant :
- FormatIdentificationActionPlugin
6.9.2.2. Distributor¶
Plusieurs cas peuvent provoquer un FATAL au niveau du processing :
- si metadata ou workspace est injoignable
- si un handler (ou plugin) inexistant est appelé.
- si le distributeur tente d’appeler une famille de worker inexistante
6.9.2.3. Processing - State Machine¶
Dans le cas ou le Processing ne parvient pas à enregistrer l’état du workflow sur le workspace, un FATAL est provoqué. Il en va de même si le composant logbook est défectueux.
6.9.3. Redémarrer un processus en cas de pause¶
6.9.3.1. Trouver la cause¶
De manière générale, il convient d’identifier le composant (ou les composants) posant problème. Il s’agira majoritairement de metadata, de logbook, du storage ou encore du workspace.
A partir du Guid de l’opération mise en pause, il est facilement possible de voir, dans les logs du processing ou des workers quels sont les composants incriminés.
6.9.3.2. Relancer le Workflow¶
A partir du Guid de l’opération mise en pause et une fois le composant redémarré, il est possible de relancer le workflow.
6.9.3.2.1. Vérifier les inputs¶
- S’assurer à partir du GUID de l’opération que l’on nommera X la présence :
- d’un fichier X.json dans /vitam/data/workspace/process/distributorIndex/
- d’un répertoire X dans
/vitam/data/workspace/
contenant à minima une liste de sous-répertoires (et notamment le SIP décompressé dans le sous répertoireSIP
).
6.9.3.2.2. Rejouer une étape¶
Depuis l”IHM, relancer l’étape précédente en cliquant sur l’icône « Replay ».
Via les API, il suffit de lancer un appel curl
sur le composant access external : PUT sur le endpoint /operations/GUID avec comme header X-Action:REPLAY.
Cette action aura pour résultat d’exécuter une deuxième fois l’étape qui a échoué. En sortie de ce replay, le statut du workflow doit passer à OK et l’état à PAUSE.
6.9.3.2.3. Prochaine étape¶
Depuis l”IHM, exécuter l’étape suivante en cliquant sur l’icône « Next ». Via les API, il suffit de lancer un appel curl sur le composant « access-external » : PUT sur le endpoint /operations/GUID avec comme header X-Action:NEXT.
Cette action aura pour résultat d’exécuter l’étape suivante. En sortie de ce replay, le statut du workflow doit passer à OK et l’état à PAUSE.
6.9.3.2.4. Finaliser le workflow¶
Il est possible de poursuivre le workflow jusqu’à son terme.
Depuis l”IHM, finaliser le workflow en cliquant sur l’icône « Fast Forward ».
Via les API, il suffit de lancer un appel curl sur le composant access-external
: PUT sur le endpoint /operations/GUID avec comme header X-Action:RESUME.