Redémarrage contrôlé d'une machine
Mode d'emploi pour l'arrêt et le démarrage contrôlés d'une machine. |
Généralités
Lors de votre traitement quotidien, de nombreuses Tâches sont exécutées en permanence sur votre hôte. L'arrêt soudain d'une machine provoque l'interruption des Tâches déjà en cours. Afin d'éviter les conséquences négatives pour votre traitement, nous vous recommandons de préparer l'Agent pour l'arrêt et le redémarrage de la machine.
Préparation
Il en résulte les conditions de base suivantes :
- Aucune Tâche ne doit être exécutée au moment de l'arrêt de la machine.
- Peu auparavant, il faut néanmoins exécuter un Workflow qui procède aux activités de fermeture.
- Les Tâches ne doivent pas démarrer immédiatement après le démarrage de l'Agent.
- Au lieu de cela, il faut exécuter un Workflow qui procède à quelques préparatifs.
Pour convertir ces critères, vous avez besoin des objets et configurations suivantes :
- Dans la caractéristique de l'hôte se trouvent deux paramètres avec lesquels vous pouvez autoriser ou empêcher le démarrage des Tâches d'un Agent. Ils se nomment WORKLOAD_MAX_FT et WORKLOAD_MAX_JOB. Si les deux paramètres sont définis sur "0", aucun Job ni Transfert de Fichier ne peut démarrer. Ils passent en statut d'attente jusqu'à ce que le paramètre soit modifié à une valeur positive. L'instruction de script :SET_UC_SETTING vous permet d'accéder à ces options. Créez deux objets script : l'un avec une valeur définie sur "0", et l'autre avec une valeur positive ou "UNLIMITED". Utilisez une Variable de script pour transférer le nom de l'Agent à l'instruction. Vous pouvez ainsi utiliser les objets script pour autant d'Agents que vous le souhaitez.
- Définissez deux Workflows. L'une sert aux activités de fermeture avant l'arrêt, et l'autre doit être exécutée en premier après le démarrage pour procéder aux Tâches préliminaires. Comme les deux sont démarrées à un moment où aucune Tâche ne doit être exécutée, vous devez utiliser la fonction MODIFY_UC_OBJECT dans leur script afin de les définir sur "Ignorer la ressource Agent". Cela est valable bien sûr pour tous les objets devant être démarrés à partir de ces Workflows.
- Avant de pouvoir exécuter le Workflow de clôture, il faut s'assurer qu'aucune autre Tâche n'est active. Pour ce faire, définissez un objet Evènement qui vérifie, dans un délai de quelques minutes après la fonction script SYS_ACTIVE_COUNT, si des Tâches sont en cours sur l'Agent. L'Evènement doit être activé avant l'arrêt. Il peut démarrer le Workflow de fermeture, dans la mesure où aucune Tâche ne s'exécute sur l'Agent, ou bien activer un objet Alerte lorsque les Tâches ne sont pas terminées dans la plage termporelle estimée. Dans les deux cas, l'Evènement est en mesure de se terminer automatiquement avec la fonction script CANCEL_UC_OBJECT.
- Définissez dans l'Agent une Variable pour la caractéristique de l'hôte. Vous pouvez également utiliser cette Variable pour plusieurs Agents. L'attribution à la caractéristique de l'hôte se fait dans la Variable UC_EX_HOSTCHAR. Afin que les Tâches ne démarrent pas immédiatement après le redémarrage de la machine, il faut définir la valeur par défaut pour les clés WORKLOAD_MAX_FT et WORKLOAD_MAX_JOB de la caractéristique de l'hôte sur la valeur "0". Saisissez aussi dans l'option EXECUTE_ON_START le nom du Workflow qui doit être exécutée en premier après le démarrage. Cette Chaîne de traitement doit activer, en fin de script, le paramétrage de WORKLOAD_MAX_FT et WORKLOAD_MAX_JOB sur une valeur supérieure à "0" afin que le traitement normal des Tâches puisse être déclenché.
Déroulement
Avant l'arrêt de la machine :
- Le script visant à empêcher le démarrage des Tâches est exécuté.
- L'Evènement de vérification des Tâches en cours de l'Agent est démarré.
- Dès lors que plus aucune Tâche n'est exécutée, l'activation du Workflow de fermeture est effectuée.
Après le démarrage de la machine :
- Seul le Workflow préliminaire est activé par le paramètre dans la caractéristique de l'hôte après le démarrage de l'Agent.
- Cette Chaîne de traitement démarre à la fin du script qui a libéré l'exécution de la Tâche pour cet Agent.