Workflow : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 9 minutes de lecture
  • Les scripts de workflow fournissent une interface avec le moteur de workflow.

    Utilisez ces méthodes pour manipuler les workflows.

    Workflow : broadcastEvent(String contextId, String eventName)

    Envoie l’événement (message) spécifié dans le contexte du workflow pour le transmettre aux activités d’exécution.

    Cette méthode est généralement utilisée pour activer les activités qui attendent qu’une action se produise avant de continuer. Pour plus d’informations sur l’utilisation de broadcastEvent, reportez-vous aux fonctions spécifiques à l’événement du workflow.

    Pour obtenir une liste des événements OOB disponibles, reportez-vous à la section Événements de workflow dans le système de base.

    Tableau 1. Paramètres
    Nom Type Description
    contextId Chaîne ID de contexte.
    eventName Chaîne Le nom de l'événement.
    Tableau 2. Renvoie
    Type Description
    nul
    //where current is a task record with a workflow context
          var wf = new Workflow().getRunningFlows(current);
          while(wf.next()) {     
              new Workflow().broadcastEvent(wf.sys_id, 'resume');
          }

    Workflow : annuler (enregistrement GlideRecord)

    Annule tous les workflows en cours d’exécution sur cet enregistrement en diffusant l’événement cancel aux activités de tous les workflows en cours d’exécution sur cet enregistrement.

    Tableau 3. Paramètres
    Nom Type Description
    record GlideRecord GlideRecord sur n’importe quelle table. Tous les workflows exécutés sur cet enregistrement seront annulés.
    Tableau 4. Renvoie
    Type Description
    nul
    //get workflow helper
          var workflow = new Workflow();
          //cancel all the workflows, where current is a task record with a workflow context
          workflow.cancel(current);
          gs.addInfoMessage(gs.getMessage("Workflows for {0} have been cancelled", current.getDisplayValue()));

    Workflow : cancelContext(contexte GlideRecord)

    Annule ce contexte d’exécution en diffusant un cancel événement sur les activités de ce contexte de workflow.

    Tableau 5. Paramètres
    Nom Type Description
    contexte GlideRecord GlideRecord du contexte d’exécution à annuler.
    Tableau 6. Renvoie
    Type Description
    nul
    // If a workflow has started for this item, cancel it, where current is a task record with a workflow context
          if ((current.stage == 'Request Cancelled') && current.context 
              && !current.context.nil()) {
          var w = new Workflow();
          var now_GR = new GlideRecord('wf_context');
          
          if (now_GR.get(current.context)) 
              w.cancelContext(now_GR);
          }

    Workflow : deleteWorkflow(GlideRecord current)

    Supprime tous les workflows de l’enregistrement.

    Tableau 7. Paramètres
    Nom Type Description
    current GlideRecord GlideRecord pour lequel l’appelant veut supprimer tous les workflows. Il peut s’agir de n’importe quel enregistrement sur n’importe quelle table.
    Tableau 8. Renvoie
    Type Description
    nul
    //where current is a task record with a workflow context
          var wkfw = new Workflow();
          wkfw.deleteWorkflow(current);
        

    Workflow : fireEvent(GlideRecord eventRecord, String eventName, Object eventParms)

    Déclenche l’événement nommé d’un workflow en cours d’exécution sur l’enregistrement d’entrée.

    Utilisé dans le coordinateur d’approbation d’activités, le minuteur, le verrou et d’autres.

    Tableau 9. Paramètres
    Nom Type Description
    Enregistrement d’événement GlideRecord Enregistrement d’événement répertorié dans la table Activités d’exécution du workflow [wf_executing].
    eventName Chaîne Nom de l’événement à envoyer au workflow en cours d’exécution.
    eventParms Objet Facultatif. Paramètres au format JSON utilisés par l’événement.
    Tableau 10. Renvoie
    Type Description
    nul  
    // where current is a task record with a workflow context
      var w = new Workflow(); 
      w.fireEvent(current, 'execute');

    Workflow : fireEventById(String eventRecordId, String eventName)

    Déclenche l’événement nommé sur l’enregistrement spécifié par l’ID d’enregistrement.

    Utilisé dans le coordinateur d’approbation d’activités, le minuteur, le verrou et d’autres.

    Tableau 11. Paramètres
    Nom Type Description
    ID d’enregistrement d’événement Chaîne La sys_id de l’enregistrement Glide.
    eventName Chaîne Nom de l’événement à envoyer au workflow en cours d’exécution.
    Tableau 12. Renvoie
    Type Description
    nul
    var wkfw = new Workflow();
          wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');

    Workflow : getContexts(enregistrement GlideRecord)

    Renvoie tous les contextes de workflow pour un enregistrement spécifié.

    Tableau 13. Paramètres
    Nom Type Description
    record GlideRecord GlideRecord pour lequel l’appelant souhaite une liste de tous les contextes de workflow. Il peut s’agir de n’importe quel enregistrement de n’importe quelle table pour lequel l’appelant souhaite que les contextes de workflow s’exécutent.
    Tableau 14. Renvoie
    Type Description
    GlideRecord GlideRecord dans la table de contexte du workflow [wf_context] filtrée pour tous les contextes de workflow de l’enregistrement spécifié (quel que soit l’état, tel que exécution, annulation ou finition).
    //where current is a task record with a workflow context
    var wkfw = new Workflow();
    var context = wkfw.getContexts(current);
    while (context.next())
      gs.print(context.started);

    Workflow : getEstimatedDeliveryTime(String workflowId)

    Obtient le temps estimé pour qu’un workflow se termine.

    Tableau 15. Paramètres
    Nom Type Description
    workflowId Chaîne Sys_id du workflow (table wf_workflow) pour obtenir la durée d’exécution estimée.
    Tableau 16. Renvoie
    Type Description
    Chaîne Valeur d’affichage d’une GlideDuration (par exemple, 3 jours), ou vide si inconnu.
    var wkfw = new Workflow();
          gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));

    2 Jours

    Workflow : getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)

    Obtenez le temps d’exécution écoulé estimé pour la version du workflow.

    Tableau 17. Paramètres
    Nom Type Description
    wfVersion GlideRecord GlideRecord sur la table wf_workflow_version d’une version de workflow spécifique pour laquelle l’appelant souhaite l’estimation en cours d’exécution.
    Tableau 18. Renvoie
    Type Description
    Chaîne Valeur d’affichage d’une GlideDuration (par exemple, 3 jours), ou vide si inconnu.
    //where current is a task record with a workflow context
          var wkfw = new Workflow();
          var context = wkfw.getContexts(current);
          gs.print(wkfw.getEstimatedDeliveryTimeFromWFVersion(context.wf_version));

    Workflow : getReturnValue(String workflowID, Number amount, Résultat booléen)

    Obtient la valeur de retour de workflow appropriée pour l’ID de workflow de l’entrée. Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.

    Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente. Cette méthode est disponible à partir de la version Fuji.

    Tableau 19. Paramètres
    Nom Type Description
    ID du workflow Chaîne La sys_id du workflow (table wf_workflow)
    calculer le montant de Numéro calculer le montant de
    résultat Booléen Vrai, si vrai
    Tableau 20. Renvoie
    Type Description
    ??? Valeur de retour du workflow telle que spécifiée par l’activité Valeur de retour. Les workflows sans activité Valeur de retour renvoient une valeur nulle.
    var wkfw = new Workflow();
          wkfw.getReturnValue('context');
    Sortie :
    *** Script: b99a866a4a3623120074c033e005418f
          

    Workflow : getRunningFlows(enregistrement GlideRecord)

    Obtient tous les contextes de workflow en cours d’exécution pour l’enregistrement d’entrée.

    L’enregistrement d’entrée est n’importe quel enregistrement de n’importe quelle table pour laquelle l’appelant souhaite exécuter les contextes de workflow.

    Tableau 21. Paramètres
    Nom Type Description
    record GlideRecord GlideRecord de l’enregistrement pour lequel l’appelant souhaite une liste de tous les workflows en cours d’exécution.
    Tableau 22. Renvoie
    Type Description
    GlideRecord GlideRecord sur la table wf_context et filtré pour tous les contextes de workflow en cours d’exécution.
    //where current is a task record with a workflow context
          var wf = new Workflow().getRunningFlows(current);
          while(wf.next()) {     
              new Workflow().broadcastEvent(wf.sys_id, 'pause');
          }

    Workflow : getVersion(String workflowID)

    Obtient la version de workflow appropriée pour l’ID de workflow de l’entrée. Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.

    Il s’agit soit du workflow extrait par l’utilisateur actuel, soit du workflow publié avec la date la plus récente.

    Tableau 23. Paramètres
    Nom Type Description
    ID du workflow Chaîne La sys_id du workflow (table wf_workflow)
    Tableau 24. Renvoie
    Type Description
    aucun
    var wkfw = new Workflow();
          wkfw.getVersion('b99a866a4a3623120074c033e005418f');

    Workflow : getVersionFromName(String workflowName)

    Renvoie la version de workflow appropriée pour le nom du workflow d’entrée.

    Voir getVersion() pour plus d’informations.

    Tableau 25. Paramètres
    Nom Type Description
    nom du workflow Chaîne Nom du workflow (table wf_workflow)
    Tableau 26. Renvoie
    Type Description
    nul
    var wkfw = new Workflow();
          wkfw.getVersionFromName('Emergency Change');

    Workflow : getWorkflowFromName(String workflowName)

    Renvoie la sys_id du workflow associé au nom de workflow spécifié.

    Tableau 27. Paramètres
    Nom Type Description
    nom du workflow Chaîne Nom du workflow.
    Tableau 28. Renvoie
    Type Description
    Chaîne sys_id du workflow associé au nom transmis.
    var wflw = new Workflow();
          gs.print(wflw.getWorkflowFromName('Emergency Change'));

    Workflow : hasWorkflow(enregistrement GlideRecord)

    Détermine si un enregistrement spécifié est associé à des contextes de workflow.

    Cela inclut les contextes de workflow en cours d’exécution et terminés.

    Tableau 29. Paramètres
    Nom Type Description
    record GlideRecord GlideRecord sous surveillance. Ce GlideRecord peut provenir de n’importe quelle table.
    Tableau 30. Renvoie
    Type Description
    Booléen Vrai, si un workflow est associé à l’enregistrement. sinon, renvoie la valeur Faux.
    var wkfw = new Workflow();
          gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));

    faux

    Workflow : restartWorkflow(GlideRecord current, booléen maintainStateFlag)

    Recalcule les approbations et les tâches d’un workflow en ajoutant de nouvelles approbations et tâches, sans réinitialiser les approbations et les tâches actuelles.

    Vous pouvez utiliser cette méthode pour effectuer des tâches telles que l’ajout d’une entreprise à une demande de changement, sans réinitialiser les approbations actuelles des sociétés déjà présentes dans le workflow.

    Tableau 31. Paramètres
    Nom Type Description
    current GlideRecord GlideRecord de l’enregistrement en cours d’exécution de ce workflow. Cela peut être fait par n’importe quel enregistrement sur n’importe quelle table.
    maintainStateFlag (en anglais seulement) Booléen Marqueur indiquant si toutes les approbations et toutes les tâches doivent rester dans leur état actuel.
    Valeurs valides :
    • true : maintenir toutes les approbations et tâches dans leur état actuel.
    • false : mettre à jour tous les états d’approbation et de tâche.
    Tableau 32. Renvoie
    Type Description
    nul

    Cet exemple montre le workflow en cours de redémarrage avec le fichier d’approbation passé de Rejeté à Demandé.

    (function(){
      var comment = 'Workflow Restarted - the Approval Field changing from Rejected to Requested';
      var gLock = new GlideRecordLock(current);
        gLock.setSpinWait(50);
      if (gLock.get()) {
        new Workflow().restartWorkflow(current, false);
        current.setDisplayValue('approval_history', comment);
      }
    })

    Workflow : runFlows(enregistrement GlideRecord, opération de chaîne)

    Exécute tous les workflows pour un enregistrement donné dans une table donnée et ses tables descendantes.

    Vous trouverez un exemple d’utilisation dans les script includes « SNC : exécuter les workflows parents » et « SNC : exécuter les workflows parents (approbation) ».

    Tableau 33. Paramètres
    Nom Type Description
    record GlideRecord GlideRecord sur lequel exécuter les workflows.
    operation Chaîne Opération de base de données.
    Valeurs valides :
    • insérer
    • mettre à jour
    • supprimer
    Tableau 34. Renvoie
    Type Description
    nul
    var now_GR = new GlideRecord('wf_test');
    now_GR.addQuery('parent', current.parent);
    now_GR.addQuery('sys_id','!=',current.sys_id);
    now_GR.query();
    while(now_GR.next()) {
        new Workflow().runFlows(now_GR, 'update');
    }

    Workflow : startFlow(String workflowId, GlideRecord current, String operation, Array vars)

    Démarre un workflow spécifié.

    Voir le script include WorkflowScheduler et la règle métier « Start Workflow » sur la table sc_req_item pour des exemples d’utilisation.

    Tableau 35. Paramètres
    Nom Type Description
    workflowId Chaîne La sys_id du workflow à démarrer. Cette sys_id se réfère à la table wf_workflow.
    current GlideRecord Enregistrement à utiliser comme actuel dans ce workflow. Cela provient normalement du Table champ des propriétés du workflow pour ce workflow.
    operation Chaîne Opération à effectuer sur current. Valeurs possibles : insérer, mettre à jour, supprimer.
    variables Tableau Collection de variables à ajouter au workflow
    ////where current is a task record with a workflow context
          var w = new Workflow();
          var context = w.startFlow(id, current, current.operation(), getVars());

    Workflow : startFlowFromContextInsert(contexte GlideRecord, opération de chaîne)

    Méthode d’aide pour règle Auto start on contextmétier.

    Tableau 36. Paramètres
    Nom Type Description
    contexte GlideRecord GlideRecord sur la table wf_context d’un nouvel enregistrement (l’enregistrement « actuel » dans la règle métier).
    operation Chaîne Opération de base de données en cours d’exécution. L’un des insert, update, . delete
    Tableau 37. Renvoie
    Type Description
    nul
    //where current is a task record with a workflow context
          current.name = current.workflow_version.name;
          current.started_by.setValue(gs.userID());
          
          if (gs.nil(current.id)) {
            var now_GR = new GlideRecord('wf_workflow_execution');
            now_GR.name = current.name;
            now_GR.insert();
          
            current.table = 'wf_workflow_execution';
            current.id = now_GR.sys_id;
          }
          
          var wf = new Workflow();
          wf.startFlowFromContextInsert(current, current.operation())

    Workflow : startFlowRetroactive(String workflowId, Number retroactiveMSecs, GlideRecord current, String operation, Array, ???)

    Utilisée par la règle Start Workflow métier sur la table task_sla. Cela démarre un workflow et les arguments supplémentaires de cette méthode sont utilisés par l’activité « Timer » pour suspendre l’exécution du workflow pendant une certaine durée.

    Tableau 38. Paramètres
    Nom Type Description
    ID du workflow Chaîne La sys_id du workflow à démarrer. Cette sys_id se réfère à la table wf_workflow.
    MSecs rétroactifs Numéro Délai en millisecondes utilisé par le minuteur d’activité.
    current GlideRecord GlideRecord de l’enregistrement à utiliser comme actuel dans ce workflow. Cela provient normalement du Table champ des propriétés du workflow pour ce workflow
    operation Chaîne Opération de base de données en cours d’exécution. L’un des insert, update, . delete
    variables Tableau Collection de variables à ajouter au workflow.
    withSchedule ??? Calendrier utilisé par le minuteur d’activité
    Tableau 39. Renvoie
    Type Description
    GlideRecord Un GlideRecord sur la table wf_context sur l’enregistrement inséré pour ce contexte de workflow nouvellement créé.
    // is this a retroactive start?
          ////where current is a task record with a workflow context
          var msecs = new GlideDateTime().getNumericValue() - current.start_time.getGlideObject().getNumericValue();
          
          // treat this as a retroactive workflow start if the SLA started more than 5 seconds ago
          var w = new Workflow();
          if (msecs <= 5000)
            w.startFlow(id, current, current.operation());
          else
            w.startFlowRetroactive(id, msecs, current, current.operation());
          
          // update the record in case the workflow changed some values
          current.update();
          
        

    Workflow : workflow()

    Constructeur de la classe Workflow .

    Tableau 40. Paramètres
    Nom Type Description
    Aucun
    Tableau 41. Renvoie
    Type Description
    nul
    var w = new Workflow();