L'onglet Rollback est disponible dans tous les objets activables devant être contenus dans un Workflow. Dans l'onglet Rollback vous pouvez définir les actions requises pour enregistrer (Backup) ou restaurer (Rollback) certaine condition. Vous avez ainsi la possibilité d'annuler les modifications apportées à une tâche en cas d'erreur. L'exécution de la restauration dans Automation Engine n'est possible que via un workflow. Elle est abordée plus en détail dans le présent document.
On distingue en principe la sauvegarde / le rollback basés sur l'utilisateur et sur un fichier.
Lors du rollback basé sur l'utilisateur, un objet assure la sauvegarde et un autre effectue le rollback. Le rollback basé sur un fichier est utilisé pour sauvegarder un dossier ou certains fichiers et les restaurer en cas d'erreur. Les deux types de rollback sont exécutés si cela a été défini.
La sauvegarde et le rollback basés sur un fichier sont possibles uniquement avec les jobs et les transferts de fichier Unix / Windows.
Le rollback peut également être démarré avec le script ROLLBACK_UC_OBJECT.
Lorsque des actions de sauvegarde sont définies, elles sont effectuées automatiquement après l'activation mais avant l'exécution de l'objet, et ce peu importe comment l'objet a été activé. L'exécution de la tâche débute seulement lorsque les actions de sauvegarde ont été correctement achevées.
La sauvegarde définie par l'utilisateur est exécutée avant la sauvegarde basée sur un fichier (si défini comme tel).
Sauvegarde définie par l'utilisateur
Lors de la sauvegarde définie par l'utilisateur, l'objet Sauvegarde indiqué est démarré. Pendant l'exécution d'un objet de sauvegarde personnalisé, le statut "Sauvegarde définie par l'utilisateur" lui est attribué.
Si une erreur se produit pendant l'exécution, la tâche s'interrompt avec le statut FAULT_CUSTOM_BACKUP. Dans ce cas, le rollback ne peut être démarré !
Sauvegarde basée sur un fichier
La sauvegarde basée sur un fichier consiste à copier le répertoire mentionné dans l'onglet Rollback ou les fichiers présents dans le répertoire suivant :
<Dossier de sauvegarde>/<Client>/<Date>/<RunID>/
Le dossier de sauvegarde peut être défini dans le fichier INI de l'agent (section [VARIABLES]) via la variable agent UC_EX_PATH_BACKUP. Par défaut, le système utilise "..\BACKUP" (Windows) ou "../backup" (Unix) comme dossier de sauvegarde.
Pendant l'exécution d'une sauvegarde basée sur un fichier, le statut "Sauvegarde basée sur un fichier" lui est attribué. Si une erreur se produit pendant l'exécution, la tâche s'interrompt avec le statut FAULT_FILE_BACKUP. Dans ce cas, le rollback ne peut être démarré !
Contrairement à la sauvegarde, vous ne pouvez démarrer un rollback que si les tâches de Workflow sont déjà terminées. Il existe pour cela les possibilités suivantes :
Pour exécuter un rollback, vous devez activer l'option "Permettre le rollback" dans les propriétés des tâches du Workflow dans l'onglet Général. Si cette option n'est pas activée, la commande "Rollback" du menu contextuel n'est pas affichée, le bouton "Rollback" dans la barre d'outils de la Fenêtre d'activités est grisé et la post-condition ROLLBACK n'est pas exécutée. Cette fonction est activée par défaut.
Vérifiez que les paramètres sont activés et défins dans l'onglet Rollback.
En cas de rollback, le rollback basé sur un fichier (si disponible et défini) est exécuté avant le déploiement défini par l'utilisateur (si défini).
Les tâches ayant été démarrées en mode Rollback ont un statut actif et sont affichées en violet dans le moniteur de Workflows. Lorsque le processus du rollback s'achève, la tâche se termine aussi.
Lorsque le rollback est démarré pour un Sous-Workflow, toutes les tâches subordonnées sont également concernées (voir section Rollback des Workflows ci-dessous).
Les tâches pour lesquelles aucun rollback n'a été défini s'achèvent avec le statut ENDED_ROLLBACK_EMPTY.
Les propriétés des tâches du Workflow, comme par exemple l'heure de début la plus tardive, sont ignorées en cas de rollback. La date logique est conservée.
L'objet Rollback ne peut pas démarrer si la tâche a été interrompue avec le statut FAULT_CUSTOM_BACKUP ou FAULT_FILE_BACKUP. Dans ce cas, vous devez résoudre l'erreur et redémarrer la tâche.
Lorsque la procédure de rollback s'est terminée avec succès, le statut de fin ENDED_ROLLBACKED est attribué à la tâche.
Rollback basé sur des fichiers
Lors d'un rollback basé sur un fichier, le sysytème copie les fichiers de la tâche, qui sont stockés dans le dossier de sauvegarde (<Dossier de sauvegarde>/<Client>/<Date>/<RunID>) dans le répertoire spécifié dans l'onglet Rollback. Si l'option "Supprimer avant de restaurer" est activée, le contenu du répertoire de destination est supprimé au préalable afin d'éviter les erreurs lors de la copie. Les sous-dossiers ne seront supprimés que si l'option Inclure Sous-Répertoires est sélectionnée.
Au cours de cette procédure, le répertoire est restauré comme avant l'exécution de la tâche.
Pendant l'exécution d'un rollback basé sur un fichier, le statut "Rollback basé sur un fichier" est attribué à la tâche. Si une erreur se produit pendant l'exécution, la tâche s'interrompt avec le statut FAULT_FILE_ROLLBACK.
Remarque à l'attention des utilisateurs de Windows
Afin d'utiliser le rollback basé sur les fichiers dans Windows, Windows Powershell doit être saisi comme interpréteur avec les paramètres ECPEXE= et EXPEXT= dans le fichier INI de l'agent Windows(section [GLOBAL]). Ces paramètres sont configurés par par défaut. Un exemple de fichier INI d'un agent Windows est indiqué ci-dessous:
ECPEXE=C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -file
ECPEXT=ps1
Pour les actions de sauvegarde et de restauration, le système utilise les objets FILE.BACKUP.WINDOWS et FILE.ROLLBACK.WINDOWS qui sont fournies par défaut dans le client 0.
Assurez-vous également que les scripts "unsigned" peuvent être exécutés sous Powershell, si nécessaire. Modifiez la stratégie "restricted" en "remotesigned", par exemple.
Pour modifier les droits du script Powershell, ouvrez une fenêtre Powershell sur l'ordinateur Windows concerné, puis spécifiez la commade suivante, par exemple :
Rollback défini par l'Utilisateur
Dans un rollback défini par l'utilisateur, l'objet Rollback qui est responsable de la restauration de l'état de fonctionnement initial démarre. Les actions de l'objet sauvegarde dépendent de la tâche ou de l'objet sauvegarde et doivent être définies par l'utilisateur.
Pendant l'exécution de l'objet Rollback, le statut "Rollback défini par l'utilisateur" est attribué à la tâche. Si une erreur se produit pendant l'exécution, la tâche s'interrompt avec le statut FAULT_CUSTOM_ROLLBACK.
Lorsque la tâche est un Workflow, le rollback est effectué également pour les tâches subordonnées. N'importe quelle inclusion est alors possible.
Lorsque le rollback est démarré pour un sous-Workflow, le statut "Attente de rollback" est attribué à ses tâches subordonnées. Si ce sous-workflow inclut des tâches subordonnées actives, leurs statuts ne seront modifiés que lorsque le sous-workflow est terminé.
Le rollback des tâches est ensuite exécuté dans l'ordre inverse ce qui signifie qu'il commence par la fin du Workflow et se termine par son début. Le même comportement s'applique à tous les Workflows subordonnés. Pour finir, les actions de rollback du Workflow démarrent elles-mêmes.
L'exécution du rollback s'arrête si une tâche a été désactivée et n'est plus affichée dans la fenêtre d'activités. Dans ce cas, vous devez reprendre la tâche ou l'ignorer pour poursuivre le rollback.
La procédure détaillée du rollback pour chaque tâche individuelle est décrite ci-dessus dans la section Rollback.
Si le rollback d'une tâche échoue (FAULT_CUSTOM_ROLLBACK / FAULT_FILE_ROLLBACK), l'exécution du rollback s'arrête à la branche de Workflow concernée. Vous pouvez supprimer l'erreur, puis redémarrer le rollback pour cette tâche.
Rollback de Workflows FOREACH
Lors du rollback de Workflows FOREACH, les tâches sont traitées dans l'ordre inverse, puis les actions de rollback du Workflow sont exécutées.
Rollback de Workflows IF
Pour les Workflows IF, le rollback est effectué pour chaque branche de tâches ayant été sélectionnée lors de la dernière exécution. Les actions de rollback du Workflow sont ensuite exécutées.
Rollback jusqu'à cette tâche
Cette commande est disponible dans le menu contextuel accessible dans le moniteur du Workflow actif pour les tâches achevées (modifier la tâche).
Utilisez cette commande pour commencer par définir le chemin du rollback. Ce chemin inclut tous les successeurs directs et indirects de la tâche au sein du Workflow. Les prédécesseurs et les tâches parallèles ne sont pas concernés.
Ensuite, le statut "Attente de rollback" est attribué aux tâches concernées par le chemin de rollback. Si une tâche est active, le sysytème attend qu'elle soit achevée avant d'en modifier le statut. Le rollback des tâches concernées est ensuite réalisé dans l'ordre inverse de celui du Workflow. Le rollback débute ainsi par le dernier successeur et se termine par la tâche sélectionnée.
En cas d'erreur lors du rollback, l'exécution s'arrête au chemin de rollback de la tâche concernée. Vous pouvez alors supprimer l'erreur et reprendre le rollback de la tâche concernée.
Si le chemin du rollback contient des Workflows, ces derniers et toutes leurs tâches subordonnées sont concernés par le rollback (voir : Rollback de Workflows).
Les actions de rollback du Workflow lui-même (si disponible) ne sont pas exécutées si vous activez l'option "Rollback jusqu'à cette tâche".
Continuer
La commande "Continuer" est disponible dans le menu contextuel (modifier le Workflow) qui peut être ouvert en effectuant un clic droit dans une zone libre du Moniteur de Workflows. La commande n'est disponible que si le Workflow est actif et n'est utile que si ce dernier contient au moins une tâche avec le statut ENDED_ROLLBACKED.
Utilisez la commande "Continuer" pour démarrer toutes les tâches du Workflow concerné
Les valeurs de la dernière exécution sont utilisées pour les variables PromptSet et les valeurs de la définition d'objet le sont pour les variables d'objet.
Les propriétés des tâches (telles que l'heure de début au plus tard) sont prises en compte pour la commande "Continuer". La date logique est conservée.