動的出力を開始するには
フローで使用するための動的出力をビルドするサンプルアクションを作成します。
始める前に
手順
-
動的出力の接続および認証情報レコードの作成
この接続および資格情報エイリアスから、データ収集アクションの REST ステップを構成するために必要なベース URL とユーザーアカウントが提供されます。
-
レコードスキーマを取得するためのデータ収集アクションの作成
このデータ収集アクションは、単一のレコードをレコード動的出力の JSON オブジェクトに変換します。
-
レコードスキーマのアレイを取得するためのデータ収集アクションの作成
このデータ収集アクションは、レコードリストをレコード動的出力用のオブジェクトの JSON アレイに変換します。
-
動的出力をテストするカスタムアクションの作成
このカスタムアクションは、2 つのタイプの動的出力データを示します。1 つの動的出力は、単一のレコードの 1 つのオブジェクトを生成します。別の動的出力は、レコードリストのオブジェクトのアレイを生成します。
動的出力の接続および認証情報レコードの作成
REST ステップがローカルインスタンスへの接続に使用するエイリアス、接続、および認証情報を作成します。
始める前に
必要なロール:admin
手順
- 移動先 すべて > 接続 & 認証情報 > 認証情報.
-
[新規] を選択し、[基本認証情報] を選択して、次のフィールド値を入力します。
- [名前]に「Local Admin」と入力します。
-
[ユーザー名]に、フローデザイナーおよび REST API へのアクセス権を持つユーザーアカウントを入力します。
たとえば、「admin」と入力します。
- [パスワード]に、アカウントのパスワードを入力します。
- [送信] を選択して認証情報レコードを作成します。
- 移動先 すべて > 接続 & 認証情報 > 接続と認証情報エイリアス.
-
[新規] を選択し、次のフィールドに値を入力します。
- [名前]に「Local Instance」と入力します。
- [接続タイプ] では HTTP のデフォルト値をそのまま使用します。
- [送信] を選択して、[接続および資格情報エイリアス] レコードを作成します。
-
作成したエイリアスを選択します。
たとえば、[ Local Instance]を選択します。
-
[接続] 関連リストから、[新規] を選択して次のフィールド値を入力します。
- [名前]に「My Instance」と入力します。
-
[認証情報] で、先ほど作成したベーシック認証情報レコードを選択します。
たとえば、[Local Admin] 認証情報を選択します。
-
[接続 URL] には、インスタンスのベース URL を、末尾に前方スラッシュをつけて入力します。
URL の先頭にはプリフィックスの「https://」、末尾にはスラッシュ文字を追加します。たとえば、https://example.service-now.com/ となります。
- [送信] を選択して、[HTTP(S) 接続] レコードを作成します。
レコードスキーマを取得するためのデータ収集アクションの作成
テーブルスキーマを検索して JSON オブジェクトに変換するためのデータ収集アクションを作成します。
始める前に
このタスクについて
- 選択したテーブルのテーブルスキーマデータを収集する REST ステップ。REST ステップの応答本文は JSON 形式です。
- REST ステップの JSON 応答本文を動的オブジェクトに変換するスクリプトステップ。動的オブジェクトは JSON の名前と値のペアで構成され、テーブルの各フィールドにエントリがあります。
- 動的出力を保存するための、タイプが JSON の
outputという名前の出力変数。
注:
このタスクでは、次の場合にインストールされるデモアクションが再作成されます。 の要求 統合ハブ プラグイン インスタンス用です。
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
[新規] を選択し、[新しいアクション] を選択します。
- アクションのプロパティ画面の [名前] フィールドに、「ServiceNow オブジェクトスキーマを取得 (動的)」と入力します。
- [送信] を選択します。
-
[アクションアウトライン] で、[入力] を選択します。
- [アクションの入力] ヘッダーで、[入力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[文字列] を選択します。
- 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
-
[アクションアウトライン] で、[入力] の下にある [新しいステップを追加] アイコン (
) を選択し、[REST ステップ] を選択します。
-
[REST ステップ] ヘッダーの下で、次のフィールドに入力します。
フィールド 値 接続 [接続エイリアスを使用] オプションを選択したままにします。 接続エイリアス 新規レコードを作成アイコン ( ) を選択して新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の認証情報では、ベーシック認証情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。接続および認証情報の詳細については、「接続の開始」および「認証情報の開始」を参照してください。
ビルド要求 [手動] オプションを選択したままにします。 リソースパス 「api/now/processflow/table/」と入力し、データピルピッカー ( ) を選択します。選択 入力 > テーブル. 次に、「/schema」と入力します。
HTTP メソッド 「GET」と入力します。 クエリパラメーター プラスアイコン ( ) を選択し、新しいクエリパラメーターを追加します。次に、[名前] フィールドに「get_choices」と入力し、[値] フィールドに「true」と入力します。
-
[アクションアウトライン] で、REST ステップの下にある新しいステップの追加アイコン (
) を選択し、[スクリプト] ステップを選択します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「payload」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 REST ステップ > 応答本文.
-
[スクリプト] フィールドに次のコードを入力します。
(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); - [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「スキーマ」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「output」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
- [アクションの出力] ヘッダーで、[編集モードを終了] を選択します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 スクリプトステップ > スキーマ.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- テストアクション画面の [テーブル] フィールドに「インシデント」と入力します。
- [テストを実行] をクリックします。
- アクション実行の詳細を確認します。
[フィールド]のランタイム値が次の簡略化された例に示すような形式の複合オブジェクトである場合、データ収集アクションは正常に実行されます。{ "data": { "type": "object", "children": [ { "name": "active", "label": "Active", "type": "boolean" }, { "name": "activity_due", "label": "Activity due", "type": "datetime" }, ... - アクションヘッダーで [公開] を選択し、グローバルスコープ内の他のフローやアクションで Get ServiceNow Object Schema (Dynamic) アクションを使用できるようにします。
レコードスキーマのアレイを取得するためのデータ収集アクションの作成
レコードリストからオブジェクトのアレイを生成するためのデータ収集アクションを作成します。
始める前に
このタスクについて
- 選択したテーブルのテーブルスキーマデータを収集する REST ステップ。REST ステップの応答本文は JSON 形式です。
- REST ステップの JSON 応答本文を動的オブジェクトに変換するスクリプトステップ。動的オブジェクトは、オブジェクトの JSON アレイで構成され、各ソースレコードはアレイの 1 つのオブジェクトに変換されます。
- 動的出力を保存するための、タイプが JSON の
outputという名前の出力変数。
注:
このタスクでは、次の場合にインストールされるデモアクションが再作成されます。 の要求 統合ハブ プラグイン インスタンス用です。
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
[新規] を選択し、[新しいアクション] を選択します。
- アクションのプロパティ画面の [名前] フィールドに、「ServiceNow Array.Object スキーマを取得 (動的)」と入力します。
- [送信] を選択します。
-
[アクションアウトライン] で、[入力] を選択します。
- [アクションの入力] ヘッダーで、[入力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[文字列] を選択します。
- 入力を必須にするには、[必須 (Mandatory)] スライダーを切り替えてアクティブにします。
-
[アクションアウトライン] で、[入力] の下にある新しいステップを追加アイコン (
) を選択し、[REST] ステップを選択します。
-
[REST ステップ] ヘッダーの下で、次のフィールドに入力します。
フィールド 値 接続 [接続エイリアスを使用] を選択したままにします。 接続エイリアス 新規レコードを作成アイコン ( ) を選択して新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の認証情報では、ベーシック認証情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。
ビルド要求 [手動] オプションを選択したままにします。 リソースパス 「api/now/processflow/table/」と入力し、データピルピッカー ( ) を選択します。選択 入力 > テーブル. 最後に、「/schema」と入力します。
HTTP メソッド 「GET」と入力します。 クエリパラメーター プラスアイコン ( ) を選択し、新しいクエリパラメーターを追加します。次に、[名前] フィールドに「get_choices」と入力し、[値] フィールドに「true」と入力します。
-
[アクションアウトライン] で、REST ステップの下にある [新しいステップの追加] アイコン (
) を選択し、[スクリプト] ステップを選択します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「payload」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 REST ステップ > 応答本文.
-
[スクリプト] フィールドに次のコードを入力します。
(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); - [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「スキーマ」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「出力」と入力します。
- [タイプ] フィールドで [JSON] を選択します。
- [Exit Edit Mode (編集モードを終了)] を選択します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 スクリプトステップ > スキーマ.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- テストアクション画面の [テーブル] フィールドに「incident」と入力します。
- [テストを実行] を選択します。
-
アクション実行の詳細を確認します。
次の簡略化された例に示すように、
[フィールド]出力のランタイム値が[ラベル]、[名前]、および[値]に対するキーと値のペアのアレイを含む複合オブジェクトである場合、データ収集アクションは正常に実行されます。{ "data": { "type": "array.object", "children": [ { "name": "active", "label": "Active", "type": "boolean" }, { "name": "activity_due", "label": "Activity due", "type": "datetime" }, ...
- アクションヘッダーで [公開] を選択し、グローバルスコープ内の他のアクションで Get ServiceNow Array.Object Schema (Dynamic) アクションを使用できるようにします。
動的出力をテストするカスタムアクションの作成
[テーブル] 入力の値が変更されると動的に更新される [レコード (Record)] と [レコード (Records)] の 2 つのアクション出力を動的に生成するサンプルアクションを作成します。
始める前に
このタスクについて
このカスタムアクションは、2 つのデータ収集アクションを使用して動的出力を入力します。
手順
-
メインヘッダーで、フロー、サブフロー、またはアクションの作成アイコン (
) をクリックし、[アクション] を選択します。
- アクションのプロパティモーダルの [名前] フィールドに、「ServiceNow レコードを取得 (動的)」と入力します。
- [送信] を選択します。
-
[アクションアウトライン] で、[入力] を選択します。
- [アクションの入力] ヘッダーで、[入力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[動的選択肢] を選択します。
- 入力を必須にするには、[必須] スライダーを切り替えてアクティブにします。
-
[詳細入力を切り替え] アイコン (
) を選択して、
[テーブル]入力の詳細オプションを表示します。 - [デフォルト値] フィールドに、「インシデント」と入力します。
- [動的オプション] の [アクション] フィールドで、[ServiceNow テーブルを取得 - 動的] を選択します。
- [入力の作成] を選択して、別のアクション入力を作成します。
- [ラベル] フィールドと [名前] フィールドに「NumberOfRecords」と入力します。
- [タイプ] フィールドで、[整数] を選択します。
- 入力を必須にするには、[必須] スライダーを切り替えてアクティブにします。
-
[詳細入力を切り替え] アイコン (
) を選択して、
[テーブル]入力の詳細オプションを表示します。 - [デフォルト値] フィールドに、「3」と入力します。
-
[アクションアウトライン] で、[入力] の下にある新しいステップを追加アイコン (
) を選択し、[REST] ステップを選択します。
-
[REST ステップ] ヘッダーの下で、次のフィールドに入力します。
フィールド 値 接続 [接続エイリアスを使用] を選択したままにします。 接続エイリアス 新規レコードを作成アイコン ( ) を選択して新しい HTTP(s) 接続を作成するか、インスタンスの既存の接続を使用します。HTTP(s) 接続の認証情報では、ベーシック認証情報を使用する必要があります。また、[接続 URL] は末尾に前方スラッシュが含まれるインスタンスのベース URL である必要があります。
ビルド要求 [手動] オプションを選択したままにします。 リソースパス 「api/now/table/」と入力し、データピルピッカー ( ) を選択します。選択 入力 > テーブル.
HTTP メソッド 「GET」と入力します。 クエリパラメーター プラスアイコン ( ) を選択し、新しいクエリパラメーターを追加します。次に、[名前] フィールドに「sysparm_limit」と入力します。[値] フィールドの横にあるデータピルピッカー (
) を選択し、 入力 > NumberOfRecords.
-
[アクションアウトライン] で、[入力] の下にある新しいステップを追加アイコン (
) を選択し、[スクリプト] ステップを選択します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「payload」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 REST ステップ > 応答本文.
-
[スクリプト] フィールドに次のコードを入力します。
(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); - [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「record」と入力します。
- [タイプ] フィールドで [JSON] を選択します。
- [必須] スライダーを切り替えてアクティブにします。
- [変数の作成] をクリックして、スクリプトステップの別の出力変数を作成します。
- [ラベル] フィールドと [名前] フィールドに「レコード」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
- 入力を必須にするには、[必須] スライダーを切り替えてアクティブにします。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「レコード」と入力します。
- [タイプ] フィールドで、[動的オブジェクト (Dynamic Object)] を選択します。
-
詳細入力を切り替えアイコン (
) をクリックして、
[レコード]出力の詳細オプションを表示します。 - [動的オプション] で、[ServiceNow Array.Object スキーマを取得 (動的)] を [アクション] として選択します。
- テーブル入力を別の入力に依存させるには、[別の入力に依存 (Depends-On Another Input)] スライダーを切り替えてアクティブにします。
- [テーブル] フィールドで、[テーブル] を選択します。
- [アクションの出力] ヘッダーで、[編集モードを終了] を選択します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 スクリプトステップ > レコード.
- [アクションの出力] ヘッダーで、 出力を編集 > 出力の作成 をクリックして、別のアクション出力を作成します。
- [ラベル] フィールドと [名前] フィールドに「record」と入力します。
- [タイプ] フィールドで、[動的オブジェクト (Dynamic Object)] を選択します。
-
詳細入力を切り替えアイコン (
) をクリックして、
[レコード]出力の詳細オプションを表示します。 - [動的オプション] の [アクション] フィールドで、[ServiceNow オブジェクトスキーマを取得 (動的)] を選択します。
- テーブル入力を別の入力に依存させるには、[別の入力に依存 (Depends-On Another Input)] スライダーを切り替えてアクティブにします。
- [テーブル] フィールドで、[テーブル] を選択します。
- [アクションの出力] ヘッダーで、[編集モードを終了] を選択します。
-
[ 値] で、データピルピッカー (
) を選択し、 スクリプトステップ > レコード.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- テストアクション画面の [テーブル] 入力で、動的に生成された任意の選択値を選択します。
- [テストを実行] を選択します。
-
アクション実行の詳細を確認します。
[レコード (Record)]のランタイム値が適切にフォーマットされた複合オブジェクトであり、[レコード (Records)]のランタイム値が適切にフォーマットされた複合オブジェクトアレイである場合、アクションは正常に実行されます。
- [アクション] ヘッダーで [公開] を選択し、グローバルスコープ内のフローで Get ServiceNow Records (Dynamic) アクションを使用できるようにします。
タスクの結果
Get ServiceNow Records (Dynamic) アクションをフローに追加できるようになりました。このサンプルアクションは、[レコード (Record)] と [レコード (Records)] の 2 つのアクション出力を動的に生成します。これらの出力は、データパネルでデータピルとしてアクセスできます。[テーブル] 入力の値が変更されると、データピルが動的に更新されます。