WorkflowModelManager - グローバル

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間: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 要求された ActivityHistoryRecord JavaScript オブジェクト。
    var model = new WorkflowModelManager('MyContextId');

    WorkflowModelManager - getActivityHistoryRecordById(文字列 haRecordSysId)

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

    表 : 3. パラメーター
    名前 タイプ 説明
    haRecordSysId 文字列 目的のアクティビティ履歴 [wf_history] レコードの sys_id。
    表 : 4. 返される内容
    タイプ 説明
    ActivityHistoryRecord 要求された 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(オブジェクト description)

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

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

    表 : 5. パラメーター
    名前 タイプ 説明
    description オブジェクト ActivityHistoryRecord JavaScript オブジェクト。
    表 : 6. 返される内容
    タイプ 説明
    オブジェクトアレイ ActivityHistoryRecord JavaScript オブジェクトのアレイ。

    WorkflowModelManager - getAllTransitionedIntoActivityId(文字列 haRecordSysId)

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

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

    表 : 7. パラメーター
    名前 タイプ 説明
    haRecordSysId 文字列 アクティビティ履歴 (テーブル wf_history) の sys_id。
    表 : 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_id の順序付きアレイ。クライアントコードがリターン値を使用することはほとんどありません。クライアントコードはこのオブジェクトに内部的に保持され、その後のメソッド呼び出しで使用されます。
    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. パラメーター
    名前 タイプ 説明
    haRecord オブジェクト 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 文字列 アクティビティ履歴 (テーブル wf_history) の sys_id。
    表 : 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)

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

    previous ステータスは、直近のアクティビティを反映するアクティビティインデックスに基づいて決まるものであり、このアクティビティへの有効な移行を含む直近のアクティビティであるとは限りません。渡されたこの haRecord に移行した直前のアクティビティを取得するには、getPreviousByTransition(haRecord) を使用します。
    注:
    実行順序のアレイを構築する過程で、履歴オブジェクトが削除されたアレイに空白が残ります。これによって、アレイ内のインデックスとオブジェクトの activity_index が確実に同期します。そのため、実行順序のアレイから取得されるすべてのオブジェクトで nil() をテストすること、また activity_index やアレイインデックスの値を見て、そのオブジェクトが前のレコードであると想定しないことが必要となります。
    表 : 21. パラメーター
    名前 タイプ 説明
    haRecord オブジェクト ActivityHistoryRecord JavaScript オブジェクト
    表 : 22. 返される内容
    タイプ 説明
    オブジェクト 要求された ActivityHistoryRecord JavaScript オブジェクト。

    WorkflowModelManager - getPreviousByExecutedOrderId(文字列 haRecordSysId)

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

    表 : 23. パラメーター
    名前 タイプ 説明
    haRecordSysId 文字列 ワークフローの履歴Sys ID (wf_history.sys_id)
    表 : 24. 返される内容
    タイプ 説明
    ActivityHistoryRecord 要求された 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)

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

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

    表 : 25. パラメーター
    名前 タイプ 説明
    haRecord オブジェクト ActivityHistoryRecord JavaScript オブジェクト。
    表 : 26. 返される内容
    タイプ 説明
    オブジェクトアレイ 要求された ActivityHistoryRecord JavaScript オブジェクトのアレイ。

    WorkflowModelManager - getPreviousByTransitionId(文字列 haRecordSysId)

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

    next ステータスは、実行シーケンス内で haRecord の前に来る任意の ActivityHistoryRecords に関連付けられた移行の TO として存在する、haRecord 内で示されるアクティビティに関連付けられた wf_activity.sys_id に基づいています。リターン値は、引数 haRecord.wfaId を TO アクティビティとして識別する ActivityHistoryRecord のコレクションです。リターン値は送信された 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
      }
    ]