Annuler un workflow

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 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 d’annulation dans le moteur de workflow.

    Procédure

    1. Accédez à la Tous > 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.
      Confirmation d’annulation
    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 en cours d’exécution du workflow ou cliquez sur Continuer à attendre pour continuer à attendre que le workflow s’annule correctement.
      Avertissement :
      Dans la mesure du possible, autorisez un workflow à annuler correctement. Forcer l’annulation d’un workflow peut laisser les workflows et scripts connexes dans un état non résolu. Vous pouvez utiliser un script à l’annulation pour nettoyer les artefacts non résolus à partir 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 lorsqu’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 : admin

    Pourquoi et quand exécuter cette tâche

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

    Définir un script à l’annulation

    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 à l’annulation qui s’exécute lorsque le workflow passe à l’état Annulé. Ce script peut notifier les utilisateurs, consigner des informations ou résoudre l’état de tout 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 à l’annulation s’exécutent de façon asynchrone à partir du champ d’application global. La charge de travail de votre instance détermine quand 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 ou exécuter d’includes de script inclus dans le champ d’application.

    Procédure

    1. Accédez à la Tous > Workflow > Versions des workflows.
    2. Sélectionnez une version de workflow que vous avez extraite.
      Les versions du workflow qui ne sont pas extraites ne sont pas modifiables.
    3. Modifiez le champ de script À l’annulation .
      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();
    }