WorkflowModelManager - グローバル

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:25分
  • WorkflowModelManager スクリプトインクルードは、ワークフロー モデルを照会するメソッド、指定されたワークフロー履歴アイテム間の前後のステップ操作、アクティビティおよび移行固有の情報の履歴を照会するメソッドを提供します。

    WorkflowModelManager スクリプトインクルードとのインタラクションは、ActivityHistoryRecord データオブジェクトを介して行われます。ActivityHistoryRecord オブジェクトは内部クラスであり、WorkflowModelManager との対話中にのみ使用されます。

    ワークフロー アクティビティの実行履歴を取得するには:
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    
    ワークフローの再生を出力するには:
    var model = new WorkflowModelManager('myContextId');
    model.getExecutedHistory();
    model.playBack();
    

    このとき、実行されたトランジションをロードするには playBack が必要です。これは、特定のアクティビティにロールバックするためにモデルを逆方向に歩く役割も果たします。

    キャッシュされたモデルの詳細を表示するには:
    var model = new WorkflowModelManager('myContextId');
     model.getExecutedHistory();
     model.dump();

    WorkflowModelManager - WorkflowModelManager(文字列 contextId)

    指定されたコンテキスト内に新しい WorkflowModelManager オブジェクト (コンストラクター) を作成します。

    表 : 1. パラメーター
    名前 タイプ 説明
    contextId 文字列 WorkflowModelManager を作成するコンテキストの ID。
    表 : 2. 戻り値
    タイプ 説明
    アクティビティ履歴レコード 要求された ActivityHistoryRecord JavaScript オブジェクト。
    var model = new WorkflowModelManager('MyContextId');

    WorkflowModelManager:getActivityHistoryRecordById(文字列 haRecordSysId)

    引数で指定された wf_history.sys_id によってキャッシュされた履歴アクティビティを取得します。

    表 : 3. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 目的のアクティビティ履歴 [wf_history] レコードのSys_id。
    表 : 4. 戻り値
    タイプ 説明
    アクティビティ履歴レコード 要求された ActivityHistoryRecord JavaScript オブジェクト。

    この例では、このメソッドを使用して指定された履歴アクティビティレコードを取得する方法を示します。

    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));

    出力:

    
    {
       "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(オブジェクトの説明)

    実行され、引数の sys_id で表されるアクティビティに移行した履歴アクティビティを取得します。

    次のステータスは、ワークフローの履歴で実行された任意のActivityHistoryRecordsに関連付けられた移行でTOとして存在するhaRecordで表されたアクティビティに関連付けられたwf_activity.sys_idに基づいています。(これは、実行シーケンスでhaRecordの前に来るTO遷移のみを(時間別に)返す getPreviousByTransitionとは異なります)。戻り値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecords のコレクションです。戻り値は、このアクティビティの前に実行されたアクティビティを時間内に取得するために、 getPreviousByExecutedOrder を使用する実行履歴コレクション内のすべての移行に基づいています。

    表 : 5. パラメーター
    名前 タイプ 説明
    説明 オブジェクト ActivityHistoryRecord JavaScript オブジェクト。
    表 : 6. 戻り値
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord JavaScript オブジェクトのアレイ。

    WorkflowModelManager:getAllTransitionedIntoActivityId(文字列 haRecordSysId)

    実行され、引数の sys_id で表されるアクティビティに移行した履歴アクティビティを取得します。 nextステータスは、ワークフローの履歴で実行された任意のActivityHistoryRecordsに関連付けられた移行のTOとして存在するhaRecordで表されたアクティビティに関連付けられたwf_activity.sys_idに基づいています。(これは、実行シーケンスでhaRecordの前に来るTO遷移のみを返す getPreviousByTransitionとは異なります(時間別)。戻り値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecords のコレクションです。

    nextステータスは、ワークフローの履歴で実行された任意のActivityHistoryRecordsに関連付けられた移行のTOとして存在するhaRecordで表されたアクティビティに関連付けられたwf_activity.sys_idに基づいています。(これは、実行シーケンスでhaRecordの前に来るTO遷移のみを返す getPreviousByTransitionとは異なります(時間別)。戻り値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecords のコレクションです。

    表 : 7. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 アクティビティ履歴のsys_id (テーブル wf_history)。
    表 : 8. 戻り値
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord JavaScript オブジェクトのアレイが要求されました。
    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( )

    これは、 WorkflowModelManager オブジェクトを初期化するために呼び出す必要があるワーカーメソッドです。 WorkflowModelManager オブジェクトを初期化するプロセスで、 getExecutedHistory()activityHistoryRecord データ オブジェクト配列 ( WorkflowModelManager クラスのメンバー) を作成して入力します。ほとんどの WorkflowModelManager メソッドは、 activityHistoryRecord 配列のサブセットを返します。その後、スクリプトは 1 つ以上の activityHistoryRecord メソッドを呼び出して、さらに作業を実行できます。

    表 : 9. パラメーター
    名前 タイプ 説明
    なし
    表 : 10. 戻り値
    タイプ 説明
    文字列アレイ テーブル wf_history からのsys_idsの順序付けされたアレイ。クライアント コードが戻り値を使用する可能性は低いです。これは、後続のメソッド呼び出しで使用するために、このオブジェクトの内部的に保持されます。
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');

    WorkflowModelManager - getFinalExecutedActivityList( )

    コンテキストによってwf_historyテーブルをクエリし、このオブジェクトの構築で設定されたコンテキストによって指定されたワークフローで実行されたすべてのアクティビティを取得します。

    この関数は、新しいactivity_indexを使用してデータベースから順序が強制的に出されるように、各アクティビティがサーバー側を通過ActivityManager.java正確な順序で実行されたアクティビティのリストを生成します。この呼び出しでは全体像はわかりません。移行をロードしてマッピングする必要があります。

    表 : 11. パラメーター
    名前 タイプ 説明
    なし
    表 : 12. 戻り値
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord javascript オブジェクトのアレイ。

    WorkflowModelManager - getFinalExecutedActivityIdList( )

    正常に実行され、関数が呼び出された時点までロールバックまたはスキップされていなかったすべてのアクティビティの wf_history.sys_ids のリストを取得します。

    表 : 13. パラメーター
    名前 タイプ 説明
    なし
    表 : 14. 戻り値
    タイプ 説明
    文字列アレイ 実行されたアクティビティの wf_history.sys_id 値のアレイ。
    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(オブジェクト haRecord)

    引数で指定されたアクティビティの直後に実行された履歴アクティビティを取得します。

    nextステータスは、時間的に最も近い以前のアクティビティを反映するアクティビティインデックスに基づいており、指定されたアクティビティが移行した最も近い次のwf_activityであるとは限りません。渡されたこの haRecord に移行した最も近い次のアクティビティを取得するには、 getNextByTransitionOrder(haRecord) を使用します。
    注:
    実行順序配列を組み立てる過程で、履歴オブジェクトが削除された配列に空白が残ります。これは、アレイ内のインデックスとオブジェクトのactivity_indexの同期を維持するために行われます。そのため、実行順序配列から出てくるすべてのオブジェクトは nil() についてテストする必要があり、activity_indexまたは配列のインデックス値のみに基づいて前のレコードであると想定しないでください。
    表 : 15. パラメーター
    名前 タイプ 説明
    haレコード オブジェクト ActivityHistoryRecord JavaScript オブジェクト。
    表 : 16. 戻り値
    タイプ 説明
    オブジェクト 要求された ActivityHistoryRecord JavaScript オブジェクト。

    次の例は、 getNextByExecutedOrder() メソッドを使用して、指定されたアクティビティの後に実行された履歴アクティビティを取得する方法を示しています。

    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));

    出力:

    {
       "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(文字列 haRecordSysId)

    引数で指定された wf_history.sys_id によってキャッシュされた履歴アクティビティを取得し、取得した JavaScript オブジェクトを使用して getNextByExecutedOrder() を呼び出します。

    表 : 17. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 アクティビティ履歴のsys_id (テーブル wf_history)。
    表 : 18. 戻り値
    タイプ 説明
    オブジェクト 要求された ActivityHistoryRecord JavaScript オブジェクト。
    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(文字列 haRecordSysId)

    引数で指定されたsys_idによって識別されたアクティビティの直後に実行された履歴アクティビティを取得します。

    この関数は、指定された wf_history.sys_id に関連付けられたキャッシュ履歴レコードを取得し、 getNextByTransition を呼び出します。戻り値は、 haRecord が送信される前にどの移行が行われたかに基づいており、必ずしも haRecord の直前に実行されたアクティビティに基づいているわけではありません。このアクティビティより前に実行されたアクティビティを時間内に取得するには、 getNextByExecutedOrder を使用します。

    表 : 19. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 目的のアクティビティ履歴 [wf_history] レコードのSys_id。
    表 : 20. 戻り値
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord JavaScript オブジェクトのアレイ。
    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(オブジェクト haRecord)

    引数で指定されたアクティビティの直前に実行された履歴アクティビティを取得します。

    前のステータスは、時間的に最も近い以前のアクティビティを反映するアクティビティインデックスに基づいており、このアクティビティへの有効な移行がある最も近い以前のアクティビティであるとは限りません。渡されたこの haRecord に移行した最も近い以前のアクティビティを取得するには、 getPreviousByTransition( haRecord) を使用します。
    注:
    実行順序配列を組み立てる過程で、履歴オブジェクトが削除された配列に空白が残ります。これにより、アレイ内のインデックスとオブジェクトのactivity_indexの同期が維持されます。そのため、実行順序配列から出てくるすべてのオブジェクトは nil() についてテストする必要があり、activity_indexまたは配列のインデックス値に基づいて前のレコードであると想定しないでください。
    表 : 21. パラメーター
    名前 タイプ 説明
    haレコード オブジェクト ActivityHistoryRecord JavaScript オブジェクト
    表 : 22. 戻り値
    タイプ 説明
    オブジェクト 要求された ActivityHistoryRecord JavaScript オブジェクト。

    WorkflowModelManager:getPreviousByExecutedOrderId(文字列 haRecordSysId)

    引数で指定された wf_history.sys_id によってキャッシュされた履歴アクティビティを取得し、取得した JavaScript オブジェクトを使用して getPreviousByExecutedOrder() を呼び出します。

    表 : 23. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 ワークフロー履歴システム ID (wf_history.sys_id)
    表 : 24. 戻り値
    タイプ 説明
    アクティビティ履歴レコード 要求された ActivityHistoryRecord JavaScript オブジェクト。
    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(オブジェクト haRecord)

    引数で指定されたアクティビティの直前に実行された履歴アクティビティを取得します。

    次のステータスは、実行シーケンスで haRecord の前に来る任意の ActivityHistoryRecords に関連付けられた移行で TO として存在する haRecord で表されるアクティビティに関連付けられた wf_activity.sys_id に基づいています。(これは、実行シーケンスの指定されたhaRecordまでのすべてのTO遷移を返す getAllTransitionedIntoActivityとは異なります。戻り値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecords のコレクションです。戻り値は、haRecordが送信される前にどの移行が行われたかに基づいており、必ずしもhaRecordの直前に実行されたアクティビティに基づいているわけではありません。このアクティビティより前に実行されたアクティビティを時間内に取得するには、 getPreviousByExecutedOrder を使用します。

    表 : 25. パラメーター
    名前 タイプ 説明
    haレコード オブジェクト ActivityHistoryRecord JavaScript オブジェクト。
    表 : 26. 戻り値
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord JavaScript オブジェクトのアレイが要求されました。

    WorkflowModelManager:getPreviousByTransitionId(文字列 haRecordSysId)

    引数で指定されたアクティビティの直前に実行された履歴アクティビティを取得します。

    nextステータスは、実行シーケンスで haRecord の前に来る任意の ActivityHistoryRecords に関連付けられた移行において、TO として存在する haRecord で表されるアクティビティに関連付けられたwf_activity.sys_idに基づいています。戻り値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecords のコレクションです。戻り値は、haRecordが集計される前にどの移行が行われたかに基づいており、必ずしもhaRecordの直前に実行されたアクティビティに基づいているわけではありません。このアクティビティの前に実行されたアクティビティを時間内に取得するには、 getPreviousByExecutedOrder() を使用します。

    表 : 27. パラメーター
    名前 タイプ 説明
    haRecordSysID 文字列 アクティビティ履歴のSys_id。

    テーブル:ワークフロー履歴 [wf_history]

    表 : 28. 戻り値
    タイプ 説明
    オブジェクト ActivityHistoryRecord JavaScript オブジェクトのアレイが要求されました。

    次の例は、 getPreviousByTransitionId() メソッドを使用して 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));
    }

    出力:

    [
      {
        "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
      }
    ]