ActivityHistoryRecord : global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 21 minutes de lecture
  • L’API ActivityHistoryRecord fournit des méthodes qui facilitent l’interaction avec un objet WorkflowModelManager. Il s’agit d’un objet de données membre de la classe WorkflowModelManager .

    Cette API est essentiellement une copie des données d’un enregistrement Glide sur la table Activity History [wf_history]. Des méthodes d’assistance sont également définies pour cette classe. Il n’y a pas d’accesseur ou de mutateur pour les éléments de données simples de cette classe.

    ActivityHistoryRecord : addArrivedActivityToJoin(String Array activityIds)

    Modifie les arrivedState ID déjà connus en vrai.

    Dès que cette méthode change la arrivedState valeur des ID connus en vrai, elle teste si la jointure est satisfaite. Si c’est le cas, la marche du modèle peut continuer ; Si ce n’est pas le cas, elle doit passer à la transition appropriée suivante. Ceci est appelé pendant la lecture, comme prévu wf_activities flux vers la jointure.

    Tableau 1. Paramètres
    Nom Type Description
    ID d’activités Tableau de chaînes Tableau d’wf_activity.sys_ids qui se dirigent vers la jointure.
    Tableau 2. Renvoie
    Type Description
    nul

    ActivityHistoryRecord : addJoinFromActivityIds(Tableau de chaînes activityIds)

    Alimente tous les sys_ids de wf_activity attendus qui sont censés passer par cette jointure et définit leur arriveState = false.

    Cet état bascule sur vrai lorsque chaque activité attendue passe à cette instance de jointure. Cette méthode est appelée dans le cadre de la construction du modèle mis en cache en mémoire et n’est pas appelée pendant la lecture.

    Tableau 3. Paramètres
    Nom Type Description
    ID d’activités Tableau de chaînes Tableau d’wf_activity.sys_ids qui se dirigent vers la jointure.
    Tableau 4. Renvoie
    Type Description
    nul

    ActivityHistoryRecord : addTransition(Object InTransition)

    Comme le modèle est mis en cache par _getExecutedTransitions(), cette méthode ajoute les transitions qui sont passées de cette activité vers l’activité .to.

    Tableau 5. Paramètres
    Nom Type Description
    En cours de transition Objet Objet JavaScript ExecutedTransition à ajouter à cette activité.
    Tableau 6. Renvoie
    Type Description
    nul

    ActivityHistoryRecord : debugDump( )

    Imprime les informations de débogage.

    Tableau 7. Paramètres
    Nom Type Description
    Aucun
    Tableau 8. Renvoie
    Type Description
    nul

    L’exemple de code suivant montre comment utiliser cette méthode. Il utilise les enregistrements d’historique de workflow les plus anciens d’une instance de base.

    // These are associated with the Change Request - Normal workflow for CHG0000037.
    var wfhGR = new GlideRecord ('wf_history');
    wfhGR.addQuery('context.id', '41cdb152db252200a6a2b31be0b8f527');
    wfhGR.addQuery('context.table', 'change_request');
    wfhGR.orderBy ('activity_index');
    wfhGR.query();
    while (wfhGR.next())  {
      var script_name = 'AHR';
      //
      //  Acquire the execution history of the workflow's activities.
      //  Do this just once while processing the first activity.
    
      if(wfhGR.activity_index == 0) {
        var model = new WorkflowModelManager( wfhGR.context );
        model.getExecutedHistory();
      }
    
    //
    // Access a hash of ActivityHistoryRecord javascript objects,
    // hashed by the sys_id of the wf_history record.
    // There will be one ActivityHistoryRecord for each activity.
    
      var ActivityHistoryRecord = model.getActivityHistoryRecordById(wfhGR.sys_id);
    
    //
    // Use ActivityHistoryRecord methods to display selected values
    
      gs.log('Log String [' + ActivityHistoryRecord.getLogString() + ']', script_name);
      gs.log('debugDump START', script_name);
      ActivityHistoryRecord.debugDump();
      gs.log('debugDump END', script_name);
      gs.log('Turnstile?[' + ActivityHistoryRecord.isTurnstile() + ']', script_name);
      gs.log('Transition Count[' + ActivityHistoryRecord.getTransitionCount() + ']\n', script_name );
    }

    Sortie :

    [0:00:00.133] Script completed in scope global: script
    Script execution history and recovery available here
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57a  History INDEX:0  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:e233b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Begin  WF Activity DEF ID:c7a5e32c0a0a0b3a002377c24ed8ea76  WF Activity DEF NAME:Begin  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57a
    *** Script:        History INDEX: 0
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 0
    *** Script:       WF Activity ID: e233b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Begin
    *** Script:   WF Activity DEF ID: c7a5e32c0a0a0b3a002377c24ed8ea76
    *** Script: WF Activity DEF NAME: Begin
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57d  History INDEX:1  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:2e33b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Change moves to Assess  WF Activity DEF ID:d93a02ae0a0a0aa30077abad3fdac035  WF Activity DEF NAME:Wait for condition  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57d
    *** Script:        History INDEX: 1
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 1
    *** Script:       WF Activity ID: 2e33b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Change moves to Assess
    *** Script:   WF Activity DEF ID: d93a02ae0a0a0aa30077abad3fdac035
    *** Script: WF Activity DEF NAME: Wait for condition
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:3e28c4b6dba52200a6a2b31be0b8f57e  History INDEX:2  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:6e33b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Requested  WF Activity DEF ID:50a78fa50a6a803f66d064255f7201a5  WF Activity DEF NAME:Approval Action  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 3e28c4b6dba52200a6a2b31be0b8f57e
    *** Script:        History INDEX: 2
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 2
    *** Script:       WF Activity ID: 6e33b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Requested
    *** Script:   WF Activity DEF ID: 50a78fa50a6a803f66d064255f7201a5
    *** Script: WF Activity DEF NAME: Approval Action
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:0d38c4b6dba52200a6a2b31be0b8f5cc  History INDEX:3  History START TIME:1585659881000  History END TIME:1585659891000  WF Activity ID:2a33b949cb020200d71cb9c0c24c9c26  WF Activity NAME:Technical approvals  WF Activity DEF ID:354e911f0a0a029a00e6a0e6ad74206f  WF Activity DEF NAME:Approval - Group  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 0d38c4b6dba52200a6a2b31be0b8f5cc
    *** Script:        History INDEX: 3
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 3
    *** Script:       WF Activity ID: 2a33b949cb020200d71cb9c0c24c9c26
    *** Script:     WF Activity NAME: Technical approvals
    *** Script:   WF Activity DEF ID: 354e911f0a0a029a00e6a0e6ad74206f
    *** Script: WF Activity DEF NAME: Approval - Group
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:c538c4b6dba52200a6a2b31be0b8f5ce  History INDEX:4  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:6233b949cb020200d71cb9c0c24c9c5b  WF Activity NAME:Check if Change is "On hold"  WF Activity DEF ID:98f621ca0a0a0b5900f7c291f5e45a0e  WF Activity DEF NAME:If  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: c538c4b6dba52200a6a2b31be0b8f5ce
    *** Script:        History INDEX: 4
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 4
    *** Script:       WF Activity ID: 6233b949cb020200d71cb9c0c24c9c5b
    *** Script:     WF Activity NAME: Check if Change is "On hold"
    *** Script:   WF Activity DEF ID: 98f621ca0a0a0b5900f7c291f5e45a0e
    *** Script: WF Activity DEF NAME: If
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:cd3808b6dba52200a6a2b31be0b8f501  History INDEX:5  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:e633b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Move to Authorize  WF Activity DEF ID:1ca8d7cf0a0a0b265e9a000c2c08248c  WF Activity DEF NAME:Set Values  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: cd3808b6dba52200a6a2b31be0b8f501
    *** Script:        History INDEX: 5
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 5
    *** Script:       WF Activity ID: e633b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Move to Authorize
    *** Script:   WF Activity DEF ID: 1ca8d7cf0a0a0b265e9a000c2c08248c
    *** Script: WF Activity DEF NAME: Set Values
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    

    ActivityHistoryRecord : doesJoinContainActivity( )

    Teste la wf_activity sys_id entrante, présumée être implantée dans cet enregistrement d’historique. Si c’est le cas, il est testé pour voir s’il s’agit d’une activité qui proviendrait de cette jointure.

    Tableau 9. Paramètres
    Nom Type Description
    Aucun
    Tableau 10. Renvoie
    Type Description
    Booléen Vrai, s’il s’agit d’une activité qui proviendrait de cette jointure.

    ActivityHistoryRecord : getLogString( )

    Renvoie la chaîne de journal à partir de l’enregistrement d’historique.

    Tableau 11. Paramètres
    Nom Type Description
    Aucun
    Tableau 12. Renvoie
    Type Description
    Chaîne Chaîne de journal.

    L’exemple de code suivant montre comment utiliser cette méthode. Il utilise les enregistrements d’historique de workflow les plus anciens d’une instance de base.

    // These are associated with the Change Request - Normal workflow for CHG0000037.
    var wfhGR = new GlideRecord ('wf_history');
    wfhGR.addQuery('context.id', '41cdb152db252200a6a2b31be0b8f527');
    wfhGR.addQuery('context.table', 'change_request');
    wfhGR.orderBy ('activity_index');
    wfhGR.query();
    while (wfhGR.next())  {
      var script_name = 'AHR';
      //
      //  Acquire the execution history of the workflow's activities.
      //  Do this just once while processing the first activity.
    
      if(wfhGR.activity_index == 0) {
        var model = new WorkflowModelManager( wfhGR.context );
        model.getExecutedHistory();
      }
    
    //
    // Access a hash of ActivityHistoryRecord javascript objects,
    // hashed by the sys_id of the wf_history record.
    // There will be one ActivityHistoryRecord for each activity.
    
      var ActivityHistoryRecord = model.getActivityHistoryRecordById(wfhGR.sys_id);
    
    //
    // Use ActivityHistoryRecord methods to display selected values
    
      gs.log('Log String [' + ActivityHistoryRecord.getLogString() + ']', script_name);
      gs.log('debugDump START', script_name);
      ActivityHistoryRecord.debugDump();
      gs.log('debugDump END', script_name);
      gs.log('Turnstile?[' + ActivityHistoryRecord.isTurnstile() + ']', script_name);
      gs.log('Transition Count[' + ActivityHistoryRecord.getTransitionCount() + ']\n', script_name );
    }

    Sortie :

    [0:00:00.133] Script completed in scope global: script
    Script execution history and recovery available here
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57a  History INDEX:0  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:e233b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Begin  WF Activity DEF ID:c7a5e32c0a0a0b3a002377c24ed8ea76  WF Activity DEF NAME:Begin  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57a
    *** Script:        History INDEX: 0
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 0
    *** Script:       WF Activity ID: e233b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Begin
    *** Script:   WF Activity DEF ID: c7a5e32c0a0a0b3a002377c24ed8ea76
    *** Script: WF Activity DEF NAME: Begin
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57d  History INDEX:1  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:2e33b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Change moves to Assess  WF Activity DEF ID:d93a02ae0a0a0aa30077abad3fdac035  WF Activity DEF NAME:Wait for condition  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57d
    *** Script:        History INDEX: 1
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 1
    *** Script:       WF Activity ID: 2e33b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Change moves to Assess
    *** Script:   WF Activity DEF ID: d93a02ae0a0a0aa30077abad3fdac035
    *** Script: WF Activity DEF NAME: Wait for condition
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:3e28c4b6dba52200a6a2b31be0b8f57e  History INDEX:2  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:6e33b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Requested  WF Activity DEF ID:50a78fa50a6a803f66d064255f7201a5  WF Activity DEF NAME:Approval Action  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 3e28c4b6dba52200a6a2b31be0b8f57e
    *** Script:        History INDEX: 2
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 2
    *** Script:       WF Activity ID: 6e33b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Requested
    *** Script:   WF Activity DEF ID: 50a78fa50a6a803f66d064255f7201a5
    *** Script: WF Activity DEF NAME: Approval Action
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:0d38c4b6dba52200a6a2b31be0b8f5cc  History INDEX:3  History START TIME:1585659881000  History END TIME:1585659891000  WF Activity ID:2a33b949cb020200d71cb9c0c24c9c26  WF Activity NAME:Technical approvals  WF Activity DEF ID:354e911f0a0a029a00e6a0e6ad74206f  WF Activity DEF NAME:Approval - Group  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 0d38c4b6dba52200a6a2b31be0b8f5cc
    *** Script:        History INDEX: 3
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 3
    *** Script:       WF Activity ID: 2a33b949cb020200d71cb9c0c24c9c26
    *** Script:     WF Activity NAME: Technical approvals
    *** Script:   WF Activity DEF ID: 354e911f0a0a029a00e6a0e6ad74206f
    *** Script: WF Activity DEF NAME: Approval - Group
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:c538c4b6dba52200a6a2b31be0b8f5ce  History INDEX:4  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:6233b949cb020200d71cb9c0c24c9c5b  WF Activity NAME:Check if Change is "On hold"  WF Activity DEF ID:98f621ca0a0a0b5900f7c291f5e45a0e  WF Activity DEF NAME:If  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: c538c4b6dba52200a6a2b31be0b8f5ce
    *** Script:        History INDEX: 4
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 4
    *** Script:       WF Activity ID: 6233b949cb020200d71cb9c0c24c9c5b
    *** Script:     WF Activity NAME: Check if Change is "On hold"
    *** Script:   WF Activity DEF ID: 98f621ca0a0a0b5900f7c291f5e45a0e
    *** Script: WF Activity DEF NAME: If
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:cd3808b6dba52200a6a2b31be0b8f501  History INDEX:5  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:e633b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Move to Authorize  WF Activity DEF ID:1ca8d7cf0a0a0b265e9a000c2c08248c  WF Activity DEF NAME:Set Values  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: cd3808b6dba52200a6a2b31be0b8f501
    *** Script:        History INDEX: 5
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 5
    *** Script:       WF Activity ID: e633b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Move to Authorize
    *** Script:   WF Activity DEF ID: 1ca8d7cf0a0a0b265e9a000c2c08248c
    *** Script: WF Activity DEF NAME: Set Values
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    

    ActivityHistoryRecord : getSatisfiedJoinActivities( )

    Renvoie la sys_ids des enregistrements d’historique qui font la transition vers cette activité de jointure et qui sont déjà arrivés.

    Tableau 13. Paramètres
    Nom Type Description
    Aucun
    Tableau 14. Renvoie
    Type Description
    Tableau de chaînes Tableau des sys_ids des enregistrements d’historique qui font la transition vers cette activité de jointure.

    ActivityHistoryRecord : getTransitionCount( )

    Renvoie le nombre de transitions pour cette activité.

    Tableau 15. Paramètres
    Nom Type Description
    Aucun
    Tableau 16. Renvoie
    Type Description
    Numéro Nombre de transitions à partir de cette activité.

    L’exemple de code suivant montre comment utiliser cette méthode. Il utilise les enregistrements d’historique de workflow les plus anciens d’une instance de base.

    // These are associated with the Change Request - Normal workflow for CHG0000037.
    var wfhGR = new GlideRecord ('wf_history');
    wfhGR.addQuery('context.id', '41cdb152db252200a6a2b31be0b8f527');
    wfhGR.addQuery('context.table', 'change_request');
    wfhGR.orderBy ('activity_index');
    wfhGR.query();
    while (wfhGR.next())  {
      var script_name = 'AHR';
      //
      //  Acquire the execution history of the workflow's activities.
      //  Do this just once while processing the first activity.
    
      if(wfhGR.activity_index == 0) {
        var model = new WorkflowModelManager( wfhGR.context );
        model.getExecutedHistory();
      }
    
    //
    // Access a hash of ActivityHistoryRecord javascript objects,
    // hashed by the sys_id of the wf_history record.
    // There will be one ActivityHistoryRecord for each activity.
    
      var ActivityHistoryRecord = model.getActivityHistoryRecordById(wfhGR.sys_id);
    
    //
    // Use ActivityHistoryRecord methods to display selected values
    
      gs.log('Log String [' + ActivityHistoryRecord.getLogString() + ']', script_name);
      gs.log('debugDump START', script_name);
      ActivityHistoryRecord.debugDump();
      gs.log('debugDump END', script_name);
      gs.log('Turnstile?[' + ActivityHistoryRecord.isTurnstile() + ']', script_name);
      gs.log('Transition Count[' + ActivityHistoryRecord.getTransitionCount() + ']\n', script_name );
    }

    Sortie :

    [0:00:00.133] Script completed in scope global: script
    Script execution history and recovery available here
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57a  History INDEX:0  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:e233b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Begin  WF Activity DEF ID:c7a5e32c0a0a0b3a002377c24ed8ea76  WF Activity DEF NAME:Begin  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57a
    *** Script:        History INDEX: 0
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 0
    *** Script:       WF Activity ID: e233b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Begin
    *** Script:   WF Activity DEF ID: c7a5e32c0a0a0b3a002377c24ed8ea76
    *** Script: WF Activity DEF NAME: Begin
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:a228c4b6dba52200a6a2b31be0b8f57d  History INDEX:1  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:2e33b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Change moves to Assess  WF Activity DEF ID:d93a02ae0a0a0aa30077abad3fdac035  WF Activity DEF NAME:Wait for condition  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: a228c4b6dba52200a6a2b31be0b8f57d
    *** Script:        History INDEX: 1
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 1
    *** Script:       WF Activity ID: 2e33b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Change moves to Assess
    *** Script:   WF Activity DEF ID: d93a02ae0a0a0aa30077abad3fdac035
    *** Script: WF Activity DEF NAME: Wait for condition
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:3e28c4b6dba52200a6a2b31be0b8f57e  History INDEX:2  History START TIME:1585659881000  History END TIME:1585659881000  WF Activity ID:6e33b949cb020200d71cb9c0c24c9c1f  WF Activity NAME:Requested  WF Activity DEF ID:50a78fa50a6a803f66d064255f7201a5  WF Activity DEF NAME:Approval Action  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 3e28c4b6dba52200a6a2b31be0b8f57e
    *** Script:        History INDEX: 2
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659881000
    *** Script:        History INDEX: 2
    *** Script:       WF Activity ID: 6e33b949cb020200d71cb9c0c24c9c1f
    *** Script:     WF Activity NAME: Requested
    *** Script:   WF Activity DEF ID: 50a78fa50a6a803f66d064255f7201a5
    *** Script: WF Activity DEF NAME: Approval Action
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:0d38c4b6dba52200a6a2b31be0b8f5cc  History INDEX:3  History START TIME:1585659881000  History END TIME:1585659891000  WF Activity ID:2a33b949cb020200d71cb9c0c24c9c26  WF Activity NAME:Technical approvals  WF Activity DEF ID:354e911f0a0a029a00e6a0e6ad74206f  WF Activity DEF NAME:Approval - Group  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: 0d38c4b6dba52200a6a2b31be0b8f5cc
    *** Script:        History INDEX: 3
    *** Script:   History START TIME: 1585659881000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 3
    *** Script:       WF Activity ID: 2a33b949cb020200d71cb9c0c24c9c26
    *** Script:     WF Activity NAME: Technical approvals
    *** Script:   WF Activity DEF ID: 354e911f0a0a029a00e6a0e6ad74206f
    *** Script: WF Activity DEF NAME: Approval - Group
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:c538c4b6dba52200a6a2b31be0b8f5ce  History INDEX:4  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:6233b949cb020200d71cb9c0c24c9c5b  WF Activity NAME:Check if Change is "On hold"  WF Activity DEF ID:98f621ca0a0a0b5900f7c291f5e45a0e  WF Activity DEF NAME:If  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: c538c4b6dba52200a6a2b31be0b8f5ce
    *** Script:        History INDEX: 4
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 4
    *** Script:       WF Activity ID: 6233b949cb020200d71cb9c0c24c9c5b
    *** Script:     WF Activity NAME: Check if Change is "On hold"
    *** Script:   WF Activity DEF ID: 98f621ca0a0a0b5900f7c291f5e45a0e
    *** Script: WF Activity DEF NAME: If
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    
    
    AHR: Log String [HISTORY RECORD:  History ID:cd3808b6dba52200a6a2b31be0b8f501  History INDEX:5  History START TIME:1585659891000  History END TIME:1585659891000  WF Activity ID:e633b949cb020200d71cb9c0c24c9c20  WF Activity NAME:Move to Authorize  WF Activity DEF ID:1ca8d7cf0a0a0b265e9a000c2c08248c  WF Activity DEF NAME:Set Values  Transition Count: 1  Is Turnstile (loop) : false  Is Join: false]
    AHR: debugDump START
    *** Script: 
    *** Script: WF HISTORY RECORD:
    *** Script:           History ID: cd3808b6dba52200a6a2b31be0b8f501
    *** Script:        History INDEX: 5
    *** Script:   History START TIME: 1585659891000
    *** Script:     History END TIME: 1585659891000
    *** Script:        History INDEX: 5
    *** Script:       WF Activity ID: e633b949cb020200d71cb9c0c24c9c20
    *** Script:     WF Activity NAME: Move to Authorize
    *** Script:   WF Activity DEF ID: 1ca8d7cf0a0a0b265e9a000c2c08248c
    *** Script: WF Activity DEF NAME: Set Values
    *** Script:     Transition Count: 1
    *** Script: Roll Back Originator: 
    *** Script:  Is Turnstile (loop): false
    *** Script:              Is Join: false
    AHR: debugDump END
    AHR: Turnstile? [false]
    AHR: Transition Count [1]
    

    ActivityHistoryRecord : getUnSatisfiedJoinActivities( )

    Renvoie la sys_ids des enregistrements d’historique qui font la transition vers cette activité de jointure que la jointure attend toujours.

    Tableau 17. Paramètres
    Nom Type Description
    Aucun
    Tableau 18. Renvoie
    Type Description
    Tableau de chaînes Tableau des sys_ids des enregistrements d’historique qui font la transition vers cette activité de jointure.

    ActivityHistoryRecord : isARollback( )

    Détermine si cette activité fait partie des activités de restauration.

    Tableau 19. Paramètres
    Nom Type Description
    Aucun
    Tableau 20. Renvoie
    Type Description
    Booléen

    Marqueur indiquant si l’activité est l’une des activités de restauration.

    Valeurs valides :
    • true : l’activité est un retour en arrière.
    • faux : l’activité n’est pas un retour en arrière.

    ActivityHistoryRecord : isIdADestination(String ahrSys_id)

    Détermine si le sys_id transmis est une destination de l’une des transitions associées à cette instance d’un ActivityHistoryRecord.

    Tableau 21. Paramètres
    Nom Type Description
    ahrSys_id Chaîne L’historique de l’activité sys_id à partir de la table wf_history.
    Tableau 22. Renvoie
    Type Description
    Booléen Vrai, si le sys_id transmis est une destination de l’une des transitions.

    ActivityHistoryRecord : isJoin( )

    Détermine si cette activité est une jointure.

    Tableau 23. Paramètres
    Nom Type Description
    Aucun
    Tableau 24. Renvoie
    Type Description
    Booléen Vrai, si l’activité est « Rejoindre ».

    ActivityHistoryRecord : isJoinSatisfied ( )

    Examine la valeur du arriveState.

    Appelé pendant la lecture lorsque la transition vers sys_id d’une transition pointe vers une activité qui est une jointure.

    Tableau 25. Paramètres
    Nom Type Description
    Aucun
    Tableau 26. Renvoie
    Type Description
    Booléen Vrai, si la jointure est satisfaite.

    ActivityHistoryRecord : isJoinWaitingForActivity(String Array activityIds)

    Teste la wf_activity sys_id entrante, présumée être implantée dans cet enregistrement d’historique.

    Si c’est le cas, il est testé pour voir s’il est déjà passé par là ; Si c’est le cas, alors cette jointure n’est pas en attente de cette activité et elle doit chercher plus en aval celle qui est en attente. Ce test est appelé en séquence lorsque le modèle est parcouru, de sorte qu’il présume dans les cas de restaurations et de boucles. Si le sys_id est ici et que le marqueur est vrai, cette jointure en attente se trouve plus haut dans la séquence. Ce type de vérification est requis car les enregistrements d’historique des jointures sont supprimés de la table d’historique, et il est donc possible qu’un enregistrement se trouve dans la table de transition sans correspondance dans la table d’historique correspondante, mais qu’il soit toujours une correspondance appropriée pour une instance exécutée antérieurement de la même jointure.

    Tableau 27. Paramètres
    Nom Type Description
    ID d’activités Tableau de chaînes Tableau d’wf_activity.sys_ids qui se dirigent vers la jointure.
    Tableau 28. Renvoie
    Type Description
    Booléen Vrai, si l’activité est déjà passée.

    ActivityHistoryRecord : isRolledBack( )

    Détermine si ce workflow a été restauré.

    Tableau 29. Paramètres
    Nom Type Description
    Aucun
    Tableau 30. Renvoie
    Type Description
    Booléen Vrai, si ce workflow a été restauré.

    ActivityHistoryRecord : isTurnstile( )

    Détermine si l’activité en cours est un tourniquet.

    Tableau 31. Paramètres
    Nom Type Description
    Aucun
    Tableau 32. Renvoie
    Type Description
    Booléen

    Marqueur indiquant si l’activité est un tourniquet.

    Valeurs valides :
    • true : l’activité est un tourniquet.
    • faux : l’activité n’est pas un tourniquet.

    L’exemple de code suivant montre comment utiliser cette méthode pour détecter un tourniquet. Il est basé sur le workflow trouvé dans l’activité Restaurer au workflow. Vous pouvez confirmer la sortie de ce script en examinant l’onglet Historique de l’activité du workflow lorsque vous affichez le workflow sur le formulaire des éléments demandés (RITM).

    var wfhGR = new GlideRecord ('wf_history');
    wfhGR.addQuery ('context.id','cc45480d2f9b8110b99eb2e72799b6f9'); // sys_id of the RITM
    wfhGR.addQuery ('context.table','sc_req_item'); // Table for the RITM
    wfhGR.orderBy  ('activity_index');
    wfhGR.query();
    var turnstile_count = 0;
    while (wfhGR.next())  {
      var script_name = 'AHR';
      //
      // Acquire the execution history of the workflow's activities.
      // Do this just once while processing the first activity.
    
      if(wfhGR.activity_index == 0) {
        var model = new WorkflowModelManager(wfhGR.context);
        model.getExecutedHistory();
      }
    
      //
      // Access a hash of ActivityHistoryRecord javascript objects,
      // hashed by the sys_id of the wf_history record.
      // There will be one ActivityHistoryRecord for each activity.
    
      var ActivityHistoryRecord = model.getActivityHistoryRecordById(wfhGR.sys_id);
    
      //
      // Use ActivityHistoryRecord methods to display turnstile activities.
    
      if(ActivityHistoryRecord.isTurnstile()) {
        var log_string = ActivityHistoryRecord.getLogString();
        var name_start = log_string.indexOf('WF Activity NAME:');
        var name_end = log_string.indexOf('WF Activity DEF ID:');
        var name = log_string.substring(name_start, name_end).trim();
        gs.log(name + ' Activity ' + wfhGR.activity_index + ' is a turnstile.', script_name);
        turnstile_count++;
      } 
    } 
    gs.log ('Turnstile activities detected: ' + turnstile_count, script_name);

    Sortie :

    AHR: WF Activity NAME:Prevent infinite loops Activity 8 is a turnstile.
    AHR: WF Activity NAME:Prevent infinite loops Activity 13 is a turnstile.
    AHR: WF Activity NAME:Prevent infinite loops Activity 18 is a turnstile.
    AHR: WF Activity NAME:Prevent infinite loops Activity 23 is a turnstile.
    AHR: Turnstile activities detected: 4