動的出力を開始するには

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む17読むのに数分
  • フローで使用するための動的オブジェクトを構築するサンプルアクションを作成します。

    始める前に

    必要なロール:action_designer または admin

    このタスクについて

    このタスクでは、2 つのデータ収集アクションを作成します。1 つはインスタンスのレコードのスキーマを収集し、もう 1 つはインスタンスの同じテーブルにある複数のレコードのスキーマを収集します。目標は、動的出力として使用する複合オブジェクトと複合オブジェクトアレイの両方を作成することです。各データ収集アクションは、以下で構成されています。
    • インスタンスからテーブルスキーマのデータを収集する REST ステップ
    • REST ステップの応答本文からペイロードを作成するスクリプトステップ
    • タイプ JSON の output という名前の出力変数
    これらのデータ収集アクションを使用して、2 つの動的オブジェクトを構築します。次に、フロー設計時にデータ収集アクションを呼び出すカスタムアクションを作成します。
    注:
    このタスクでは、次の場合にインストールされるデモアクションを再作成します。 を要求する 統合ハブ プラグイン インスタンスに対して追加します

    手順

    1. 移動先 すべて > プロセス自動化 > Flow Designer.
    2. [新規] をクリックし、[新しいアクション] を選択します。
      1. アクションのプロパティ画面の [名前] フィールドに、「ServiceNow オブジェクトスキーマを取得 (動的)」と入力します。
      2. [送信] をクリックします。
    3. [アクションアウトライン] で、[入力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[入力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
      3. [タイプ] フィールドで、[文字列] を選択します。
      4. 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
    4. [アクションアウトライン] で、[入力] の下にある新しいステップの追加アイコン (新しいステップの追加アイコン) をクリックし、[REST ステップ] を選択します。
    5. REST ステップヘッダーの下で、次のフィールドに入力します。
      フィールド
      接続 [接続エイリアスを使用] オプションを選択したままにします。
      接続エイリアス [新規レコードを作成] アイコン ([新規レコードを作成] アイコン) をクリックして新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の資格情報では、基本認証の資格情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。接続および資格情報の詳細については、「接続の開始」および「資格情報の開始」を参照してください。
      ビルド要求 [手動] オプションを選択したままにします。
      リソースパス api/now/processflow/table/」と入力し、データピルピッカー (データピルピッカー) をクリックします。選択 入力 > Table (テーブル). 次に、「/schema」と入力します。
      HTTP メソッド GET」と入力します。
      クエリパラメーター プラスアイコン (プラスアイコン) をクリックして新しいクエリパラメーターを追加します。次に、[名前] フィールドに「get_choices」と入力し、[値] フィールドに「true」と入力します。
    6. [アクションアウトライン] で、REST ステップの下にある新しいステップの追加アイコン (新しいステップの追加アイコン) をクリックし、[スクリプト] ステップを選択します。
      1. [入力変数] セクションで [変数の作成] をクリックします。
      2. [名前] フィールドに「payload」と入力します。
      3. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 REST ステップ > 応答本文.
      4. [スクリプト] フィールドに次のコードを入力します。
        
        (function execute(inputs, outputs) {
          var payload = JSON.parse(inputs.payload);
          
          var columns = payload.result.data.columns;
          var schema = columns.map(function(column) {
            var value = {
              label: column.label,
              name: column.name,
              type: getCOType(column.definition.base_type),
            };
            if (column.definition.type === 'choice') {
              value.type = 'choice';
              value.choices = column.definition.choices;
            } 
            if (column.definition.base_type === 'GUID') {
              value.children = [
                { label: 'Link', name: 'link', type: 'string' },
                { label: 'Value', name: 'value', type: 'string' },
              ];
            }
            return value;
          });
          outputs.schema = { 
            data: {
              type: 'object',
              children: schema,
            },
          };
          
          function getCOType(type) {
            if (type === 'GUID') return 'reference';
            return type;
          }
        })(inputs, outputs);
      5. [出力変数] セクションで [変数の作成] をクリックします。
      6. [ラベル] フィールドと [名前] フィールドに「スキーマ」と入力します。
      7. [タイプ] フィールドで、[JSON] を選択します。
    7. [アクションアウトライン] で、[出力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[出力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「出力」と入力します。
      3. [タイプ] フィールドで、[JSON] を選択します。
      4. [アクションの出力] ヘッダーで、[編集モードの終了] をクリックします。
      5. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 スクリプトステップ > schema.
    8. アクションヘッダーで [保存] をクリックし、[テスト] をクリックして、アクションをテストします
      1. テストアクション画面の [テーブル] フィールドに「インシデント」と入力します。
      2. [テストを実行] をクリックします。
      3. アクション実行の詳細を確認します。
      [フィールド] のランタイム値が次の簡略化された例に示すような形式の複合オブジェクトである場合、データ収集アクションは正常に実行されます。
      {
             "data": {
                 "type": "object",
                 "children": [
                     {
                         "name": "active",
                         "label": "Active",
                         "type": "boolean"
                     },
                     {
                         "name": "activity_due",
                         "label": "Activity due",
                         "type": "datetime"
                     }, ...
    9. アクションヘッダーで [公開] をクリックし、グローバルスコープ内の他のフローやアクションで Get ServiceNow Object Schema (Dynamic) アクションを使用できるようにします。

    ServiceNow Array.Object スキーマを取得 (動的) アクションの作成

    オブジェクトのアレイを生成するサンプルデータ収集アクションを作成します。

    始める前に

    必要なロール:action_designer または admin

    手順

    1. メインヘッダーで、フロー、サブフロー、またはアクションの作成アイコン (フロー、サブフロー、またはアクションの作成アイコン) をクリックし、[アクション] を選択します。
      1. アクションのプロパティ画面の [名前] フィールドに、「ServiceNow Array.Object スキーマを取得 (動的)」と入力します。
      2. [送信] をクリックします。
    2. [アクションアウトライン] で、[入力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[入力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
      3. [タイプ] フィールドで、[文字列] を選択します。
      4. 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
    3. [アクションアウトライン] で、[入力] の下にある新しいステップの追加アイコン (新しいステップアイコン) をクリックし、[REST] ステップを選択します。
    4. REST ステップヘッダーの下で、次のフィールドに入力します。
      フィールド
      接続 [接続エイリアスを使用] を選択したままにします。
      接続エイリアス [新規レコードを作成] アイコン ([新規レコードを作成] アイコン) をクリックして新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の資格情報では、基本認証の資格情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。
      ビルド要求 [手動] オプションを選択したままにします。
      リソースパス api/now/processflow/table/」と入力し、データピルピッカー (データピルピッカー) をクリックします。選択 入力 > Table (テーブル). 最後に、「/schema」と入力します。
      HTTP メソッド GET」と入力します。
      クエリパラメーター プラスアイコン (プラスアイコン) をクリックして新しいクエリパラメーターを追加します。次に、[名前] フィールドに「get_choices」と入力し、[値] フィールドに「true」と入力します。
    5. [アクションアウトライン] で、REST ステップの下にある新しいステップの追加アイコン (新しいステップアイコン) をクリックし、[スクリプト] ステップを選択します。
      1. [入力変数] セクションで [変数の作成] をクリックします。
      2. [名前] フィールドに「payload」と入力します。
      3. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 REST ステップ > 応答本文.
      4. [スクリプト] フィールドに次のコードを入力します。
        
        (function execute(inputs, outputs) {
          var payload = JSON.parse(inputs.payload);
          
          var columns = payload.result.data.columns;
          var schema = columns.map(function(column) {
            var value = {
              label: column.label,
              name: column.name,
              type: getCOType(column.definition.base_type),
            };
            if (column.definition.type === 'choice') {
              value.type = 'choice';
              value.choices = column.definition.choices;
            }
            return value;
          });
          outputs.schema = { 
            data: {
              type: 'array.object',
              attributes: {
                child_type: 'object',
              },
              children: schema,
            },
          };
          
          function getCOType(type) {
            if (type === 'GUID') return 'string';
            return type;
          }
        })(inputs, outputs);
      5. [出力変数] セクションで [変数の作成] をクリックします。
      6. [ラベル] フィールドと [名前] フィールドに「スキーマ」と入力します。
      7. [タイプ] フィールドで、[JSON] を選択します。
    6. [アクションアウトライン] で、[出力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[出力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「出力」と入力します。
      3. [タイプ] フィールドで [JSON] を選択します。
      4. [編集モードの終了] をクリックします。
      5. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 スクリプトステップ > schema.
    7. アクションヘッダーで [保存] をクリックし、[テスト] をクリックして、アクションをテストします
      1. テストアクション画面の [テーブル] フィールドに「incident」と入力します。
      2. [テストを実行] をクリックします。
      3. アクション実行の詳細を確認します。
        次の簡略化された例に示すように、[フィールド] 出力のランタイム値が [ラベル][名前]、および [値] に対するキーと値のペアのアレイを含む複合オブジェクトである場合、データ収集アクションは正常に実行されます。
        {
               "data": {
                   "type": "array.object",
                   "children": [
                       {
                           "name": "active",
                           "label": "Active",
                           "type": "boolean"
                       },
                       {
                           "name": "activity_due",
                           "label": "Activity due",
                           "type": "datetime"
                       }, ...
        
    8. アクションヘッダーで [公開] をクリックし、グローバルスコープ内の他のアクションで Get ServiceNow Array.Object Schema (Dynamic) アクションを使用できるようにします。

    ServiceNow レコードを取得 (動的) アクションの作成

    [テーブル] 入力の値が変更されると動的に更新される [レコード (Record)][レコード (Records)] の 2 つのアクション出力を動的に生成するサンプルアクションを作成します。

    始める前に

    必要なロール:action_designer または admin

    手順

    1. メインヘッダーで、フロー、サブフロー、またはアクションの作成アイコン (フロー、サブフロー、またはアクションの作成アイコン) をクリックし、[アクション] を選択します。
      1. アクションのプロパティモーダルの [名前] フィールドに、「ServiceNow レコードを取得 (動的)」と入力します。
      2. [送信] をクリックします。
    2. [アクションアウトライン] で、[入力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[入力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
      3. [タイプ] フィールドで、[動的選択肢] を選択します。
      4. 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
      5. [詳細入力の切り替え (Toggle advanced inputs)] アイコン (詳細入力の切り替えアイコン) をクリックして、[テーブル] 入力の詳細オプションを表示します。
      6. [デフォルト値] フィールドに、「インシデント」と入力します。
      7. [動的オプション] の [アクション] フィールドで、[ServiceNow テーブルを取得 - 動的] を選択します。
      8. [入力の作成] をクリックして、別のアクション入力を作成します。
      9. [ラベル] フィールドと [名前] フィールドに「NumberOfRecords」と入力します。
      10. [タイプ] フィールドで、[整数] を選択します。
      11. 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
      12. [詳細入力の切り替え (Toggle advanced inputs)] アイコン (詳細入力の切り替えアイコン) をクリックして、[テーブル] 入力の詳細オプションを表示します。
      13. [デフォルト値] フィールドに、「3」と入力します。
    3. [アクションアウトライン] で、[入力] の下にある新しいステップの追加アイコン (新しいステップアイコン) をクリックし、[REST] ステップを選択します。
    4. REST ステップヘッダーの下で、次のフィールドに入力します。
      フィールド
      接続 [接続エイリアスを使用] を選択したままにします。
      接続エイリアス [新規レコードを作成] アイコン ([新規レコードを作成] アイコン) をクリックして新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の資格情報では、基本認証の資格情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。
      ビルド要求 [手動] オプションを選択したままにします。
      リソースパス api/now/table/」と入力し、データピルピッカー (データピルピッカー) をクリックします。選択 入力 > Table (テーブル).
      HTTP メソッド GET」と入力します。
      クエリパラメーター プラスアイコン (プラスアイコン) をクリックして新しいクエリパラメーターを追加します。次に、[名前] フィールドに「sysparm_limit」と入力します。[値] フィールドの横にあるデータピルピッカー (データピルピッカー) をクリックし、 入力 > レコードの数.
    5. [アクションアウトライン] で、[入力] の下にある新しいステップの追加アイコン (新しいステップアイコン) をクリックし、[スクリプト] ステップを選択します。
      1. [入力変数] セクションで [変数の作成] をクリックします。
      2. [名前] フィールドに「payload」と入力します。
      3. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 REST ステップ > 応答本文.
      4. [スクリプト] フィールドに次のコードを入力します。
        
        (function execute(inputs, outputs) {
          var response = JSON.parse(inputs.payload);
          var records = response.result;
          outputs.record = records[0];
          outputs.records = JSON.stringify(records);
        })(inputs, outputs);
      5. [出力変数] セクションで [変数の作成] をクリックします。
      6. [ラベル] フィールドと [名前] フィールドに「record」と入力します。
      7. [タイプ] フィールドで [JSON] を選択します。
      8. [必須 (Mandatory)] スライダーを切り替えてアクティブにします。
      9. [変数を作成 (Create Variable)] をクリックして、スクリプトステップの別の出力変数を作成します。
      10. [ラベル] フィールドと [名前] フィールドに「レコード」と入力します。
      11. [タイプ] フィールドで、[JSON] を選択します。
      12. 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
    6. [アクションアウトライン] で、[出力] をクリックします。
      1. [アクション入力 (Action Input)] ヘッダーで、[出力の作成] をクリックします。
      2. [ラベル] フィールドと [名前] フィールドに「レコード」と入力します。
      3. [タイプ] フィールドで、[動的オブジェクト (Dynamic Object)] を選択します。
      4. 詳細入力の切り替えアイコン (詳細入力の切り替えアイコン) をクリックして、[レコード] 出力の詳細オプションを表示します。
      5. [動的オプション] で、[ServiceNow Array.Object スキーマを取得 (動的)][アクション] として選択します。
      6. テーブル入力を別の入力に依存させるには、[別の入力に依存 (Depends-On Another Input)] スライダーを切り替えてアクティブにします。
      7. [テーブル] フィールドで、[テーブル] を選択します。
      8. [アクションの出力] ヘッダーで、[編集モードの終了] をクリックします。
      9. [ ] フィールドの横にあるデータピルピッカー (データ ピルピッカー) をクリックし、 スクリプトステップ > レコード.
      10. [アクションの出力] ヘッダーで、 出力を編集 > 出力の作成 別のアクション出力を作成します。
      11. [ラベル] フィールドと [名前] フィールドに「record」と入力します。
      12. [タイプ] フィールドで、[動的オブジェクト (Dynamic Object)] を選択します。
      13. 詳細入力の切り替えアイコン (詳細入力の切り替えアイコン) をクリックして、[レコード] 出力の詳細オプションを表示します。
      14. [動的オプション] の [アクション] フィールドで、[ServiceNow オブジェクトスキーマを取得 (動的)] を選択します。
      15. テーブル入力を別の入力に依存させるには、[別の入力に依存 (Depends-On Another Input)] スライダーを切り替えてアクティブにします。
      16. [テーブル] フィールドで、[テーブル] を選択します。
      17. [アクションの出力] ヘッダーで、[編集モードの終了] をクリックします。
      18. [値] で、データピルピッカー (データピルピッカー) をクリックし、 スクリプトステップ > レコード.
    7. アクションヘッダーで [保存] をクリックし、[テスト] をクリックして、アクションをテストします
      1. テストアクション画面の [テーブル] 入力で、動的に生成された任意の選択値を選択します。
      2. [テストを実行] をクリックします。
      3. アクション実行の詳細を確認します。
        [レコード (Record)] のランタイム値が適切にフォーマットされた複合オブジェクトであり、 [レコード (Records)] のランタイム値が適切にフォーマットされた複合オブジェクトアレイである場合、アクションは正常に実行されます。
    8. アクションヘッダーで [公開] をクリックし、グローバルスコープ内のフローで Get ServiceNow Records (Dynamic) アクションを使用できるようにします。

    タスクの結果

    Get ServiceNow Records (Dynamic) のアクションを フローデザイナー のフローに追加できるようになりました。このサンプルアクションは、[レコード (Record)][レコード (Records)] の 2 つのアクション出力を動的に生成します。これらの出力は、データパネルでデータピルとしてアクセスできます。[テーブル] 入力の値が変更されると、データピルが動的に更新されます。フローで [ServiceNow レコードを取得 (動的)] サンプルアクションを使用します。