Annuler un workflow

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 2 minutes de lecture
  • L’annulation d’un workflow arrête l’exécution du workflow et définit l’état du contexte du workflow sur Annulé. Pour annuler un workflow en cours d’exécution, vous pouvez utiliser le script cancelContext(context). Vous pouvez définir un script onCancel pour nettoyer les activités de workflow non résolues.

    Avant de commencer

    Rôle requis : admin ou workflow_admin

    Pourquoi et quand exécuter cette tâche

    L’annulation d’un workflow tente d’arrêter le workflow de manière appropriée en injectant une commande cancel dans le moteur de workflow.

    Procédure

    1. Accédez à la Tout > Workflow > Contextes actifs.
    2. Sélectionnez un enregistrement de contexte de workflow.
    3. Configurez la mise en page du formulaire pour ajouter un champ de script On-cancel au formulaire.
      Pour en savoir plus sur la configuration de la mise en page de formulaire, reportez-vous à la section Configuring the form layout.
    4. Sélectionnez le lien connexe Annuler .
      Une confirmation s’affiche.
      Annuler la confirmation
    5. Cliquez sur OK.
      Le moteur de workflow tente d’annuler le workflow de manière appropriée.
      Attendre l'annulation

      Si le workflow ne répond pas à la commande d’annulation, l’option Forcer l’annulation s’affiche.

      Forcer l'annulation
    6. Cliquez sur Forcer l’annulation pour interrompre le thread que le workflow exécute activement, ou cliquez sur Continuer à attendre pour continuer à attendre que le workflow s’annule correctement.
      Avertissement :
      Dans la mesure du possible, autorisez un workflow à s’annuler correctement. Forcer l’annulation d’un workflow peut laisser les workflows et les scripts associés dans un état non résolu. Vous pouvez utiliser un script on-cancel pour nettoyer les artefacts non résolus d’un workflow annulé.

    Annuler un workflow avec le script cancelContext(context)

    Pour annuler un workflow en cours d’exécution, vous pouvez utiliser le script cancelContext(context). Ce script peut être utile dans les cas où un workflow doit être annulé en réponse à un événement ou lorsqu’un utilisateur doit annuler manuellement un workflow.

    Avant de commencer

    Rôle requis : administrateur

    Pourquoi et quand exécuter cette tâche

    Pour en savoir plus, voir Workflow - cancelContext(GlideRecord context).

    Définir un script on-cancel

    L’annulation d’un workflow peut laisser des enregistrements ou des scripts dans un état non résolu. Par exemple, l’annulation d’un workflow de catalogue de services peut laisser des éléments de catalogue dans le panier de l’utilisateur demandeur. Un administrateur peut spécifier un script On-cancel qui s’exécute lorsque le workflow passe à l’état Annulé. Ce script peut notifier les utilisateurs, journaliser des informations ou résoudre l’état de n’importe quel script exécuté dans une activité de workflow. La sys_id du contexte du workflow est disponible dans ce script à l’aide de la variable context_sys_id.

    Pourquoi et quand exécuter cette tâche

    Les scripts On-cancel s’exécutent de façon asynchrone à partir du champ d’application global. La charge de travail de votre instance détermine le moment où le système planifie et exécute le script on-cancel.
    Important :
    Étant donné que le système exécute des scripts on-cancel à partir du champ d’application global, il ne peut pas appeler ni exécuter d’includes de script inclus dans le périmètre.

    Procédure

    1. Accédez à la Tout > Workflow > Versions des workflows.
    2. Sélectionnez une version de workflow que vous avez extraite.
      Les versions de workflow qui ne sont pas extraites ne sont pas modifiables.
    3. Modifiez le champ de script On-cancel .
      Vous devrez peut-être configurer le formulaire pour ajouter ce champ.
    4. Cliquez sur Mettre à jour.

    Exemple

    Cet exemple de script ajoute un commentaire à un enregistrement d’élément demandé [sc_req_item] indiquant que le workflow de cette demande a été annulé.
    var grContext = new GlideRecord("wf_context"); 
    grContext.get(context_sys_id); 
    var grReq = new GlideRecord("sc_req_item");
     
    // The current record may not exist, make sure it exists before modifying it.
    if (grReq.get(grContext.id)) {
        grReq.comments = "The workflow processing this item was Canceled. Contact your system administrator for further information.";
        grReq.update();
    }