---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

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

# FlowAPI - スコープ指定、グローバル {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：81分

FlowAPI は、アクション、フロー、またはサブフローを、ブロッキングメソッドまたはノンブロッキングメソッドのいずれかを使用してサーバー側スクリプトで実行するメソッドを提供します。

`sn_fd` 名前空間を使用して、グローバルおよびスコープ対象のスクリプトで FlowAPI メソッドにアクセスします。ワークフロースタジオ の \[コード スニペット\] アクションを使用してフローの呼び出しを作成するか、ここで説明するメソッドを使用してスクリプトを手動で更新します。  
注:  
ドメインセパレーションされたインスタンスでは、この API によってトリガーされるフロー、サブフロー、およびアクションは、スクリプトを開始したユーザーのドメインで実行されます。たとえば、Acme ドメイン内のユーザーがフローをトリガーするスクリプトを開始した場合、フローがシステムユーザーとして実行されている場合でも、フローは Acme ドメイン内で実行され、Acme データにのみアクセスできます。  
注:  
インスタンスのパフォーマンスを最適化するには、非同期ビジネスルールスクリプトからこれらのメソッドを呼び出さないようにします。代わりに、ワークフロースタジオの UI 内でスケジュール済みジョブレコードを作成します。

## FlowAPI - cancel(文字列 contextId, 文字列 reason) {#ariaid-title2}

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

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

{#FlowAPI-cancel_S_S__table_twb_vmn_p3b} {#FlowAPI-cancel_S_S__table_uwb_vmn_p3b__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 2. 返される内容]

{#FlowAPI-cancel_S_S__table_uwb_vmn_p3b}  
この例では、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) {#ariaid-title3}

サーバー側スクリプトから同期的にアクションを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からアクションを実行します。このメソッドを使用して実行されるアクションは同期で実行されるため、このメソッドはアクションによって作成された出力にアクセスできます。アクションを非同期で実行するには、startAction を使用します。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、セッションを開始したユーザーとしてアクションを実行します。
{#ScriptableFlow-executeAction__table_jl1_gr1_jfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるアクションのスコープと名前。`global.action_name` など。 |
| inputs | マップ | アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。 |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 3. パラメーター]

{#ScriptableFlow-executeAction__table_jl1_gr1_jfb} {#ScriptableFlow-executeAction__table_kl1_gr1_jfb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | アクション出力。 |
[表 : 4. 返される内容]

{#ScriptableFlow-executeAction__table_kl1_gr1_jfb}  
この例では、スクリプトは 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) {#ariaid-title4}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

待機サポート
:   このメソッドは、アクションを一時停止して条件を待機することはサポートしていません。「承認を求める」や「条件待ち」などの待機条件で一時停止するステップはサポートされていません。{#FlowAPI-executeActionQuick_S_O_N__ph-quick-wait-action}

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するアクションの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-executeActionQuick_S_O_N__table_gx5_kcf_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するアクションのスコープと内部名です。例えば、`global.action_name` です。ワークフロースタジオ アクションのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | アクションの入力を定義する名前/値ペアです。利用可能なアクションの入力と必要なデータタイプは、アクションアウトラインの \[入力\] で確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 5. パラメーター]

{#FlowAPI-executeActionQuick_S_O_N__table_gx5_kcf_1hb} {#FlowAPI-executeActionQuick_S_O_N__table_hx5_kcf_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | アクションによって定義された出力を含むオブジェクトです。アクションの出力は、アクションアウトラインの \[出力\] で確認できます。 |
[表 : 6. 返される内容]

{#FlowAPI-executeActionQuick_S_O_N__table_hx5_kcf_1hb}  

    (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) {#ariaid-title5}

サーバー側スクリプトからデータストリームアクションを同期的に実行し、ScriptableDataStream オブジェクトを返します。
データストリームアクションの詳細については、「 [データストリームアクションとページネーション](https://www.servicenow.com/docs/access?context=data-stream-actions&version=xanadu&pubname=xanadu-integrate-applications&ft:locale=en-US)」を参照してください。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
エラーを捕捉するために、常にデータストリームのロジックを `try/catch` ブロックで囲みます。データストリームを閉じてパフォーマンスの問題を防ぐために、常に、ScriptableDataStream クラスの close() メソッドで終了する `finally` ステートメントを含めます。
{#FlowAPI-executeDataStream_S_O__table_oz4_hd3_z3b__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するデータストリームアクションのスコープと名前です。例えば、`global.data_stream_action_name` です。 |
| inputs | マップ | アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。アクションに入力がない場合は、このパラメーターを含めないでください。 |
| timeout | 番号 | オプション。アクションがタイムアウトするまでの時間です。タイムアウトが期限切れになると、例外がスローされます。タイムアウトは executeDataStreamAction メソッドのみに適用されます。ScriptableDataStream クラスのメソッドには適用されません。 デフォルト：30,000 (com.glide.hub.flow_api.default_execution_time システムプロパティで指定) 単位：ミリ秒 |
[表 : 7. パラメーター]

{#FlowAPI-executeDataStream_S_O__table_oz4_hd3_z3b} {#FlowAPI-executeDataStream_S_O__table_pz4_hd3_z3b__entry__2}

| タイプ | 説明 |
|-|-|
| ScriptableDataStream | データストリーム内のアイテムを反復処理するために使用されるオブジェクトです。ScriptableDataStream クラスのメソッドを使用して、このオブジェクトを操作します。[「ScriptableDataStream API](https://servicenow-prod.fluidtopics.net/Am6spO0jzjjQ~pRu8enokQ#ScriptableDataStreamAPI "ScriptableDataStream API は、データのストリームとやり取りするためのメソッドを提供します。")」を参照してください。 |
[表 : 8. 返される内容]

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

    (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) {#ariaid-title6}

サーバー側スクリプトから同期的にフローを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からフローを実行します。このメソッドを使用して実行されるフローは同期で実行されます。フローを非同期で実行するには、startFlow を使用します。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
{#ScriptableFlow-executeFlow__table_sgl_l42_kfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるフローのスコープと名前。`global.flow_name` など。 |
| inputs | マップ | トリガーの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。 |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 9. パラメーター]

{#ScriptableFlow-executeFlow__table_sgl_l42_kfb} {#ScriptableFlow-executeFlow__table_tgl_l42_kfb__entry__2}

| タイプ | 説明 |
|-|-|
| なし | 通常の操作では、戻り値は生成されません。 |
| 例外 | 同期的に呼び出されたフローが一時停止すると、API が例外をスローします。`現在の実行は待機ステータスになります。`ほとんどの場合、フローが再開されると例外は削除されます。ただし、API は MID サーバーに送信されたフローを再開できません。 |
[表 : 10. 返される内容]

{#ScriptableFlow-executeFlow__table_tgl_l42_kfb}  
この例では、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) {#ariaid-title7}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

ユーザーとして実行
:   このメソッドは、セッションを開始したユーザーとしてフローを実行します。システムユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。

待機サポート
:   このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するフローの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-executeFlowQuick_S_O_N__table_rh4_qbf_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するフローのスコープと内部名です。例えば、`global.flow_name` です。ワークフロースタジオ フローのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | トリガーの入力を定義する名前/値ペアです。利用可能なトリガーの入力と必要なデータタイプは、フローの \[トリガー\] セクションで確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 11. パラメーター]

{#FlowAPI-executeFlowQuick_S_O_N__table_rh4_qbf_1hb} {#FlowAPI-executeFlowQuick_S_O_N__table_sh4_qbf_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 12. 返される内容]

{#FlowAPI-executeFlowQuick_S_O_N__table_sh4_qbf_1hb}  

    (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) {#ariaid-title8}

サーバー側スクリプトから同期的にサブフローを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からサブフローを実行します。このメソッドを使用して実行されるサブフローは同期で実行されます。サブフローを非同期で実行するには、startSubflow を使用します。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
{#ScriptableFlow-executeSubflow__table_jl1_gr1_jfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるサブフローのスコープと名前。`global.subflow_name` など。 |
| inputs | マップ | サブフロー入力を定義する名前と値のペア。入力ラベルではなく、入力名を使用します。 |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 13. パラメーター]

{#ScriptableFlow-executeSubflow__table_jl1_gr1_jfb} {#ScriptableFlow-executeSubflow__table_kl1_gr1_jfb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | サブフローの出力を含むオブジェクトです。 |
| 例外 | 同期的に呼び出されたフローが一時停止すると、API が例外をスローします。`現在の実行は待機ステータスになります。`ほとんどの場合、フローが再開されると例外は削除されます。ただし、API は MID サーバーに送信されたフローを再開できません。 |
[表 : 14. 返される内容]

{#ScriptableFlow-executeSubflow__table_kl1_gr1_jfb}  
この例では、スクリプトは 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) {#ariaid-title9}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

ユーザーとして実行
:   このメソッドは、セッションを開始したユーザーとしてフローを実行します。システムユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。

待機サポート
:   このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するフローの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-executeSubflowQuick_S_O_N__table_znf_gcf_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するサブフローのスコープと内部名です。例えば、`global.subflow_name` です。ワークフロースタジオ サブフローのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | サブフロー入力を定義する名前と値のペア。利用可能なサブフローの入力と必要なデータタイプは、サブフローの \[入力\] で確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
| timeout | 番号 | オプション。タイムアウト (ミリ秒単位)。この値は、com.glide.hub.flow_api.default_execution_time システムのプロパティで指定されているデフォルトの 30 秒のタイムアウトを上書きします。タイムアウトが期限切れになると、例外がスローされます。 |
[表 : 15. パラメーター]

{#FlowAPI-executeSubflowQuick_S_O_N__table_znf_gcf_1hb} {#FlowAPI-executeSubflowQuick_S_O_N__table_a4f_gcf_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | サブフローによって定義された出力を含むオブジェクトです。サブフローの出力は、サブフローアウトラインの \[サブフローの入力および出力\] で確認できます。 |
[表 : 16. 返される内容]

{#FlowAPI-executeSubflowQuick_S_O_N__table_a4f_gcf_1hb}  

    (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) {#ariaid-title10}

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

| 名前 | タイプ | 説明 |
|-|-|-|
| contextId | 文字列 | エラーメッセージを取得するフロー、サブフロー、またはアクションの sys_id です。 |
[表 : 17. パラメーター]

{#FlowAPI-getErrorMessage_S__table_zyb_hrm_25b} {#FlowAPI-getErrorMessage_S__table_azb_hrm_25b__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | 前回の操作の実行とそれによって生成されたエラーメッセージです。 |
[表 : 18. 返される内容]

{#FlowAPI-getErrorMessage_S__table_azb_hrm_25b}  
この例は、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) {#ariaid-title11}

フローステージのリストを含む JSON 文字列を返します。
{#FlowAPI-getFlowStages_S__table_x1j_n2v_v5b__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| scopedFlowName | 文字列 | ステージを取得するフローのアプリケーションスコープと名前。 |
[表 : 19. パラメーター]

{#FlowAPI-getFlowStages_S__table_x1j_n2v_v5b} {#FlowAPI-getFlowStages_S__table_y1j_n2v_v5b__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | ステージレコード値別にフローのステージをリストする JSON 形式の文字列。 |
[表 : 20. 返される内容]

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

    (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) {#ariaid-title12}

完了したアクションまたはサブフローの出力を返します。
startAction() または startSubflow() メソッドのいずれかの戻り値を contextId パラメーターとして使用できます。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-getOutputs_S__table_lf5_5qq_nlb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| contextId | 文字列 | 出力を取得するアクションまたはサブフローの sys_id です。 |
[表 : 21. パラメーター]

{#FlowAPI-getOutputs_S__table_lf5_5qq_nlb} {#FlowAPI-getOutputs_S__table_mf5_5qq_nlb__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | アクションまたはサブフローの出力を含むオブジェクトです。 |
[表 : 22. 返される内容]

{#FlowAPI-getOutputs_S__table_mf5_5qq_nlb}  
この例は、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() {#ariaid-title13}

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

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 23. パラメーター]

{#FlowAPI-getRunner__table_swx_cpp_rlb} {#FlowAPI-getRunner__table_twx_cpp_rlb__entry__2}

| タイプ | 説明 |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") | ワークフロースタジオ のアクション、フロー、またはサブフローを実行するために使用されるビルダーオブジェクト。 |
[表 : 24. 返される内容]

{#FlowAPI-getRunner__table_twx_cpp_rlb}  
この例は、フローを同期的に実行します。


    (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:getStatus(文字列 contextId) {#ariaid-title14}

フロー、サブフロー、またはアクションのステータスを返します。
{#FlowAPI-getStatus-S__table_isj_glz_dbc__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| contextId | 文字列 | ステータスを取得するフロー、サブフロー、またはアクションのsys_id。 |
[表 : 25. パラメーター]

{#FlowAPI-getStatus-S__table_isj_glz_dbc} {#FlowAPI-getStatus-S__table_jsj_glz_dbc__entry__3}

| パラメーター | タイプ | 説明 |
|-|-|-|
| \<文字列\> | 文字列 | フロー、サブフロー、またはアクションの現在のステータスを名前と値のペアとして含む JSON 形式の文字列。 { "hasLookupError": Boolean, "errorMessage": "String", "contextStatus": {Object} } |
| \<String\>.hasLookupError | ブール | フロー、サブフロー、またはアクションのコンテキストステータスの検索で問題が発生したかどうかを示すフラグ。 { "hasLookupError": false, "errorMessage": "", "contextStatus": {Object} } |
| \<String\>.errorMessage | 文字列 | コンテキストルックアップ操作によって返されたエラーメッセージ。このパラメーターは、 hasLookupError が false の場合 void です。 { "hasLookupError": false, "errorMessage": "", "contextStatus": {Object} } |
| \<String\>.contextStatus | オブジェクト | クエリされたフロー、サブフロー、またはアクションに関する状況の詳細を含む JSON 形式の文字列。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "COMPLETE", "errorState": "NONE" } } |
| \<String\>.contextStatus.state | 文字列 | フロー、サブフロー、またはアクションコンテキストのステータス。一部のステータス値は、関連するパラメーターの追加情報を提供します。 * COMPLETE は、 errorState パラメーターに追加情報を提供します * ERROR は、 message パラメーターに追加情報を提供します * CANCELLED は、 canceledReason パラメーターに追加情報を提供します * IN_PROGRESSは、 isRunOnMid パラメーターに追加情報を提供します * WAITING は、 waitingOn パラメーターに追加情報を提供します {#FlowAPI-getStatus-S__ul_n2r_w11_2bc} { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "COMPLETE", "errorState": "NONE" } } |
| \<String\>.contextStatus.errorState | 文字列 | フローエラー処理によって生成されたフロー完了ステータス。API は、フロー、サブフロー、またはアクションが COMPLETE ステータスの場合にのみ、このパラメーターを生成します。 * ERROR_CAUGHT * ERROR_SKIPPED {#FlowAPI-getStatus-S__ul_k5l_nb1_2bc} { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "COMPLETE", "errorState": "ERROR_CAUGHT" } } |
| \<String\>.contextStatus.message | 文字列 | フロー、サブフロー、またはアクションによって返されたエラーメッセージ。API は、フロー、サブフロー、またはアクションが ERROR ステータスの場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "ERROR", "message": "Error:  Error Message! (Process Automation.LOG; line 1)" } } |
| \<String\>.contextStatus.canceledReason | 文字列 | フロー、サブフロー、またはアクションによって返されたキャンセルメッセージ。API は、フロー、サブフロー、またはアクションが CANCELLED ステータスの場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "CANCELLED", "canceledReason": "User has requested to stop executing the flow" } } |
| \<String\>.contextStatus.isRunOnMid | ブール | フロー、サブフロー、またはアクションが MID サーバー環境で実行されるかどうかを示すフラグ。API は、フロー、サブフロー、またはアクションがIN_PROGRESSステータスの場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "IN_PROGRESS", "isRunOnMid": true } } } |
| \<String\>.contextStatus.waitingOn | アレイ | 現在のフロー、サブフロー、またはアクションが待機しているアイテムのリスト。API は、フロー、サブフロー、またはアクションが WAITING ステータスの場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "TIMER", "endTime": 1713627497643 }, { "stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT", "table": "incident", "condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112", "endTime": 1713645497800 } ] } } |
| \<String\>.contextStatus.waitingOn.stepType | 文字列 | フロー、サブフロー、またはアクションが待機している理由のリスト。API は、フロー、サブフロー、またはアクションが WAITING ステータスの場合にのみ、このパラメーターを生成します。 * WAIT_FOR_CONDITION * WAIT_FOR_CONDITION_WITH_TIMEOUT * ASK_FOR_APPROVAL * CREATE_TASK_WITH_WAIT * タイマー * SLA_TIMER * サブフロー {#FlowAPI-getStatus-S__ul_jrw_td1_2bc} |
| \<String\>.contextStatus.waitingOn.table | 文字列 | フロー、サブフロー、またはアクションが待機しているレコードを含むテーブル名。API は、フロー、サブフロー、またはアクションが WAITING ステータスにあり、stepType が WAIT_FOR_CONDITION、WAIT_FOR_CONDITION_WITH_TIMEOUT、ASK_FOR_APPROVAL、または CREATE_TASK_WITH_WAIT の場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "WAIT_FOR_CONDITION", "table": "incident", "condition": "sys_id=1347723243200210338774d6ebb8f285^short_description=1238" } ] } } |
| \<String\>.contextStatus.waitingOn.condition | 文字列 | フロー、サブフロー、またはアクションが待機しているレコードのクエリ条件。API は、フロー、サブフロー、またはアクションが WAITING ステータスにあり、stepType が WAIT_FOR_CONDITION、WAIT_FOR_CONDITION_WITH_TIMEOUT、ASK_FOR_APPROVAL、または CREATE_TASK_WITH_WAIT の場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "WAIT_FOR_CONDITION", "table": "incident", "condition": "sys_id=1347723243200210338774d6ebb8f285^short_description=1238" } ] } } |
| \<String\>.contextStatus.waitingOn.endTime | 整数 | フロー、サブフロー、またはアクションが待機している終了時間。API は、フロー、サブフロー、またはアクションが WAITING ステータスにあり、stepType が WAIT_FOR_CONDITION_WITH_TIMEOUT、TIMER、または SLA_TIMER の場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "SLA_TIMER", "endTime": 1713574610000 } ] } } |
| \<String\>.contextStatus.waitingOn.approvalRule | 文字列 | フロー、サブフロー、またはアクションが待機している承認ルール。API は、フロー、サブフロー、またはアクションが WAITING ステータスで、stepType が ASK_FOR_APPROVAL の場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "ASK_FOR_APPROVAL", "table": "incident", "condition": "sys_id=3bd89703372002103387963174924b20^approvalINapproved,rejected,cancelled", "approvalRule": "ApprovesAnyU[a8f98bb0eb32010045e1a5115206fe3a,71826bf03710200044e0bfc8bcbe5d3b]" } ] } } |
| \<String\>.contextStatus.waitingOn.contextId | 文字列 | フローまたはサブフローが待機しているサブフローのsys_id。API は、フローまたはサブフローが WAITING ステータスにあり、stepType が SUBFLOW の場合にのみ、このパラメーターを生成します。 { "hasLookupError": false, "errorMessage": "", "contextStatus": { "state": "WAITING", "waitingOn": [ { "stepType": "SUBFLOW", "contextId": "0f724aabd921021020291a665e07e44a" } ] } } |
[表 : 26. 返される内容]

{#FlowAPI-getStatus-S__table_jsj_glz_dbc}  
この例では、\[Do the following in parallel\] フローロジックを含むフローを実行します。通常は、単一のスクリプトがフローを実行してそのエラーメッセージを取得することはありません。一般に、別のスクリプトまたは ワークフロースタジオ のいずれかが既にフローを実行しています。

    (function() {
      try {
        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .flow('global.test_do_in_parallel')   // Run the global scope flow named do_in_parallel.
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result

        var flowStatus = sn_fd.FlowAPI
          .getStatus(contextId);                // Retrieve any outputs from the action execution.

        return flowStatus;
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();

出力:

    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
            {
              "stepType": "TIMER",
              "endTime": 1713627497643
            },
            {
              "stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT",
              "table": "incident",
              "condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112",
              "endTime": 1713645497800
            }
          ]
        }
      }

## FlowAPI - hasApprovals(文字列 scopedFlowName) {#ariaid-title15}

指定されたスコープ内のフローが「承認を求める」アクションを含んでいるかどうかをチェックします。
hasApprovals() メソッドは、指定されたスコープ内のフローが「承認を求める」アクションを含んでいるかどうかを判断します。このメソッドはまた、 フロー内の「承認を求める」アクションが、If フローロジックブロックでネストされているかどうかをチェックします。詳細については、「 [承認を求めるアクション](https://www.servicenow.com/docs/access?context=ask-approval-flow-designer&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US)」を参照してください。
{#FlowAPI-hasApprovals_S__table_w1d_dz2_vlb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| scopedFlowName | 文字列 | 実行するフローのスコープと内部名です。例えば、`global.flow_name` です。ワークフロースタジオ フローのリストで \[内部名\] フィールドを見つけます。 |
[表 : 27. パラメーター]

{#FlowAPI-hasApprovals_S__table_w1d_dz2_vlb} {#FlowAPI-hasApprovals_S__table_x1d_dz2_vlb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | 次の文字列値のいずれか 1 つを返します。 * ALWAYS：フローに、条件分岐 `If` フローロジックブロックでネストされていない「承認を求める」アクションが含まれています。 * CONDITIONALLY：フローに、条件分岐 `If` フローロジックブロックでネストされた「承認を求める」アクションが含まれています。 * NO：フローに「承認を求める」アクションは含まれていません。 * UNKNOWN：コンパイラーエラーが発生しました。フローに「承認を求める」アクションが含まれているかどうかは、システムでは判断されません。 {#FlowAPI-hasApprovals_S__ul_fx1_fdf_vlb} |
[表 : 28. 返される内容]

{#FlowAPI-hasApprovals_S__table_x1d_dz2_vlb}  
次の例では、グローバルスコープ内の 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) {#ariaid-title16}

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

| 名前 | タイプ | 説明 |
|-|-|-|
| contextId | 文字列 | 再起動するフロー、サブフロー、またはアクションのsys_id。このフロー、サブフロー、またはアクションはバックグラウンドで実行され、sysevent レコードが関連付けられている必要があります。 |
| providedInputs | オブジェクト | オプション。フロー、サブフロー、またはアクションの置換入力を定義する名前と値のペアを含むマップオブジェクト。このパラメーターを省略するか null 値を指定すると、フロー、サブフロー、またはアクションは、以前に指定された入力を使用して実行されます。 |
[表 : 29. パラメーター]

{#FlowAPI-restartFlowFromContext_S_O__table_wqp_1sv_v5b} {#FlowAPI-restartFlowFromContext_S_O__table_twx_cpp_rlb__entry__2}

| タイプ | 説明 |
|-|-|
| ScriptableFlowRunnerResultsScoped | ワークフロースタジオ アクション、フロー、またはサブフローの実行の詳細を含むオブジェクト。 |
[表 : 30. 返される内容]

{#FlowAPI-restartFlowFromContext_S_O__table_twx_cpp_rlb}  
インシデントテーブルにレコードベースのトリガーがあるサンプルフローを再開します。元のフローでは、サンプルインシデント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) {#ariaid-title17}

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

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

{#FlowAPI-scheduleCancel_S_S_I__table_mrg_gpn_v5b} {#FlowAPI-scheduleCancel_S_S_I__table_nrg_gpn_v5b__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 32. 返される内容]

{#FlowAPI-scheduleCancel_S_S_I__table_nrg_gpn_v5b}  
この例では、 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) {#ariaid-title18}

スクリプトステップ内で password2 の値を構築します。
GlideRecord から返された暗号化された password2 値を特定し、システムが値を暗号化された文字列ではなくマスク済みパスワードとして表示できるようにします。
{#ScriptableFlow-glideActionUtil-setEncryptedOutput__table_o5h_fyl_mfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| パスワード | 文字列 | 暗号化された password2 値。 |
[表 : 33. パラメーター]

{#ScriptableFlow-glideActionUtil-setEncryptedOutput__table_o5h_fyl_mfb} {#ScriptableFlow-glideActionUtil-setEncryptedOutput__table_p5h_fyl_mfb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | 暗号化された password2 値。エンジンによってパスワード値として認識されます。 |
[表 : 34. 返される内容]

{#ScriptableFlow-glideActionUtil-setEncryptedOutput__table_p5h_fyl_mfb}  
この例では、ユーザーレコードから 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) {#ariaid-title19}

サーバー側スクリプトから非同期的にアクションを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からアクションを実行します。このメソッドを使用して実行されるアクションは非同期的に実行されるため、このメソッドを使用するスクリプトは、アクションによって作成される出力にアクセスできません。アクションを同期で実行し、生成された出力にアクセスするには、executeAction を使用します。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、セッションを開始したユーザーとしてアクションを実行します。
{#ScriptableFlow-startAction__table_r5n_p2d_hfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるアクションのスコープと名前。`global.action_name` など。 |
| inputs | マップ | アクションの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。 |
[表 : 35. パラメーター]

{#ScriptableFlow-startAction__table_r5n_p2d_hfb} {#ScriptableFlow-startAction__table_s5n_p2d_hfb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | アクションのコンテキストレコードの sys Id です。ワークフロースタジオ の \[フローの実行\] タブに移動し、フロー実行を選択して \[コンテキストレコードを開く\] をクリックして、コンテキストレコードにアクセスします。 |
[表 : 36. 返される内容]

{#ScriptableFlow-startAction__table_s5n_p2d_hfb}  
この例では、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) {#ariaid-title20}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

待機サポート
:   このメソッドは、アクションを一時停止して条件を待機することはサポートしていません。「承認を求める」や「条件待ち」などの待機条件で一時停止するステップはサポートされていません。{#FlowAPI-startActionQuick_S_O__ph-quick-wait-action}

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するアクションの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-startActionQuick_S_O__table_zww_lff_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するアクションのスコープと内部名です。例えば、`global.action_name` です。ワークフロースタジオ アクションのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | アクションの入力を定義する名前/値ペアです。利用可能なアクションの入力と必要なデータタイプは、アクションアウトラインの \[入力\] で確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
[表 : 37. パラメーター]

{#FlowAPI-startActionQuick_S_O__table_zww_lff_1hb} {#FlowAPI-startActionQuick_S_O__table_axw_lff_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 38. 返される内容]

{#FlowAPI-startActionQuick_S_O__table_axw_lff_1hb}  

    (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) {#ariaid-title21}

サーバー側スクリプトからフローを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からフローを実行します。このメソッドを使用して実行されるフローは非同期で実行されます。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
{#ScriptableFlow-startFlow__table_myv_pmw_gfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるフローのスコープと名前。`global.flow_name` など。 |
| inputs | マップ | トリガーの入力を定義する名前/値ペアです。入力ラベルではなく、入力名を使用します。 |
[表 : 39. パラメーター]

{#ScriptableFlow-startFlow__table_myv_pmw_gfb} {#ScriptableFlow-startFlow__table_nyv_pmw_gfb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | フローのコンテキストレコードの sys Id です。ワークフロースタジオ の \[フローの実行\] タブに移動し、フロー実行を選択して \[コンテキストレコードを開く\] をクリックして、コンテキストレコードにアクセスします。 |
[表 : 40. 返される内容]

{#ScriptableFlow-startFlow__table_nyv_pmw_gfb}  
この例では、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) {#ariaid-title22}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

システムユーザーとして実行
:   このメソッドは、システムユーザーとしてフローを実行します。セッションを開始するユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。

待機サポート
:   このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するフローの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-startFlowQuick_S_O__table_wxm_hff_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するフローのスコープと内部名です。例えば、`global.flow_name` です。ワークフロースタジオ フローのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | トリガーの入力を定義する名前/値ペアです。利用可能なトリガーの入力と必要なデータタイプは、フローの \[トリガー\] セクションで確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
[表 : 41. パラメーター]

{#FlowAPI-startFlowQuick_S_O__table_wxm_hff_1hb} {#FlowAPI-startFlowQuick_S_O__table_xxm_hff_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 42. 返される内容]

{#FlowAPI-startFlowQuick_S_O__table_xxm_hff_1hb}  

    (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) {#ariaid-title23}

サーバー側スクリプトからサブフローを実行します。
ビジネスルール、スクリプトインクルード、またはその他のサーバー側スクリプト内からサブフローを実行します。このメソッドを使用して実行されるサブフローは非同期的に実行され、このメソッドを含むスクリプトは、そのフローによって作成された出力にアクセスできません。サブフローを同期で実行し、生成された出力にアクセスするには、executeSubflow を使用します。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。  
注:  
このメソッドは、フロープロパティで指定されたユーザーとしてフローを実行します。
{#ScriptableFlow-startSubFlow__table_jwt_b1d_hfb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行されるサブフローのスコープと名前。`global.subflow_name` など。 |
| inputs | マップ | サブフロー入力を定義する名前と値のペア。入力ラベルではなく、入力名を使用します。 |
[表 : 43. パラメーター]

{#ScriptableFlow-startSubFlow__table_jwt_b1d_hfb} {#ScriptableFlow-startSubFlow__table_kwt_b1d_hfb__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | サブフローのコンテキストレコードの sys Id です。ワークフロースタジオ の \[フローの実行\] タブに移動し、フロー実行を選択して \[コンテキストレコードを開く\] をクリックして、コンテキストレコードにアクセスします。 |
[表 : 44. 返される内容]

{#ScriptableFlow-startSubFlow__table_kwt_b1d_hfb}  
この例は、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) {#ariaid-title24}

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

レポートと生成されたレコード
:   このメソッドは、ワークフロースタジオ 設定に関係なく、実行の詳細とコンテキストレコードを作成しません。

システムユーザーとして実行
:   このメソッドは、システムユーザーとしてフローを実行します。セッションを開始するユーザーとして実行するようにフローを設定すること、またはユーザーの代理操作を行うことはサポートされていません。

待機サポート
:   このメソッドは、フローを一時停止して条件を待機することはサポートしていません。「承認を求める」、「条件待ち」、「期間の待機」などの待機条件で一時停止するアクションまたはフローロジックはサポートされていません。

MID サーバーのサポート
: このメソッドは、MID サーバーから実行するフローの一時停止をサポートしていません。  
注:  
この API は、[ScriptableFlowRunner - スコープ指定](https://servicenow-prod.fluidtopics.net/EQbAziSqeaz5keLuv620mA#ScriptableFlowRunnerScopedAPI "フロー、サブフロー、およびアクション実行のパラメーターを定義するために使用するビルダーオブジェクトを作成します。特定のドメインで実行するフローを指定できます。ビルダーから直接フロー、サブフロー、またはアクションの実行を開始し、ScriptableFlowRunnerResult オブジェクトで結果を表示します。") に置き換えられました。これにより、オブジェクトのビルドと ワークフロースタジオ フローおよびアクションの実行に使用される既存のメソッドが廃止されます。FlowAPI クラスの getRunner() メソッドを使用して ScriptableFlowRunner オブジェクトを返し、関連するメソッドを使用します。ドメインセパレーションをサポートする必要がある場合は、ScriptableFlowRunner メソッドを使用します。
{#FlowAPI-startSubflowQuick_S_O__table_zx2_jff_1hb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| name | 文字列 | 実行するサブフローのスコープと内部名です。例えば、`global.subflow_name` です。ワークフロースタジオ サブフローのリストで \[内部名\] フィールドを見つけます。 |
| inputs | マップ | サブフロー入力を定義する名前と値のペア。利用可能なサブフローの入力と必要なデータタイプは、サブフローの \[入力\] で確認できます。入力ラベルではなく、入力名を使用します。例：`{'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}` |
[表 : 45. パラメーター]

{#FlowAPI-startSubflowQuick_S_O__table_zx2_jff_1hb} {#FlowAPI-startSubflowQuick_S_O__table_ay2_jff_1hb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 46. 返される内容]

{#FlowAPI-startSubflowQuick_S_O__table_ay2_jff_1hb}  

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


