WorkflowModelManager : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 10 minutes de lecture
  • La classe WorkflowModelManager permet d’interroger le modèle de workflow, d’effectuer des pas en arrière et en avant entre les valeurs spécifiées wf_history itemset d’interroger l’historique afin d’obtenir des informations spécifiques à l’activité et à la transition.

    L’interaction avec la classe WorkflowModelManager se fait par le biais de l’objet de données ActivityHistoryRecord . ActivityHistoryRecord est une classe interne qui n’est utilisée que lors de l’interaction avec WorkflowModelManager.

    Pour acquérir l’historique exécuté des activités de workflow :
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    
    Pour afficher la lecture du flux de travail :
    var model = new WorkflowModelManager('myContextId');
    model.getExecutedHistory();
    model.playBack();
    

    À ce stade, le playBack est nécessaire pour charger les transitions exécutées. Cela jouera également un rôle dans le retour en arrière sur un modèle pour revenir à une activité spécifique.

    Pour afficher les détails du modèle mis en cache :
    var model = new WorkflowModelManager('myContextId');
     model.getExecutedHistory();
     model.dump();

    WorkflowModelManager : getActivityHistoryRecordById(String haRecordSysId)

    Récupère l’activité de l’historique qui est mise en cache par l’élément wf_history.sys_id fourni dans l’argument.

    Tableau 1. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne Sys_id de l’enregistrement d’historique des activités [wf_history] souhaité.
    Tableau 2. Renvoie
    Type Description
    ActivityHistoryRecord Objet JavaScript ActivityHistoryRecord demandé.

    Cet exemple montre comment utiliser la méthode pour obtenir l’enregistrement d’activité d’historique spécifié.

    var model = new WorkflowModelManager('a71efa6345550110a86630cf9552f3af');  // The sys_id of the wf_context
    model.getExecutedHistory();
    var current_hist_obj = model.getActivityHistoryRecordById('2b1efa6345550110a86630cf9552f3bc'); // The sys_id of the desired record
    gs.info(JSON.stringify(current_hist_obj));

    Sortie :

    
    {
       "sys_id":"2b1efa6345550110a86630cf9552f3bc",
       "index":"3",
       "startTime":1643795456000,
       "endTime":1643795456000,
       "wfaId":"31bf2a05e7c133009a610558d2f6a968",
       "wfaIsParent":{
         
       },
       "parent":"",
       "wfaName":{
         
       },
       "adId":"db8c65aec0a8016501d00259bc7203a4",
       "adName":{
         
       },
       "transitions":[
          {
             "sys_id":"e31efa6345550110a86630cf9552f3c0",
             "ahrId":"2b1efa6345550110a86630cf9552f3bc",
             "to":"39bf2a05e7c133009a610558d2f6a970",
             "from":"31bf2a05e7c133009a610558d2f6a968",
             "rolledBack":"false",
             "rolledBackBy":""
          },
          {
             "sys_id":"e71efa6345550110a86630cf9552f3c0",
             "ahrId":"2b1efa6345550110a86630cf9552f3bc",
             "to":"7dbf2a05e7c133009a610558d2f6a96b",
             "from":"31bf2a05e7c133009a610558d2f6a968",
             "rolledBack":"false",
             "rolledBackBy":""
          }
       ],
       "rolledBackBy":"",
       "ARRIVED":true,
       "NOT_ARRIVED":false,
       "joinFroms":[
         
       ],
       "joinSatisfied":false,
       "rollingBackBy":0
    }

    WorkflowModelManager : getAllTransitionedIntoActivity (description de l’objet)

    Récupère les activités d’historique qui se sont exécutées et ont fait la transition vers celle représentée par le sys_id dans l’argument.

    L’état suivant est basé sur l’activité wf_activity.sys_id associée à l’activité représentée dans le haRecord existant en tant que TO dans une transition associée à n’importe quel ActivityHistoryRecords exécuté dans l’historique du workflow. (Ceci diffère de getPreviousByTransition, qui ne renvoie que les transitions TO qui précèdent le haRecord dans la séquence d’exécution (par temps).) La valeur de retour est une collection de ActivityHistoryRecords qui identifient l’argument haRecord.wfaId comme leur activité TO. Les valeurs de retour sont basées sur toutes les transitions dans la collection d’historique exécutée qui effectuent cette transition : Pour obtenir à temps l’activité exécutée avant cette activité, utilisez getPreviousByExecutedOrder.

    Tableau 3. Paramètres
    Nom Type Description
    description Objet Objet JavaScript ActivityHistoryRecord.
    Tableau 4. Renvoie
    Type Description
    Tableau d’objets Tableau d’objets JavaScript ActivityHistoryRecord.

    WorkflowModelManager : getAllTransitionedIntoActivityId(String haRecordSysId)

    Récupère les activités d’historique qui se sont exécutées et ont fait la transition vers celle représentée par le sys_id dans l’argument. L’état next est basé sur l’activité wf_activity.sys_id associée à l’activité représentée dans le haRecord existant en tant qu’TO dans une transition associée à tous les ActivityHistoryRecords exécutés dans l’historique du workflow. (Ceci diffère de getPreviousByTransition, qui ne renvoie que les transitions TO qui précèdent haRecord dans la séquence d’exécution (par heure).) La valeur de retour est une collection de ActivityHistoryRecords qui identifient l’argument haRecord.wfaId comme leur activité TO.

    L’état next est basé sur l’activité wf_activity.sys_id associée à l’activité représentée dans le haRecord existant en tant qu’TO dans une transition associée à tous les ActivityHistoryRecords exécutés dans l’historique du workflow. (Ceci diffère de getPreviousByTransition, qui ne renvoie que les transitions TO qui précèdent haRecord dans la séquence d’exécution (par heure).) La valeur de retour est une collection de ActivityHistoryRecords qui identifient l’argument haRecord.wfaId comme leur activité TO.

    Tableau 5. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne Le sys_id de l’historique de l’activité (table wf_history).
    Tableau 6. Renvoie
    Type Description
    Tableau d’objets Tableau d’objets JavaScript ActivityHistoryRecord demandés.
    var model = new WorkflowModelManager('a143585c3b001000dada82c09ccf3d44');
          model.getExecutedHistory();
          var activity = model.begin;
          gs.print('activity: ' + activity.wfaName + ', transitions: ' + activity.transitions.length);
          while( activity != null){    
              gs.print('activity: ' + activity.wfaName + ', transitions: ' + activity.transitions.length);    
              var parents = model.getAllTransitionedIntoActivity(activity);
              for( var i = 0; i < parents.length; i++ ){
                  gs.print(' ---------------  parent activity: ' + parents[i].wfaName );
                }
               activity = model.getNextByExecutedOrder( activity );
          }
        

    WorkflowModelManager : getExecutedHistory( )

    Il s’agit de la méthode de travail qui doit être appelée pour initialiser l’objet WorkflowModelManager . Au cours du processus d’initialisation de l’objet WorkflowModelManager, getExecutedHistory() crée et remplit le tableau d’objets de données activityHistoryRecord (qui est membre de la classe WorkflowModelManager ). La plupart des méthodes WorkflowModelManager renvoient un sous-ensemble du tableau activityHistoryRecord . Votre script peut ensuite appeler une ou plusieurs des méthodes activityHistoryRecord pour effectuer un travail supplémentaire.

    Tableau 7. Paramètres
    Nom Type Description
    Aucun
    Tableau 8. Renvoie
    Type Description
    Tableau de chaînes Tableau classé des sys_ids de la table wf_history. Il est peu probable que le code client utilise la valeur de retour ; Il est conservé en interne à cet objet pour être utilisé par les appels de méthode ultérieurs.
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');

    WorkflowModelManager : getFinalExecutedActivityList( )

    Interroge la table de wf_history par contexte et récupère toutes les activités exécutées dans le workflow donné par le contexte défini dans la construction de cet objet.

    Cette fonction génère une liste des activités exécutées dans l’ordre exact dans lequel chaque activité est passée par le ActivityManager.java côté serveur en utilisant le nouveau activity_index pour forcer la sortie de la base de données. D’un autre côté, cet appel ne donnera pas une vue d’ensemble de la situation. Il doit charger et mapper les transitions.

    Tableau 9. Paramètres
    Nom Type Description
    Aucun
    Tableau 10. Renvoie
    Type Description
    Tableau d’objets Tableau d’objets JavaScript ActivityHistoryRecord.

    WorkflowModelManager : getFinalExecutedActivityIdList( )

    Obtient la liste de wf_history.sys_ids toutes les activités qui ont été exécutées avec succès et qui n’ont pas été restaurées ou ignorées jusqu’au moment où la fonction a été appelée.

    Tableau 11. Paramètres
    Nom Type Description
    Aucun
    Tableau 12. Renvoie
    Type Description
    Tableau de chaînes Tableau de valeurs wf_history.sys_id pour les activités exécutées.
    var model = new WorkflowModelManager('ee3e0a053b101000dada82c09ccf3d7c');
          model.getExecutedHistory();
          var finals = model.getFinalExecutedActivityIdList();
          gs.print(' EXECUTION PATH IDs --------------- : '  + finals.length);
          
          for ( var x = 0; x < finals.length; x++ ) {
              gs.print(finals[x] );
          }

    WorkflowModelManager : getNextByExecutedOrder(Object haRecord)

    Récupère l’activité d’historique qui s’est exécutée juste après celle fournie dans l’argument.

    L’état next est basé sur l’indice d’activité qui reflète l’activité antérieure la plus proche dans le temps, et pas nécessairement la prochaine wf_activity la plus proche vers laquelle l’activité fournie a basculé. Pour obtenir la prochaine activité la plus proche qui a fait la transition vers ce haRecord transmis, utilisez getNextByTransitionOrder(haRecord).
    Remarque :
    Lors du processus d’assemblage du tableau d’ordre d’exécution, des blancs sont laissés dans le tableau où les objets d’historique ont été supprimés. Cela permet de s’assurer que l’index du tableau et la activity_index de l’objet restent synchronisés. Pour cette raison, tous les objets sortant du tableau d’ordre d’exécution doivent être testés pour nil() et ne doivent pas être supposés être l’enregistrement précédent en se basant uniquement sur activity_index ou la valeur de l’index du tableau.
    Tableau 13. Paramètres
    Nom Type Description
    haEnregistrement Objet Objet JavaScript ActivityHistoryRecord.
    Tableau 14. Renvoie
    Type Description
    Objet Objet JavaScript ActivityHistoryRecord demandé.

    L’exemple suivant montre comment utiliser la méthode getNextByExecutedOrder() pour récupérer l’activité d’historique qui s’est exécutée après l’activité spécifiée.

    var model = new WorkflowModelManager('34451ec2cb200200d71cb9c0c24c9c66'); // Sys_id of the workflow context
    model.getExecutedHistory();
    var current_hist_obj = model.getActivityHistoryRecordById('0199483adba52200a6a2b31be0b8f562');// Sys_id of the current activity from wf_history table
    var next_hist_obj = model.getNextByExecutedOrder(current_hist_obj);
    gs.info(JSON.stringify(next_hist_obj));

    Sortie :

    {
       "sys_id":"b2c5a06e07e0011094b4fe4f7c1ed049",
       "index":"3",
       "startTime":1640265864000,
       "endTime":1640265864000,
       "wfaId":"64d4e4aa07e0011094b4fe4f7c1ed060",
       "wfaIsParent":{
         
       },
       "parent":"",
       "wfaName":{
         
       },
       "adId":"1ca8d7cf0a0a0b265e9a000c2c08248c",
       "adName":{
         
       },
       "transitions":[
          {
             "sys_id":"bac5a06e07e0011094b4fe4f7c1ed07d",
             "ahrId":"b2c5a06e07e0011094b4fe4f7c1ed049",
             "to":"e0d4acaa07e0011094b4fe4f7c1ed062",
             "from":"64d4e4aa07e0011094b4fe4f7c1ed060",
             "rolledBack":"false",
             "rolledBackBy":""
          }
       ],
       "rolledBackBy":"",
       "ARRIVED":true,
       "NOT_ARRIVED":false,
       "joinFroms":[
         
       ],
       "joinSatisfied":false,
       "rollingBackBy":0
    }
    

    WorkflowModelManager : getNextByExecutedOrderId(String haRecordSysId)

    Récupère l’activité de l’historique qui est mise en cache par la wf_history.sys_id variable fournie dans l’argument, puis appelle getNextByExecutedOrder() avec l’objet JavaScript récupéré.

    Tableau 15. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne Le sys_id de l’historique de l’activité (table wf_history).
    Tableau 16. Renvoie
    Type Description
    Objet L’objet JavaScript ActivityHistoryRecord demandé.
    var model = new WorkflowModelManager('7b3e01573b130000dada82c09ccf3dcf');
          model.getExecutedHistory();
          var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');
          current.debugDump();
          
          var results = model.getNextByExecutedOrderId(current.sys_id);
          results.debugDump();

    WorkflowModelManager : getNextByTransitionId(String haRecordSysId)

    Récupère l’activité d’historique qui s’est exécutée juste après celle identifiée par la sys_id fournie dans l’argument.

    Cette fonction récupère l’enregistrement d’historique mis en cache associé au fourni wf_history.sys_id , puis appelle getNextByTransition. Les valeurs de retour sont basées sur les transitions qui ont précédé l’envoi haRecord et pas nécessairement sur les activités qui ont été exécutées juste avant l’heure d’arrivée haRecord . Pour obtenir à temps l’activité exécutée avant cette activité, utilisez getNextByExecutedOrder.

    Tableau 17. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne Sys_id de l’enregistrement d’historique des activités [wf_history] souhaité.
    Tableau 18. Renvoie
    Type Description
    Tableau d’objets Tableau d’objets JavaScript ActivityHistoryRecord.
    var model = new WorkflowModelManager('7b3e01573b130000dada82c09ccf3dcf');
    model.getExecutedHistory();
    model.playBack();
          
    var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');
    current.debugDump();
    var results = model.getNextByTransitionId(current.sys_id);
    gs.print('COMPLETED NEXT' + results.length );
    for(var i = 0; i < results.length; i++){
      results[i].debugDump();
    }

    WorkflowModelManager : getPreviousByExecutedOrder(Object haRecord)

    Récupère l’activité d’historique exécutée juste avant celle fournie dans l’argument.

    Le statut précédent est basé sur l’indice d’activité reflétant l’activité antérieure la plus proche dans le temps et pas nécessairement l’activité antérieure la plus proche avec une transition valide vers cette activité. Pour obtenir l’activité antérieure la plus proche qui a fait la transition vers ce haRecord transmis en utilisant getPreviousByTransition( haRecord).
    Remarque :
    Lors du processus d’assemblage du tableau d’ordre d’exécution, des blancs sont laissés dans le tableau où les objets d’historique ont été supprimés. Cela permet de s’assurer que l’index du tableau et le activity_index de l’objet restent synchronisés. Pour cette raison, tous les objets sortant du tableau d’ordre d’exécution doivent être testés pour nil() et ne doivent pas être supposés être l’enregistrement précédent basé sur la valeur de l’index activity_index ou du tableau.
    Tableau 19. Paramètres
    Nom Type Description
    haEnregistrement Objet Objet JavaScript ActivityHistoryRecord
    Tableau 20. Renvoie
    Type Description
    Objet L’objet JavaScript ActivityHistoryRecord demandé.

    WorkflowModelManager : getPreviousByExecutedOrderId(String haRecordSysId)

    Récupère l’activité de l’historique mise en cache par la wf_history.sys_id variable fournie dans l’argument, puis appelle getPreviousByExecutedOrder() avec l’objet JavaScript récupéré.

    Tableau 21. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne ID système de l’historique du workflow (wf_history.sys_id)
    Tableau 22. Renvoie
    Type Description
    ActivityHistoryRecord L’objet JavaScript ActivityHistoryRecord demandé.
    var model = new WorkflowModelManager('contextId');
          model.getExecutedHistory();
          var current = model.getActivityHistoryRecordById('wf_history.sys_id');
          current.debugDump();
          
          var results = model.getPreviousByExecutedOrderId(current.sys_id);
          results.debugDump();

    WorkflowModelManager : getPreviousByTransition(Object haRecord)

    Récupère les activités d’historique exécutées juste avant celle fournie dans l’argument.

    L’état suivant est basé sur le wf_activity.sys_id associé à l’activité représentée dans le haRecord existant en tant que TO dans une transition associée à tous les ActivityHistoryRecords qui précèdent le haRecord dans la séquence d’exécution. (Cela diffère de getAllTransitionedIntoActivity, qui renvoie toutes les transitions TO jusqu’au haRecord donné dans la séquence d’exécution.) La valeur de retour est une collection de ActivityHistoryRecords qui identifient l’argument haRecord.wfaId comme leur activité TO. Les valeurs de retour sont basées sur les transitions qui ont précédé la soumission de haRecord et pas nécessairement sur les activités qui se sont exécutées juste avant le haRecord dans le temps. Pour obtenir à temps l’activité exécutée avant cette activité, utilisez getPreviousByExecutedOrder.

    Tableau 23. Paramètres
    Nom Type Description
    haEnregistrement Objet Objet JavaScript ActivityHistoryRecord.
    Tableau 24. Renvoie
    Type Description
    Tableau d’objets Tableau d’objets JavaScript ActivityHistoryRecord demandés.

    WorkflowModelManager : getPreviousByTransitionId(String haRecordSysId)

    Récupère les activités d’historique exécutées juste avant celle fournie dans l’argument.

    L’état next est basé sur l’activité wf_activity.sys_id associée à l’activité représentée dans le haRecord existant en tant que TO dans une transition associée à tous les ActivityHistoryRecords qui précèdent le haRecord dans la séquence d’exécution. La valeur de retour est une collection de ActivityHistoryRecords qui identifient l’argument haRecord.wfaId comme leur activité TO. Les valeurs de retour sont basées sur les transitions qui ont précédé le cumul haRecord et pas nécessairement sur les activités qui se sont exécutées juste avant le haRecord dans le temps. Pour obtenir à temps l’activité exécutée avant cette activité, utilisez getPreviousByExecutedOrder().

    Tableau 25. Paramètres
    Nom Type Description
    haRecordSysId (en anglais seulement) Chaîne Sys_id de l’historique de l’activité. Situé dans la table wf_history.
    Tableau 26. Renvoie
    Type Description
    Objet Tableau d’objets JavaScript ActivityHistoryRecord demandés.

    L’exemple suivant montre comment utiliser la méthode getPreviousByTransitionId() pour obtenir des objets ActivityHistoryRecord.

    var w_history = new GlideRecord('wf_history');
    w_history.addQuery('context.id', '089ebdad1b420110c97a40c6cc4bcbf7'); // Pass sys_id of record -> Requested Item / Change Request / Request, etc....
    w_history.query();
    if (w_history.next()) {
        var model = new WorkflowModelManager(w_history.context); // Call sys_id of the workflow context
        model.getExecutedHistory();
        var previousObje_hist_obj = model.getPreviousByTransitionId(w_history.sys_id); // Sys_id of wf_history table
        gs.info(JSON.stringify(previousObje_hist_obj));
    }

    Sortie :

    [
      {
        "sys_id": "a40a92950721011094b4fe4f7c1ed05e",
        "index": "1",
        "startTime": 1644255752000,
        "endTime": 1644255758000,
        "wfaId": "28200e2a77873300b473455caa1061cd",
        "wfaIsParent": {},
        "parent": "",
        "wfaName": {},
        "adId": "3961a1da0a0a0b5c00ecd84822f70d85",
        "adName": {},
        "transitions": [
          {
            "sys_id": "060ad6950721011094b4fe4f7c1ed016",
            "ahrId": "a40a92950721011094b4fe4f7c1ed05e",
            "to": "24204e2a77873300b473455caa10611a",
            "from": "28200e2a77873300b473455caa1061cd",
            "rolledBack": "false",
            "rolledBackBy": ""
          }
        ],
        "rolledBackBy": "",
        "ARRIVED": true,
        "NOT_ARRIVED": false,
        "joinFroms": [],
        "joinSatisfied": false,
        "rollingBackBy": 0
      }
    ]

    WorkflowModelManager : WorkflowModelManager(String contextId)

    Crée un nouvel objet WorkflowModelManager (constructeur) dans le contexte spécifié.

    Tableau 27. Paramètres
    Nom Type Description
    contextId Chaîne ID du contexte dans lequel vous souhaitez créer le WorkflowModelManager.
    Tableau 28. Renvoie
    Type Description
    ActivityHistoryRecord L’objet JavaScript ActivityHistoryRecord demandé.
    var model = new WorkflowModelManager('MyContextId');