FlowAPI - スコープ指定、グローバル

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む69読むのに数分
  • FlowAPI メソッドを使用して、ブロッキングメソッドまたは非ブロッキングメソッドにより、サーバー側スクリプトでアクション、フロー、またはサブフローを実行します。

    sn_fd.FlowAPI オブジェクトを使用して、グローバルおよびスコープ付きスクリプトの FlowAPI メソッドにアクセスします。Flow Designer でコードスニペットアクションを使用してフローの呼び出しを作成するか、ここに記載されているメソッドを使用して手動でスクリプトを更新します。

    注:
    ドメイン分離されたインスタンスでは、この API によってトリガーされるフロー、サブフロー、およびアクションは、スクリプトを開始したユーザーのドメインで実行されます。たとえば、Acme ドメイン内のユーザーがフローをトリガーするスクリプトを開始した場合、フローがシステムユーザーとして実行されている場合でも、フローは Acme ドメイン内で実行され、Acme データにのみアクセスできます。
    注:
    インスタンスのパフォーマンスを最適化するには、非同期ビジネスルールスクリプトからこれらのメソッドを呼び出さないようにします。代わりに、UI 内で フローデザイナー スケジュール設定済みジョブレコードを作成します。

    FlowAPI - cancel(文字列 contextId, 文字列 reason)

    一時停止中または実行中のフロー、サブフロー、またはアクションをキャンセルします。

    表 : 1. パラメーター
    名前 タイプ 説明
    contextId String フロー、サブフロー、またはアクションの実行詳細レコードの Sys_id。フローデザイナー の [フロー実行] タブに移動して実行の詳細にアクセスするか、startFlow()startSubflow()、または startAction() メソッドによって返されたコンテキストレコードの sys_id を渡します。
    注:
    ターゲットコンテキストがインスタンスの別のノードで実行されている場合、キャンセルにわずかな遅延が発生する可能性があります。同じノードで実行されているコンテキストはすぐにキャンセルされます。別のノードで実行されているコンテキストの場合、まずキャンセルが適切なノードに転送されるまで待つ必要があります。
    理由 文字列 オプション。フロー、サブフロー、またはアクションをキャンセルする理由です。フローエンジンのログエントリー [sys_flow_log] テーブルの [メッセージ] フィールドに表示されます。
    表 : 2. 返される内容
    タイプ 説明
    なし

    この例では、startFlow() メソッドの戻り値を使用して、実行時間の長いフローをキャンセルします。

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var result = sn_fd.FlowAPI.getRunner()
              .flow('global.myFlow')
              .inBackground()
              .withInputs(inputs)
              .run();
    
              var contextId = result.getContextId();
              var dateRun = result.getDate();
              var domainUsed = result.getDomainId();
              var flowName = result.getFlowObjectName();
              var flowObjectType = result.getFlowObjectType(); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the cancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.cancel(contextId, 'Flow took too long to execute.');

    この例は、Test Flow という名前のフローをキャンセルします。

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.cancel(now_GR.getUniqueValue(), 'Canceling Test Flows');
    } 

    FlowAPI - executeAction(文字列 name, マップ inputs, 数値 timeout)

    サーバー側スクリプトから同期的にアクションを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からアクションを実行します。このメソッドを使用して実行されるアクションは同期で実行されるため、このメソッドはアクションによって作成された出力にアクセスできます。アクションを非同期で実行するには、startAction を使用します。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、セッションを開始したユーザーとしてアクションを実行します。
    表 : 3. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるアクションのスコープと名前。global.action_name など。
    inputs マップ アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。
    timeout 番号 オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。
    表 : 4. 返される内容
    タイプ 説明
    オブジェクト アクション出力。

    この例では、スクリプトは sn_fd.FlowAPI.executeAction を使用して、グローバルスコープで actionforpassword2tes というアクションを実行します。変数 inputs には、アクションの入力が含まれます。この場合、名前とパスワードです。アクションの出力は、outputs 変数に格納されます。この場合は暗号化されたパスワードオブジェクトです。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
    	
      try {
        var inputs = {};
        inputs['name'] = ; // String 
        inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs, timeout)
        var outputs = sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output = outputs['output']; // Password (2 Way Encrypted)
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - executeActionQuick(文字列 name, マップ inputs, 数値 timeout)

    実行の詳細や他の関連レコードを作成せずに、現在のユーザーセッションでサーバー側スクリプトから同期的にアクションを実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    待機サポート
    このメソッドは、アクションを一時停止して条件を待機することはサポートしていません。「承認を求める」や「条件待ち」などの待機条件で一時停止するステップはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するアクションの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 5. パラメーター
    名前 タイプ 説明
    name 文字列 実行するアクションのスコープと内部名です。例えば、global.action_name です。フローデザイナー アクションのリストで [内部名] フィールドを見つけます。
    inputs マップ アクションの入力を定義する名前/値ペアです。利用可能なアクションの入力と必要なデータタイプは、アクションアウトラインの [入力] で確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    timeout 番号

    オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。

    表 : 6. 返される内容
    タイプ 説明
    オブジェクト アクションによって定義された出力を含むオブジェクトです。アクションの出力は、アクションアウトラインの [出力] で確認できます。
    (function() {
      try {
    
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeActionQuick('global.update_record_test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    
      } catch (ex) { 
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - executeDataStreamAction(文字列 name, マップ inputs, 数値 timeout)

    サーバー側スクリプトからデータストリームアクションを同期的に実行し、ScriptableDataStream オブジェクトを返します。

    データストリームアクションの詳細については、「 データストリームアクションとページネーション」を参照してください。

    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    エラーを捕捉するために、常にデータストリームのロジックを try/catch ブロックで囲みます。データストリームを閉じてパフォーマンスの問題を防ぐために、常に、ScriptableDataStream クラスの close() メソッドで終了する finally ステートメントを含めます。
    表 : 7. パラメーター
    名前 タイプ 説明
    name 文字列 実行するデータストリームアクションのスコープと名前です。例えば、global.data_stream_action_name です。
    inputs マップ アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。アクションに入力がない場合は、このパラメーターを含めないでください。
    timeout 番号 オプション。アクションがタイムアウトするまでの時間です。タイムアウトが期限切れになると、例外がスローされます。タイムアウトは executeDataStreamAction メソッドのみに適用されます。ScriptableDataStream クラスのメソッドには適用されません。

    デフォルト:30,000 (com.glide.hub.flow_api.default_execution_time システムプロパティで指定)

    単位:ミリ秒

    表 : 8. 返される内容
    タイプ 説明
    ScriptableDataStream データストリーム内のアイテムを反復処理するために使用されるオブジェクトです。ScriptableDataStream クラスのメソッドを使用して、このオブジェクトを操作します。「ScriptableDataStream API」を参照してください。

    この例は、データストリームで返された各アイテムのインシデントレコードを作成します。

    (function() {
    	
      try {
    
        // Execute Data Stream Action. 
        var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
        // Process each item in the data stream
        while (stream.hasNext()) {
    
          // Get a single item from the data stream.
          var item = stream.next();
    
          // Use the item. 
          var now_GR = new GlideRecord('incident');
          now_GR.setValue('number',item.id);
          now_GR.setValue('short_description',item.name);
          now_GR.insert();
    		
          // By default, this code snippet will terminate after 10 items.
          // Remove or modify this limit after testing your code.
          if (stream.getItemIndex() >= 9) {
            break;
          }
        }
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      } finally {
        stream.close();
      }
    	
    })();

    FlowAPI - executeFlow(文字列 name, マップ inputs, 数値 timeout)

    サーバー側スクリプトから同期的にフローを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からフローを実行します。このメソッドを使用して実行されるフローは同期で実行されます。フローを非同期で実行するには、startFlow を使用します。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
    表 : 9. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるフローのスコープと名前。global.flow_name など。
    inputs マップ トリガーの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。
    timeout 番号 オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。
    表 : 10. 返される内容
    タイプ 説明
    なし 通常の操作では、戻り値は生成されません。
    例外 同期的に呼び出されたフローが一時停止すると、API が例外をスローします。現在の実行は待機ステータスになります。ほとんどの場合、フローが再開されると例外は削除されます。ただし、API は MID Server に送信されたフローを再開できません。

    この例では、sn_fd.FlowAPI.executeFlow を使用して、test_flow というグローバルフローを実行します。このフローは、通常、インシデントテーブルのレコードが更新されたときに発生します。スクリプトからフローをアクティブ化しているので、この情報を指定する必要があります。このコードは、現在のレコードとそのレコードのテーブルを含む入力変数を作成します。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
      try {
        var inputs = {};
        inputs['current'] = ; // GlideRecord of table:  
        inputs['table_name'] = 'incident';
    
        // Execute Synchronously: Run in foreground.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeFlow('global.test_flow', inputs, timeout)
        sn_fd.FlowAPI.executeFlow('global.test_flow', inputs);
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - executeFlowQuick(文字列 name, マップ inputs, 数値 timeout)

    実行の詳細やその他の関連レコードを作成せずに、サーバー側のスクリプトから、フロー、サブフロー、アクション、またはデータストリームアクションを同期または非同期で実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    ユーザーとして実行
    このメソッドは、セッションを開始したユーザーとしてフローを実行します。システムユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。
    待機サポート
    このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するフローの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 11. パラメーター
    名前 タイプ 説明
    name 文字列 実行するフローのスコープと内部名です。例えば、global.flow_name です。フローデザイナー フローのリストで [内部名] フィールドを見つけます。
    inputs マップ トリガーの入力を定義する名前/値ペアです。利用可能なトリガーの入力と必要なデータタイプは、フローの [トリガー] セクションで確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    timeout 番号 オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。
    表 : 12. 返される内容
    タイプ 説明
    なし
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.executeFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI - executeSubflow(文字列 name, マップ inputs, 数値 timeout)

    サーバー側スクリプトから同期的にサブフローを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からサブフローを実行します。このメソッドを使用して実行されるサブフローは同期で実行されます。サブフローを非同期で実行するには、startSubflow を使用します。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
    表 : 13. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるサブフローのスコープと名前。global.subflow_name など。
    inputs マップ サブフロー入力を定義する名前と値のペア。入力ラベルではなく、入力名を使用します。
    timeout 番号 オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。
    表 : 14. 返される内容
    タイプ 説明
    オブジェクト サブフローの出力を含むオブジェクトです。
    例外 同期的に呼び出されたフローが一時停止すると、API が例外をスローします。現在の実行は待機ステータスになります。ほとんどの場合、フローが再開されると例外は削除されます。ただし、API は MID Server に送信されたフローを再開できません。

    この例では、スクリプトは sn_fd.FlowAPI.executeSubflow を使用して、グローバルスコープで subflowTest というサブフローを実行します。変数 inputs には、サブフローの入力が含まれます。この場合、名前とパスワードです。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    
    (function() {
    	
    	try {
    		var inputs = {};
    		inputs['name'] = ; // String 
    		inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
    		// Execute Synchronously: Run in foreground.
    		// var timeout = ; //timeout in ms
                  //sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs, timeout)
                  var outputs = sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs);
    		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}	
    })();

    FlowAPI - executeSubflowQuick(文字列 name, マップ inputs, 数値 timeout)

    実行の詳細や他の関連レコードを作成せずに、現在のユーザーセッションでサーバー側スクリプトから同期的にサブフローを実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    ユーザーとして実行
    このメソッドは、セッションを開始したユーザーとしてフローを実行します。システムユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。
    待機サポート
    このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するフローの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 15. パラメーター
    名前 タイプ 説明
    name 文字列 実行するサブフローのスコープと内部名です。例えば、global.subflow_name です。フローデザイナー サブフローのリストで [内部名] フィールドを見つけます。
    inputs マップ サブフロー入力を定義する名前と値のペア。利用可能なサブフローの入力と必要なデータタイプは、サブフローの [入力] で確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    timeout 番号 オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。
    表 : 16. 返される内容
    タイプ 説明
    オブジェクト サブフローによって定義された出力を含むオブジェクトです。サブフローの出力は、サブフローアウトラインの [サブフローの入力および出力] で確認できます。
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeSubflowQuick('global.test_quick_run_subflow', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - getErrorMessage(文字列 contextId)

    フロー、サブフロー、またはアクションによって生成されたエラーメッセージを返します。このメソッドは、quick() API で実行されるフロー、サブフロー、またはアクションからメッセージを返すことはできません。

    表 : 17. パラメーター
    名前 タイプ 説明
    contextId 文字列 エラーメッセージを取得するフロー、サブフロー、またはアクションの sys_id です。
    表 : 18. 返される内容
    タイプ 説明
    文字列 前回の操作の実行とそれによって生成されたエラーメッセージです。

    この例は、test_error_subflow というグローバルサブフローを開始し、生成されたエラーメッセージを返します。通常は、単一のスクリプトがフローを実行してそのエラーメッセージを取得することはありません。一般に、別のスクリプトまたは フローデザイナー のいずれかが既にフローを実行しています。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow with known errors
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_error_subflow', inputs);
    
        // Get flow error message
        var errormsg = sn_fd.FlowAPI.getErrorMessage(contextId);
        return errormsg;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    出力:

    Operation (test_error_flow.574033f6db6811102166e2291396199f.274073f6db6811102166e22913961908.0be0d916c31332002841b63b12d3ae13) failed with error: com.snc.process_flow.exception.OpException: Value of field record is not a GlideRecord
    at com.snc.process_flow.operation.FieldValue.getGlideRecord(FieldValue.java:145)
    at com.snc.process_flow.operation.CRUDOperation.getInputValidGlideRecord(CRUDOperation.java:54)
    at com.snc.process_flow.operation.RecordDeleteOperation.run(RecordDeleteOperation.java:26)
    at com.snc.process_flow.engine.Operation.execute(Operation.java:212)
    at com.snc.process_flow.engine.restricted_caller_access.ExecuteWithCallerAccessTracking.executeWithMetaStack(ExecuteWithCallerAccessTracking.java:31)
    at com.snc.process_flow.engine.ProcessEngine.executeOps(ProcessEngine.java:570)
    at com.snc.process_flow.engine.ProcessEngine.runInternal(ProcessEngine.java:476)
    at com.snc.process_flow.engine.ProcessEngine.run(ProcessEngine.java:462)
    at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:86)
    at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:155)
    at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:270)
    at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:237)
    at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:70)
    at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42)
    at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:235)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:330)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:309)
    at com.snc.process_flow.engine.ProcessHubEventHandler.doSendMessage(ProcessHubEventHandler.java:475)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:119)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:91)
    at com.snc.process_flow.engine.FlowEventManager.processEvents(FlowEventManager.java:122)
    at com.glide.job.EventHandlerJob.execute(EventHandlerJob.java:38)
    at com.glide.schedule.JobExecutor.lambda$executeJob$0(JobExecutor.java:129)
    at com.snc.db.data_replicate.replicator.DataReplicationAdvisors.runInOriginatorContext(DataReplicationAdvisors.java:73)
    at com.glide.schedule.JobExecutor.lambda$inDataReplicationContext$2(JobExecutor.java:159)
    at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:132)
    at com.glide.schedule.JobExecutor.execute(JobExecutor.java:116)
    at com.glide.schedule_v2.SchedulerWorkerThread.executeJob(SchedulerWorkerThread.java:338)
    at com.glide.schedule_v2.SchedulerWorkerThread.lambda$process$0(SchedulerWorkerThread.java:220)
    at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
    at com.glide.schedule_v2.SchedulerWorkerThread.process(SchedulerWorkerThread.java:220)
    at com.glide.schedule_v2.SchedulerWorkerThread.run(SchedulerWorkerThread.java:101)

    FlowAPI - getFlowStages(文字列 scopedFlowName)

    フローステージのリストを含む JSON 文字列を返します。

    表 : 19. パラメーター
    名前 タイプ 説明
    scopedFlowName 文字列 ステージを取得するフローのアプリケーションスコープと名前。
    表 : 20. 返される内容
    タイプ 説明
    文字列 ステージレコード値別にフローのステージをリストする JSON 形式の文字列。

    この例は、サービスカタログアイテム要求フローのステージの取得を示しています。

    (function() {
    
      try {
        // Name of flow with stages
        var flowName = "service_catalog_item_request";
    
        // Get flow stages
        var flowStages = sn_fd.FlowAPI.getFlowStages(flowName);
        //Print JSON as info message  
        gs.info(flowStages);
        return flowStages;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    出力:

    JSON 文字列には、ステージフィールドの名前と値のペアが含まれています。詳細については、を参照してください。

    [
      {
        "label": "Manager Approval",
        "value": "manager_approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 0
      },
      {
        "label": "Set current stage state to:  [Error]",
        "value": "Set current stage state to:  [Error]",
        "type": "error",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": false,
        "order": 0
      },
      {
        "label": "Dept. Head Approval",
        "value": "Dept. Head Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 1
      },
      {
        "label": "CIO Approval",
        "value": "CIO Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 2
      },
      {
        "label": "Order Fulfillment",
        "value": "Order Fulfillment",
        "type": "standard",
        "duration": "1970-01-05 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 3
      },
      {
        "label": "Backordered",
        "value": "Backordered",
        "type": "standard",
        "duration": "1970-01-15 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 4
      },
      {
        "label": "Deployment",
        "value": "Deployment",
        "type": "standard",
        "duration": "1970-01-02 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 5
      },
      {
        "label": "Request Cancelled",
        "value": "Request Cancelled",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 6
      },
      {
        "label": "Completed",
        "value": "complete",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 7
      }
    ]

    FlowAPI - getOutputs(文字列 contextId)

    完了したアクションまたはサブフローの出力を返します。

    startAction() または startSubflow() メソッドのいずれかの戻り値を contextId パラメーターとして使用できます。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 21. パラメーター
    名前 タイプ 説明
    contextId 文字列 出力を取得するアクションまたはサブフローの sys_id です。
    表 : 22. 返される内容
    タイプ 説明
    オブジェクト アクションまたはサブフローの出力を含むオブジェクトです。

    この例は、test_subflow というグローバルサブフローを開始し、フローが終了するのを待ってから、その出力値を取得します。通常は、単一のスクリプトがフローを実行してその出力値を取得することはありません。getOutputs() 呼び出しの前にフローが完了しない場合があるため、この例では待機時間を使用しています。一般に、別のスクリプトまたは フローデザイナー のいずれかが既にフローを実行しています。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
        // Wait for the flow to finish running
    
        // Get flow outputs
        var outputs = sn_fd.FlowAPI.getOutputs(contextId);
        var output1 = outputs['output1'];
        return output1;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    FlowAPI - getRunner()

    実行するフローまたはアクションの ScriptableFlowRunner ビルダーオブジェクトを返します。

    表 : 23. パラメーター
    名前 タイプ 説明
    なし
    表 : 24. 返される内容
    タイプ 説明
    ScriptableFlowRunner フローデザイナー のアクション、フロー、またはサブフローを実行するために使用されるビルダーオブジェクト。

    この例は、フローを同期的に実行します。

    
    (function() {
      try {
    
        var inputs = {}; 
    
        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  
    
        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();
    
        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       

    FlowAPI - hasApprovals(文字列 scopedFlowName)

    指定されたスコープ内のフローが「承認を求める」アクションを含んでいるかどうかをチェックします。

    hasApprovals() メソッドは、指定されたスコープ内のフローが「承認を求める」アクションを含んでいるかどうかを判断します。このメソッドはまた、 フロー内の「承認を求める」アクションが、If フローロジックブロックでネストされているかどうかをチェックします。詳細については、「 承認を求める」アクションを参照してください。

    表 : 25. パラメーター
    名前 タイプ 説明
    scopedFlowName 文字列 実行するフローのスコープと内部名です。例えば、global.flow_name です。フローデザイナー フローのリストで [内部名] フィールドを見つけます。
    表 : 26. 返される内容
    タイプ 説明
    文字列 次の文字列値のいずれか 1 つを返します。
    • ALWAYS:フローに、条件分岐 If フローロジックブロックでネストされていない「承認を求める」アクションが含まれています。
    • CONDITIONALLY:フローに、条件分岐 If フローロジックブロックでネストされた「承認を求める」アクションが含まれています。
    • NO:フローに「承認を求める」アクションは含まれていません。
    • UNKNOWN:コンパイラーエラーが発生しました。フローに「承認を求める」アクションが含まれているかどうかは、システムでは判断されません。

    次の例では、グローバルスコープ内の example_flow に「承認を求める」アクションが含まれているかどうかをチェックし、結果をログに記録します。

    (function() {
    	
      try {
        var result = sn_fd.FlowAPI.hasApprovals('global.example_flow');
        gs.log('Result: ' + result);
      }
    
      catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - restartFlowFromContext(String ContextId, Map providedInputs)

    バックグラウンドで実行されたフロー、サブフロー、またはアクションを再開します。新しい入力を指定することも、省略して以前に行った入力を再利用することもできます。

    表 : 27. パラメーター
    名前 タイプ 説明
    contextId 文字列 再開するフロー、サブフロー、またはアクションのsys_id。このフロー、サブフロー、またはアクションは、バックグラウンドで実行されており、関連付けられた sysevent レコードを持っている必要があります。
    providedInput オブジェクト オプション。フロー、サブフロー、またはアクションの置換入力を定義する名前と値のペアを含むマップオブジェクト。このパラメーターを省略するか null 値を指定すると、以前に提供された入力を使用してフロー、サブフロー、またはアクションが実行されます。
    表 : 28. 返される内容
    タイプ 説明
    ScriptableFlowRunnerResultsScoped フローデザイナー アクション、フロー、またはサブフローの実行の詳細を含むオブジェクト。

    インシデントテーブルにレコードベースのトリガーがあるサンプルフローを再開します。元のフローでは、サンプルのインシデントINC0008112を入力として使用していました。フローが再起動されると、代わりにサンプルのインシデントINC0008111が入力として使用されます。

    (function() {
      try {
    
        var flowContextID = '4216396ffd7d11107edcf07204c30fd5';     // sys_id of sys_flow_context record
        var oldIncidentRecord = '552c48888c033300964f4932b03eb092'; // sys_id of INC0008112
        var newIncidentRecord = 'a83820b58f723300e7e16c7827bdeed2'; // sys_id of INC0008111
        var inputs = {};
        var gr = new GlideRecord('incident'); // Create new incident object
    
        gr.get(newIncidentRecord);            // Get GlideRecord object for INC0008111
    
        inputs['current'] = gr;               // Set new Incident record as input
        inputs['table_name'] = 'incident';    // Set table name to Incident
    
        var result = sn_fd.FlowAPI.getRunner()            // Create a ScriptableFlowRunner builder object.
          .restartFlowFromContext(flowContextID, inputs); // Restart flow with new inputs.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
    
        gs.info(contextId + ' ' + dateRun);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    
    })();
    

    FlowAPI - scheduleCancel (String contextId、String reason、Integer delaySeconds)

    フローエンジンキュー内のシステムイベントをスケジュールして、進行中、中断と推定、遅延後待機状態になっているフローをキャンセルします。

    表 : 29. パラメーター
    名前 タイプ 説明
    contextId String フロー、サブフロー、またはアクションの実行詳細レコードの Sys_id。ターゲットフロー、サブフロー、またはアクションは、進行中、中断と推定、または待機状態である必要があります。の フローデザイナー[フロー実行] タブに移動して実行の詳細にアクセスするか、メソッドによって返されたコンテキストレコードのsys_idを渡します。
    注:
    ターゲットコンテキストがインスタンスの別のノードで実行されている場合、キャンセルにわずかな遅延が発生する可能性があります。同じノードで実行されているコンテキストはすぐにキャンセルされます。別のノードで実行されているコンテキストの場合、まずキャンセルが適切なノードに転送されるまで待つ必要があります。
    理由 文字列 フロー、サブフロー、またはアクションをキャンセルする理由です。フローエンジンのログエントリー [sys_flow_log] テーブルの [メッセージ] フィールドに表示されます。
    delaySeconds 整数 オプション。フローエンジンキュー内のキャンセルイベントを処理するまで待機する秒数。このパラメーターを省略すると、メソッドはデフォルト値の 1 秒を使用します。

    このパラメーターを使用すると、何千ものフローコンテキストのキャンセルを同時にスケジュールすることによるパフォーマンスへの影響を回避できます。すべてのキャンセルを同時に実行するのではなく、フローキャンセルのバッチを遅延してスケジュールします。または、非同期フローのタイムアウト値として遅延を使用することもできます。

    表 : 30. 返される内容
    タイプ 説明
    なし

    この例では、 startFlow() メソッドの戻り値を使用して、実行時間の長いフローのキャンセルをスケジュールします。

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var contextId = sn_fd.FlowAPI.startFlow('global.myFlow', inputs); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the scheduleCancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.scheduleCancel(contextId, 'Flow took too long to execute.', 60);

    この例では、Test Flow という名前のフローのキャンセルをスケジュールします。

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.scheduleCancel(now_GR.getUniqueValue(), 'Canceling Test Flows', 60);
    } 

    この例では、delaySeconds パラメーターを使用して、フローキャンセルジョブをバッチで実行します。バッチを使用して、何千ものフローコンテキストをキャンセルします。

    var delaySeconds = 1;
    
    for (var i; i < sys_flow_context.length; ++i) {
      if (i % 100 === 0) {
        delaySeconds = delaySeconds + 60;
      }
      var contextId = sys_flow_context[i];
      var reason = "Example reason";
      sn_fd.FlowAPI.scheduleCancel(contextId, reason, delaySeconds);
    }

    FlowAPI - setEncryptedOutput(文字列 password)

    スクリプトステップ内で password2 の値を構築します。

    GlideRecord から返された暗号化された password2 値を特定し、システムが値を暗号化された文字列ではなくマスク済みパスワードとして表示できるようにします。

    表 : 31. パラメーター
    名前 タイプ 説明
    パスワード 文字列 暗号化された password2 値。
    表 : 32. 返される内容
    タイプ 説明
    文字列 暗号化された password2 値。エンジンによってパスワード値として認識されます。

    この例では、ユーザーレコードから password2 フィールドの値を返し、変数に格納します。この変数は setEncryptedOutput メソッドに渡されます。このメソッドは、sn_fd.GlideActionUtil.setEncryptedOutput を使用して呼び出されます。インスタンスは、戻り値をパスワードとして認識します。

    (function execute(inputs, outputs) {
      // ...code...
      var now_GR = new GlideRecord('sys_user');
      now_GR.addQuery('first_name' , 'Abel');
      now_GR.query();
      now_GR.next();
      var pwVal = now_GR.getValue('pw2');
      outputs['usedSetEncrypted'] = sn_fd.GlideActionUtil.setEncryptedOutput(pwVal);
      outputs['justSetDirectly'] = pwVal;
    })(inputs, outputs);

    FlowAPI - startAction(文字列 name, マップ inputs)

    サーバー側スクリプトから非同期的にアクションを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からアクションを実行します。このメソッドを使用して実行されるアクションは非同期的に実行されるため、このメソッドを使用するスクリプトは、アクションによって作成される出力にアクセスできません。アクションを同期で実行し、生成された出力にアクセスするには、executeAction を使用します。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、セッションを開始したユーザーとしてアクションを実行します。
    表 : 33. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるアクションのスコープと名前。global.action_name など。
    inputs マップ アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。
    表 : 34. 返される内容
    タイプ 説明
    文字列 アクションのコンテキストレコードの sys Id です。フローデザイナー の [フローの実行] タブに移動し、フロー実行を選択して [コンテキストレコードを開く] をクリックして、コンテキストレコードにアクセスします。

    この例では、sn_fd.FlowAPI.startAction を使用して、sn_itsm_spoke スコープで add_comment というアクションを実行します。inputs オブジェクトには、ターゲットレコードとそのレコードに追加するコメントが含まれます。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startAction('sn_itsm_spoke.add_comment', inputs);	
    			
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - startActionQuick(文字列 name, マップ inputs)

    実行の詳細や他の関連レコードを作成せずに、サーバー側スクリプトから非同期的にアクションを実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    待機サポート
    このメソッドは、アクションを一時停止して条件を待機することはサポートしていません。「承認を求める」や「条件待ち」などの待機条件で一時停止するステップはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するアクションの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 35. パラメーター
    名前 タイプ 説明
    name 文字列 実行するアクションのスコープと内部名です。例えば、global.action_name です。フローデザイナー アクションのリストで [内部名] フィールドを見つけます。
    inputs マップ アクションの入力を定義する名前/値ペアです。利用可能なアクションの入力と必要なデータタイプは、アクションアウトラインの [入力] で確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    表 : 36. 返される内容
    タイプ 説明
    なし
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startActionQuick('global.update_record_test', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - startFlow(文字列 name, マップ inputs)

    サーバー側スクリプトからフローを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からフローを実行します。このメソッドを使用して実行されるフローは非同期で実行されます。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
    表 : 37. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるフローのスコープと名前。global.flow_name など。
    inputs マップ トリガーの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。
    表 : 38. 返される内容
    タイプ 説明
    文字列 フローのコンテキストレコードの sys Id です。フローデザイナー の [フローの実行] タブに移動し、フロー実行を選択して [コンテキストレコードを開く] をクリックして、コンテキストレコードにアクセスします。

    この例では、sn_fd.FlowAPI.startFlow を使用して、test_flow というグローバルフローを実行します。コードは、フローが必要とする入力を含む inputs 変数を作成します。この場合、現在のレコードとそのレコードのテーブルです。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
     
      var now_GR = new GlideRecord('incident'); 
      now_GR.addQuery('number', 'INC0009009'); 
      now_GR.query(); 
      now_GR.next();
    
      try {
        var inputs = {};
        inputs['current'] = now_GR; // GlideRecord of table: Incident
        inputs['table_name'] = 'incident';
    
        var contextId = sn_fd.FlowAPI.startFlow('global.test_flow', inputs);	
    	
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);  
      }
    })();

    FlowAPI - startFlowQuick(文字列 name, マップ inputs)

    実行の詳細や他の関連レコードを作成せずに、サーバー側スクリプトから非同期的にフローを実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    システムユーザーとして実行
    このメソッドは、システムユーザーとしてフローを実行します。セッションを開始するユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。
    待機サポート
    このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するフローの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 39. パラメーター
    名前 タイプ 説明
    name 文字列 実行するフローのスコープと内部名です。例えば、global.flow_name です。フローデザイナー フローのリストで [内部名] フィールドを見つけます。
    inputs マップ トリガーの入力を定義する名前/値ペアです。利用可能なトリガーの入力と必要なデータタイプは、フローの [トリガー] セクションで確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    表 : 40. 返される内容
    タイプ 説明
    なし
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.startFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI - startSubflow(文字列 name, マップ input)

    サーバー側スクリプトからサブフローを実行します。

    ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からサブフローを実行します。このメソッドを使用して実行されるサブフローは非同期的に実行され、このメソッドを含むスクリプトは、そのフローによって作成された出力にアクセスできません。サブフローを同期で実行し、生成された出力にアクセスするには、executeSubflow を使用します。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    注:
    このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
    表 : 41. パラメーター
    名前 タイプ 説明
    name 文字列 実行されるサブフローのスコープと名前。global.subflow_name など。
    inputs マップ サブフロー入力を定義する名前と値のペア。入力ラベルではなく、入力名を使用します。
    表 : 42. 返される内容
    タイプ 説明
    文字列 サブフローのコンテキストレコードの sys Id です。フローデザイナー の [フローの実行] タブに移動し、フロー実行を選択して [コンテキストレコードを開く] をクリックして、コンテキストレコードにアクセスします。

    この例は、sn_fd.FlowAPI.startSubflow を使用して、test_subflow というグローバルフローを実行します。コードは try/catch ステートメントでラップされ、フローの実行時に発生するエラーをすべてキャプチャします。

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();

    FlowAPI - startSubflowQuick(文字列 name, マップ inputs)

    実行の詳細や他の関連レコードを作成せずに、サーバー側スクリプトから非同期的にサブフローを実行します。レコード保持のオーバーヘッドをなくすことで、パフォーマンスを向上させます。 この API を使用すると、本番環境での大量の処理 (1 秒あたり複数実行など) の速度が向上します。

    レポートと生成されたレコード
    このメソッドは、フローデザイナー 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。
    システムユーザーとして実行
    このメソッドは、システムユーザーとしてフローを実行します。セッションを開始するユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。
    待機サポート
    このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。
    MID Server のサポート
    このメソッドは、MID Server から実行するフローの一時停止をサポートしていません。
    注:
    この API は、ScriptableFlowRunner - スコープ指定 に置き換えられました。これにより、オブジェクトの構築と フローデザイナー フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメイン分離をサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
    表 : 43. パラメーター
    名前 タイプ 説明
    name 文字列 実行するサブフローのスコープと内部名です。例えば、global.subflow_name です。フローデザイナー サブフローのリストで [内部名] フィールドを見つけます。
    inputs マップ サブフロー入力を定義する名前と値のペア。利用可能なサブフローの入力と必要なデータタイプは、サブフローの [入力] で確認できます。入力ラベルではなく、入力名を使用します。例:{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}
    表 : 44. 返される内容
    タイプ 説明
    なし
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startSubflowQuick('global.test_quick_run_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();  
        gs.error(message);
        }
    	
    })();