ワークフロー - グローバル

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:18分
  • ワークフロースクリプトインクルードは、ワークフローエンジンと連動するメソッドを提供します。

    ここで説明するメソッドを使用してワークフローを操作します。

    Workflow - broadcastEvent(文字列 contextId, 文字列 eventName)

    指定されたイベント (メッセージ) をワークフローコンテキストに送信して、実行中のアクティビティに渡します。

    このメソッドは通常、何らかのアクションが発生するまで処理を待機するアクティビティを有効にするために使用します。broadcastEventの使用に関する追加情報は、ワークフローイベント特有の機能を参照されたい。

    利用可能な OOB イベントのリストについては、 ベースシステムのワークフローイベントを参照してください。

    表 : 1. パラメーター
    名前 タイプ 説明
    contextId 文字列 コンテキスト ID。
    eventName 文字列 イベントの名前
    表 : 2. 返される内容
    タイプ 説明
    なし
    //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 - cancel(GlideRecord record)

    このレコード上で実行中のすべてのワークフローのアクティビティに cancel イベントをブロードキャストすることによって、このレコード上で実行中のすべてのワークフローをキャンセルします。

    表 : 3. パラメーター
    名前 タイプ 説明
    record GlideRecord 任意のテーブルの GlideRecord。このレコード上で実行中のすべてのワークフローがキャンセルされます。
    表 : 4. 返される内容
    タイプ 説明
    なし
    //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(GlideRecord context)

    このワークフローコンテキストのアクティビティに cancel イベントをブロードキャストすることで、実行中のコンテキストをキャンセルします。

    表 : 5. パラメーター
    名前 タイプ 説明
    context GlideRecord キャンセルする実行中のコンテキストの GlideRecord
    表 : 6. 返される内容
    タイプ 説明
    なし
    // 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)

    レコード上のすべてのワークフローを削除します。

    表 : 7. パラメーター
    名前 タイプ 説明
    current GlideRecord 発信者がすべてのワークフローを削除する GlideRecord。任意のテーブルの任意のレコードに設定できます。
    表 : 8. 返される内容
    タイプ 説明
    なし
    //where current is a task record with a workflow context
          var wkfw = new Workflow();
          wkfw.deleteWorkflow(current);
        

    ワークフロー:fireEvent(GlideRecord eventRecord, String eventName, Object eventParms)

    入力レコードで実行中のワークフローの名前付きイベントを発生させます。

    承認コーディネータータイマーロック、およびその他のアクティビティで使用されます。

    表 : 9. パラメーター
    名前 タイプ 説明
    eventRecord GlideRecord アクティビティ実行ワークフロー [wf_executing] テーブルにリストされているイベント レコードです。
    eventName 文字列 実行中のワークフローに送信するイベントの名前。
    eventParms オブジェクト オプション。イベントで使用される JSON 形式のパラメーター。
    表 : 10. 戻り値
    タイプ 説明
    なし  
    // where current is a task record with a workflow context
      var w = new Workflow(); 
      w.fireEvent(current, 'execute');

    Workflow - fireEventById(文字列 eventRecordId, 文字列 eventName)

    レコード ID で指定されたレコード上で指定のイベントを発生させます。

    承認コーディネータータイマーロック、およびその他のアクティビティで使用されます。

    表 : 11. パラメーター
    名前 タイプ 説明
    eventRecordId 文字列 Glide レコードの sys_id。
    eventName 文字列 実行中のワークフローに送信するイベントの名前。
    表 : 12. 返される内容
    タイプ 説明
    なし
    var wkfw = new Workflow();
          wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');

    Workflow - getContexts(GlideRecord record)

    指定されたレコードのすべてのワークフローコンテキストを返します。

    表 : 13. パラメーター
    名前 タイプ 説明
    record GlideRecord 発信者がすべてのワークフローコンテキストのリストを要求する対象の GlideRecord。実行中のワークフローコンテキストを発信者が必要としているテーブル上のレコードであればどれにでも設定できます。
    表 : 14. 返される内容
    タイプ 説明
    GlideRecord 指定されたレコードのすべてのワークフローコンテキスト (実行中、キャンセル、完了などの任意のステータス) に対してフィルタリングされたワークフローコンテキスト [wf_context] テーブル内の GlideRecord。
    //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(文字列 workflowId)

    ワークフローが完了する推定時刻を取得します。

    表 : 15. パラメーター
    名前 タイプ 説明
    workflowId 文字列 推定の実行時間を取得するワークフロー (テーブル wf_workflow) の sys_id。
    表 : 16. 返される内容
    タイプ 説明
    文字列 GlideDuration の表示値 (例:3 日)。不明な場合は空白。
    var wkfw = new Workflow();
          gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));

    2 日

    Workflow - getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)

    ワークフローバージョンの推定実行経過時間を取得します。

    表 : 17. パラメーター
    名前 タイプ 説明
    wfVersion GlideRecord 発信者が推定実行時間を要求する特定のワークフローバージョンの、テーブル wf_workflow_version の GlideRecord
    表 : 18. 返される内容
    タイプ 説明
    文字列 GlideDuration の表示値 (例:3 日)。不明な場合は空白。
    //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(文字列 workflowID, 数字 amount, ブーリアン result)

    入力されたワークフロー ID に対する適切なワークフローのリターン値を取得します。 このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。

    このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。このメソッドは Fuji 以降のリリースで利用できます。

    表 : 19. パラメーター
    名前 タイプ 説明
    workflowID 文字列 ワークフロー (テーブル wf_workflow) の sys_id
    amount 数値 amount
    result ブーリアン true の場合は true
    表 : 20. 返される内容
    タイプ 説明
    ??? [リターン値] アクティビティで指定されたワークフローのリターン値。[リターン値] アクティビティのないワークフローは null 値を返します。
    var wkfw = new Workflow();
          wkfw.getReturnValue('context');
    出力:
    *** Script: b99a866a4a3623120074c033e005418f
          

    Workflow - getRunningFlows(GlideRecord record)

    入力レコードに対する現在実行中のすべてのワークフローコンテキストを取得します。

    入力レコードは、実行中のワークフローコンテキストを発信者が必要としているテーブル上の任意のレコードです。

    表 : 21. パラメーター
    名前 タイプ 説明
    record GlideRecord 発信者がすべての実行中のワークフローのリストを要求しているレコードの GlideRecord
    表 : 22. 返される内容
    タイプ 説明
    GlideRecord テーブル wf_context 上の、実行中のすべてのワークフローコンテキストに対してフィルタリングされた GlideRecord。
    //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(文字列 workflowID)

    入力されたワークフロー ID に対する適切なワークフローのバージョンを取得します。 このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。

    このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。

    表 : 23. パラメーター
    名前 タイプ 説明
    workflowID 文字列 ワークフロー (テーブル wf_workflow) の sys_id
    表 : 24. 返される内容
    タイプ 説明
    なし
    var wkfw = new Workflow();
          wkfw.getVersion('b99a866a4a3623120074c033e005418f');

    Workflow - getVersionFromName(文字列 workflowName)

    入力されたワークフロー名に対する適切なワークフローのバージョンを返します。

    詳細については「getVersion()」を参照してください。

    表 : 25. パラメーター
    名前 タイプ 説明
    workflowName 文字列 ワークフロー (テーブル wf_workflow) の名前
    表 : 26. 返される内容
    タイプ 説明
    なし
    var wkfw = new Workflow();
          wkfw.getVersionFromName('Emergency Change');

    Workflow - getWorkflowFromName(文字列 workflowName)

    指定されたワークフロー名に関連付けられたワークフローの sys_id を返します。

    表 : 27. パラメーター
    名前 タイプ 説明
    workflowName 文字列 ワークフローの名前。
    表 : 28. 返される内容
    タイプ 説明
    文字列 渡された名前に関連付けられたワークフローの sys_id。
    var wflw = new Workflow();
          gs.print(wflw.getWorkflowFromName('Emergency Change'));

    Workflow - hasWorkflow(GlideRecord record)

    指定されたレコードにワークフローコンテキストが関連付けられているかどうかを判断します。

    実行中のワークフローコンテキストと完了したワークフローコンテキストが対象となります。

    表 : 29. パラメーター
    名前 タイプ 説明
    record GlideRecord 監視下の GlideRecord。この GlideRecord は任意のテーブルから取得できます。
    表 : 30. 返される内容
    タイプ 説明
    ブーリアン レコードにワークフローが関連付けられている場合は true、そうでない場合は false を返します。
    var wkfw = new Workflow();
          gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));

    false

    Workflow - restartWorkflow(GlideRecord current, ブーリアン maintainStateFlag)

    現在の承認とタスクをリセットしないまま、新しい承認とタスクを追加してワークフローの承認とタスクを再計算します。

    このメソッドを使用すると、すでにワークフローにある会社に対する現行の承認をリセットすることなく、変更要求への会社の追加などのタスクを実行できます。

    表 : 31. パラメーター
    名前 タイプ 説明
    current GlideRecord このワークフローが実行しているレコードの GlideRecord。任意のテーブルの任意のレコードに設定できます。
    maintainStateFlag ブーリアン すべての承認とタスクを現在のステータスで維持するかどうかを示すフラグ。
    有効な値:
    • true:すべての承認とタスクを現在のステータスで維持する。
    • false:すべての承認とタスクのステータスを更新する。
    表 : 32. 返される内容
    タイプ 説明
    なし

    この例は、承認ファイルが [却下] から [要求済み] に変更されたことで再開されるワークフローを示しています。

    (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(GlideRecord record, 文字列 operation)

    指定されたテーブルとその子孫テーブル内の、指定されたレコードに対するすべてのワークフローを実行します。

    使用例は、「SNC - Run parent workflows」および「SNC - Run parent workflows (Approval)」スクリプトインクルードで確認できます。

    表 : 33. パラメーター
    名前 タイプ 説明
    record GlideRecord ワークフローの実行対象の GlideRecord。
    operation 文字列 データベース操作。
    有効な値:
    • insert
    • update
    • delete
    表 : 34. 返される内容
    タイプ 説明
    なし
    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(文字列 workflowId, GlideRecord current, 文字列 operation, アレイ vars)

    指定されたワークフローを開始します。

    使用例については、テーブル sc_req_item のスクリプトインクルード WorkflowScheduler およびビジネスルール「Start Workflow」を参照してください。

    表 : 35. パラメーター
    名前 タイプ 説明
    workflowId 文字列 開始するワークフローの sys_id。この sys_id はテーブル wf_workflow を指します。
    current GlideRecord このワークフローで現行として使用するレコード。このレコードは通常、このワークフローのワークフロープロパティの Table フィールドから取得されます。
    operation 文字列 current で実行する操作。可能な値:insertupdatedelete
    変数 アレイ ワークフローに追加する変数のコレクション
    ////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(GlideRecord context, 文字列 operation)

    ビジネスルール Auto start on context のヘルパーメソッド。

    表 : 36. パラメーター
    名前 タイプ 説明
    context GlideRecord 新しいレコード (ビジネスルールの「current」レコード) のテーブル wf_context の GlideRecord。
    operation 文字列 実行中のデータベース操作。insertupdatedelete のいずれかです。
    表 : 37. 返される内容
    タイプ 説明
    なし
    //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(文字列 workflowId, 数字 retroactiveMSecs, GlideRecord current, 文字列 operation, アレイ, ???)

    テーブル task_sla のビジネスルール Start Workflow によって使用されます。これによってワークフローが開始され、このメソッドへの追加引数が、ワークフローの実行を一定時間停止するアクティビティ「タイマー」によって使用されます。

    表 : 38. パラメーター
    名前 タイプ 説明
    workflowID 文字列 開始するワークフローの sys_id。この sys_id はテーブル wf_workflow を指します。
    retroactiveMSecs 数字 アクティビティ「タイマー」によって使用される遅延 (ミリ秒単位)。
    current GlideRecord このワークフローで現行として使用するレコードの GlideRecord。このレコードは通常、このワークフローのワークフロープロパティの Table フィールドから取得されます。
    operation 文字列 実行中のデータベース操作。insertupdatedelete のいずれかです。
    変数 アレイ ワークフローに追加する変数のコレクション。
    withSchedule ??? アクティビティ「タイマー」で使用されるスケジュール
    表 : 39. 返される内容
    タイプ 説明
    GlideRecord 新しく作成されたこのワークフローコンテキストに対して挿入されたレコードのテーブル wf_context の GlideRecord。
    // 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()

    Workflow クラスのコンストラクター。

    表 : 40. パラメーター
    名前 タイプ 説明
    なし
    表 : 41. 返される内容
    タイプ 説明
    なし
    var w = new Workflow();