動的入力を開始するには
フローで使用可能なすべてのタイプの動的入力を使用する方法を示すアクションのサンプルを作成します。
始める前に
手順
-
インスタンスの認証情報レコードと接続レコードの作成。
この接続および資格情報エイリアスから、データ収集アクションの REST ステップを構成するために必要なベース URL とユーザーアカウントが提供されます。
-
テーブル名を取得するためのデータ収集アクションの作成。
このデータ収集アクションにより、動的選択肢入力の JSON データが得られます。
-
フィールド名を取得するためのデータ収集アクションの作成。
このデータ収集アクションにより、動的テンプレート入力の JSON データが得られます。
-
動的入力を追加するためのデータ収集アクションの作成。
このデータ収集アクションにより、任意の動的入力を作成するための JSON データが得られます。
-
動的入力をテストするカスタムアクションの作成。
このカスタムアクションにより、さまざまなタイプの動的入力が示されます。
インスタンスの認証情報レコードと接続レコードの作成
ローカルインスタンスへの接続に必要なエイリアス、接続、および資格情報を作成します。
始める前に
必要なロール: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) 接続] レコードを作成します。
タスクの結果
REST ステップを構成するときに、「Local Instance」というエイリアスを使用してローカルインスタンスに接続できます。
テーブル名を取得するためのデータ収集アクションの作成
テーブル API からテーブル名のリストを取得する、カスタムのデータ収集アクションを作成します。
始める前に
必要なロール:action_designer または admin
このタスクについて
- REST Table API からテーブル名を収集する REST ステップ
- REST ステップの応答本文から JSON ペイロードを作成するスクリプトステップ
- テーブル名と値のペアを JSON ドキュメントとして格納する、output という名前のアクション出力変数
このカスタムアクションは、REST API コールを使用して、ServiceNow コアの「レコードのルックアップ」アクションおよび「複数レコードのルックアップ」アクションの機能を複製します。一般的には、カスタムアクションを作成しなくても基本的なレコード操作は実行できます。このアクションは、REST ステップとスクリプトステップを操作して動的入力のテーブルデータを収集する方法を示しています。
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
選択 新規作成 > アクション.
- [アクションプロパティ] 画面の [アクション名] フィールドに、「Data Gathering Action for Tables」と入力します。
- [アプリケーション] で、[グローバル] を選択します。
- [送信] を選択します。
-
[アクションアウトライン] の [入力] セクションの下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [REST] ステップを選択し、次のフィールド値を入力します。
入力 値 接続 [接続エイリアスを使用] を選択したままにします。 接続エイリアス 以前に作成したエイリアスを選択するか、[新しいレコードを作成] アイコン ( ) を選択して、HTTP(S) 接続を作成します。
ビルド要求 [手動] オプションを選択したままにします。 リソースパス 「api/now/doc/table/schema」と入力します。 HTTP メソッド 「GET」と入力します。 -
[アクションアウトライン] で、REST ステップの下にある [新しいステップを追加] アイコン (
) をクリックし、[スクリプト] ステップを選択します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「payload」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 REST ステップ > 応答本文.
-
[スクリプト] フィールドに次のコードを入力します。
(function execute(inputs, outputs) { var payload = JSON.parse(inputs.payload); var tables = payload.result // Get the value of the result array .filter(function(table) { return table.value.indexOf('_') < 0; }) // Filter the tables we want .map(function(table) { return { label: table.label, name: table.value }; // Set values for label and name }); outputs.tables = { data: tables }; // Final, properly formatted output })(inputs, outputs);REST API から、image、reference、rawLabel、selected、label、missing、used、および value のプロパティを含む各テーブルを説明する JSON 形式の文字列が返されます。label プロパティと value プロパティからは、動的選択肢に必要な値が得られます。動的選択肢では、各選択肢オプションにラベルと名前が必要です。このスクリプトでは、value プロパティを name プロパティにマッピングします。
- [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「tables」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [出力の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「output」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
- [Exit Edit Mode (編集モードを終了)] を選択します。
-
[ 値] の横にあるデータピルピッカー (
) を選択し、 スクリプトステップ > テーブル.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- [テストを実行] を選択します。
-
アクションの実行の詳細が表示されます。
次の簡略化された例に示すように、
[テーブル]のランタイム値が[ラベル]と[名前]に対するキーと値のペアのアレイを含む複合オブジェクトである場合、データ収集アクションは正常に実行されます。{ "data": [ { "name": "evaluation", "label": "A/B Testing Evaluation" }, { "name": "sla", "label": "Agreement" }, { "name": "announcement", "label": "Announcement" }, { "name": "cmdb", "label": "Base Configuration Item" }, { "name": "checklist", "label": "Checklist" }, { "name": "collaborator", "label": "Collaborator" }, { "name": "conflict", "label": "Conflict" }, { "name": "clone", "label": "Database Clone" }, { "name": "dsl", "label": "DML" }, { "name": "global", "label": "Global" }, { "name": "goal", "label": "Goal" }, { "name": "incident", "label": "Incident" }, { "name": "interaction", "label": "Interaction" }, { "name": "map", "label": "Map" }, { "name": "ola", "label": "OLA" }, { "name": "problem", "label": "Problem" }, { "name": "question", "label": "Question" }, { "name": "reminder", "label": "Reminder" }, { "name": "instance", "label": "ServiceNow Instance" }, { "name": "label", "label": "Tag" }, { "name": "task", "label": "Task" }, { "name": "taxonomy", "label": "Taxonomy" }, { "name": "ticket", "label": "Ticket" }, { "name": "topic", "label": "Topic" }, { "name": "expert", "label": "Wizard" } ] }
- アクションヘッダーで [公開] を選択し、グローバルスコープ内の他のフローやアクションでこのアクションを使用できるようにします。
フィールド名を取得するためのデータ収集アクションの作成
テーブルからフィールドのリストを取得するデータ収集アクションを作成します。
始める前に
必要なロール:action_designer または admin
このタスクについて
- REST Table API からフィールドを収集する REST ステップ
- REST ステップの応答本文から JSON ペイロードを作成するスクリプトステップ
- フィールド名と値のペアを JSON ドキュメントとして格納する、output という名前のアクション出力変数
このカスタムアクションは、REST API コールを使用して、ServiceNow コアの「レコードのルックアップ」アクションおよび「複数レコードのルックアップ」アクションの機能を複製します。一般的には、カスタムアクションを作成しなくても基本的なレコード操作は実行できます。このアクションは、REST ステップとスクリプトステップを操作して動的入力のフィールドデータを収集する方法を示しています。
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
選択 新規作成 > アクション.
- [アクションプロパティ] 画面の [アクション名] フィールドに、「Data Gathering Action for Fields」と入力します。
- [アプリケーション] で、[グローバル] を選択します。
- [送信] を選択します。
-
[アクションアウトライン] から、[入力] を選択します。
- [アクションの入力] ヘッダーで、[入力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[文字列] を選択します。
- [必須 (Mandatory)] スライダーを切り替えてアクティブにします。
- [詳細入力を切り替え] アイコンを選択すると、詳細入力が表示されます。
- [デフォルト値] フィールドに「incident」と入力します。
-
[アクションアウトライン] の REST ステップの下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [スクリプト] ステップを選択し、次のフィールド値を入力します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「table」と入力します。
-
[ 値] の横にあるデータピルピッカー (
) を選択し、 アクション > テーブル.
-
[スクリプト] フィールドに次のコードを入力します。
(function execute(inputs, outputs) { if(!inputs.table || inputs.table === "-- None --") { // check for empty or no table outputs.table = "incident"; // set default table to incident } else { outputs.table = inputs.table; // use input value provided } })(inputs, outputs);このスクリプトによって、REST ステップに常にテーブル名が含まれるようになります。
- [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「table」と入力します。
- [タイプ] フィールドで、[文字列] を選択します。
-
[アクションアウトライン] の [入力] セクションの下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [REST] ステップを選択し、次のフィールド値を入力します。
入力 値 接続 [接続エイリアスを使用] を選択したままにします。 接続エイリアス 以前に作成したエイリアスを選択するか、[新しいレコードを作成] アイコン ( ) を選択して、HTTP(S) 接続を作成します。
ビルド要求 [手動] オプションを選択したままにします。 リソースパス 「api/now/table/」と入力し、データピルピッカー ( ) を選択します。選択 スクリプトステップ > テーブル.
HTTP メソッド 「GET」と入力します。 クエリパラメーター このクエリパラメーターを追加すると、REST API がレコードを 1 つだけ返すようになります。 - 名前:sysparm_limit
- 値:1
-
[アクションアウトライン] の REST ステップの下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [スクリプト] ステップを選択し、次のフィールド値を入力します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「payload」と入力します。
-
[ 値] の横にあるデータピルピッカー (
) を選択し、 REST ステップ > 応答本文.
-
[スクリプト] フィールドに次のコードを入力します。
(function execute(inputs, outputs) { var payload = JSON.parse(inputs.payload); var fields = Object.keys(payload.result[0]) // Get first record of array .map(function(property) { return { label: property.charAt(0).toUpperCase() + property.slice(1).replace(/_/g, ' '), // Create label from field name name: property, // Set name to field name value: '' // Set value to empty so that dynamic template can set value }; }); outputs.fields = { data: fields }; // final properly formatted output })(inputs, outputs);REST API から、各フィールドを名前と値のペアのセットとして説明する JSON 形式の文字列が返されます。名前はフィールド名で、値はフィールド値です。動的テンプレートで必要なのはフィールド名とラベルのみです。テンプレート値で設定できるように、フィールド値は空白にする必要があります。ラベルプロパティは、フィールド名の最初の文字を大文字にし、アンダースコアをスペースに置き換えることで計算されます。
- [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「fields」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「output」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
- [Exit Edit Mode (編集モードを終了)] を選択します。
-
[値] フィールドの横にあるデータピルピッカー (
) を選択し、 スクリプトステップ > フィールド.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- テストアクション画面の [テーブル] フィールドに「incident」と入力します。
- [テストを実行] を選択します。
-
アクションの実行の詳細が表示されます。
次の簡略化された例に示すように、[出力] のランタイム値が
[ラベル]と[名前]、および[値]に対するキーと値のペアのアレイを含む複合オブジェクトである場合、データ収集アクションは正常に実行されます。{ "data": [ { "name": "parent", "label": "Parent", "value": "" }, { "name": "made_sla", "label": "Made sla", "value": "" }, { "name": "caused_by", "label": "Caused by", "value": "" }, { "name": "watch_list", "label": "Watch list", "value": "" }, { "name": "upon_reject", "label": "Upon reject", "value": "" }, { "name": "sys_updated_on", "label": "Sys updated on", "value": "" }, { "name": "...", "label": "...", "value": "" }, { "name": "category", "label": "Category", "value": "" } ] }
- アクションヘッダーで [公開] をクリックすると、グローバルスコープ内の他のアクションでこのアクションを使用できるようになります。
動的入力を追加するためのデータ収集アクションの作成
参照タイプの動的入力を追加するためのデータ収集アクションを作成します。
始める前に
必要なロール:action_designer または admin
このタスクについて
- テーブル名を格納するアクション入力変数
- 2 つの動的入力を JSON オブジェクトとして作成するスクリプトステップ
- 動的入力を格納する output という名前のアクション出力変数
このカスタムアクションは、参照タイプ入力を使用して、ServiceNow コアの「レコードのルックアップ」アクションおよび「複数レコードのルックアップ」アクションの機能を複製します。通常は、カスタムアクションを作成しなくても基本的なレコード操作は実行できます。このアクションは、スクリプトステップを操作して動的入力のフィールドデータを収集する方法を示しています。
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
選択 新規作成 > アクション.
- [アクションプロパティ] 画面の [アクション名] フィールドに、「Data Gathering Action for Dynamic Inputs」と入力します。
- [アプリケーション] で、[グローバル] を選択します。
- [送信] を選択します。
-
[アクションアウトライン] から、[入力] を選択します。
- [アクションの入力] ヘッダーで、[入力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[文字列] を選択します。
-
[詳細入力を切り替え] アイコン (
) を選択します。
- [デフォルト値] フィールドに、「sys_user」と入力します。
-
[アクションアウトライン] の [入力] の下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [スクリプト] ステップを選択し、次のフィールド値を入力します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「table」と入力します。
-
[ 値] の横にあるデータピルピッカー (
) を選択し、 入力 > テーブル.
-
[スクリプト] フィールドに次のコードを入力します。
(function execute(inputs, outputs) { // Define JSON for desired dynamic input type outputs.data = { data: [{ label: 'Reference type input', name: 'referencetype', reference: inputs.table, type: 'reference', }] } })(inputs, outputs);動的入力には、タイプごとに独自の JSON 構造があります。参照フィールドの動的入力には、次のプロパティが必要です。- label
- 入力の横に表示するテキスト。たとえば、「Reference field input」などです。
- name
- 動的入力を識別して値を格納するために使用する、動的入力の内部名。たとえば、referencetype などです。
- reference
- 参照フィールドのターゲットテーブル名。たとえば、sys_user などです。このスクリプトでは、テーブル名は変数です。
- type
- 動的入力のデータ型。たとえば、reference などです。type プロパティによって、ワークフロースタジオ で入力がどのように表示されるか、また入力を構成するために必要なその他のプロパティが決まります。
- [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「data」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「output」と入力します。
- [タイプ] フィールドで、[JSON] を選択します。
- [Exit Edit Mode (編集モードを終了)] を選択します。
-
[値] フィールドの横にあるデータピルピッカー (
) を選択し、 スクリプトステップ > データ.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
- [テストを実行] を選択します。
-
アクションの実行の詳細が表示されます。
データ収集アクションが正常に実行された場合、次の例に示すように、output のランタイム値は JSON 文字列になります。
{ "data": [ { "reference": "sys_user", "name": "referencetype", "label": "Reference type input", "type": "reference" } ] }
- アクションヘッダーで [公開] を選択し、グローバルスコープ内の他のアクションでこのアクションを使用できるようにします。
動的入力をテストするカスタムアクションの作成
動的入力をテストするカスタムアクションを作成します。
始める前に
このタスクについて
このヘルパーアクションでは、REST ステップからのデータ収集を説明するため、「レコードの作成」ステップの機能について改めて説明します。一般的に、サードパーティのシステムおよびデータへの統合には動的入力を使用します。
- テーブルを選択するための動的選択肢タイプの入力
- フィールド値を選択および設定するための動的テンプレートタイプの入力
- GlideRecord - Globalからレコードを作成するためのスクリプトステップ
- 作成されたレコードの sys_id を格納する output という名前のアクション出力変数
手順
- 移動先 すべて > プロセス自動化 > ワークフロースタジオ.
- ホームページで、 [アクション] を選択します。
-
選択 新規作成 > アクション.
- [アクションプロパティ] 画面の [アクション名] フィールドに、「Create Record from Dynamic Inputs」と入力します。
- [アプリケーション] で、[グローバル] を選択します。
- [送信] を選択します。
-
[アクションアウトライン] で、[入力] を選択します。
- [入力の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「Table」と入力します。
- [タイプ] フィールドで、[動的選択肢] を選択します。
- [必須] 切り替えスイッチをオンにします。
- [デフォルト値] フィールドに「incident」と入力します。
- [選択肢] ではデフォルト値をそのまま使用します。
- [動的オプション] の [アクション] フィールドで、[テーブルのデータ収集アクション (Data Gathering Action for Fields)] を選択します。
- [入力の作成] を選択して、別のアクション入力を作成します。
- [ラベル] フィールドと [名前] フィールドに「Fields」と入力します。
- [タイプ] フィールドで、[動的テンプレート (Dynamic Template)] を選択します。
- [必須] 切り替えスイッチをオンにします。
- [動的オプション] の [アクション] フィールドで、[フィールドのデータ収集アクション(Data Gathering Action for Fields)] を選択します。
- [テーブル] フィールドの横にある [別の入力に依存] トグルスイッチをオンにします。
- [テーブル] フィールドで、[テーブル] 入力を選択します。
- [入力の作成] を選択して、別のアクション入力を作成します。
- [ラベル] フィールドと [名前] フィールドに「Dynamic Input」と入力します。
- [タイプ] フィールドで、[動的入力] を選択します。
- [動的オプション] の [アクション] フィールドで、[動的入力のデータ収集アクション (Data Gathering Action for Dynamic Inputs)] を選択します。
- データ収集アクションで提示される sys_user のデフォルト値を使用するには、[テーブル] フィールドを空白のままにします。
-
[アクションアウトライン] の [入力] セクションの下で、[新しいステップを追加] アイコン (
) を選択します。
-
[統合] セクションで [スクリプト] ステップを選択し、次のフィールド値を入力します。
- [入力変数] セクションで [変数の作成] を選択します。
- [名前] フィールドに「table」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 入力 > テーブル.
- [変数の作成] を選択して、別の入力変数を作成します。
- [名前] フィールドに「fields」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 入力 > フィールド.
- [変数の作成] を選択して、別の入力変数を作成します。
- [名前] フィールドに「payload」と入力します。
-
[ 値 ] フィールドの横で、データピルピッカー (
) を選択し、 入力 > 動的入力.
-
[スクリプト] フィールドに次のコードを入力します。
(function execute(inputs, outputs) { var payload = inputs.payload.referencetype; // match name from data gathering action var obj = JSON.parse(payload); var user = obj.value; var gr = new GlideRecord(inputs.table); // dynamic choice input gr.applyEncodedQuery(inputs.fields); // dynamic template input gr.applyEncodedQuery("caller_id=" + user); // dynamic inputs reference field gr.insert(); outputs.record = gr; })(inputs, outputs); - [出力変数] セクションで [変数の作成] を選択します。
- [ラベル] フィールドと [名前] フィールドに「record」と入力します。
- [タイプ] フィールドで [ドキュメント ID] を選択します。
-
[アクションアウトライン] で、[出力] を選択します。
- [アクションの出力] ヘッダーで、[出力の作成] をクリックします。
- [ラベル] フィールドと [名前] フィールドに「Record Created」と入力します。
- [タイプ] フィールドで [ドキュメント ID] を選択します。
- [Exit Edit Mode (編集モードを終了)] を選択します。
-
[値] フィールドの横にあるデータピルピッカー (
) を選択し、 スクリプトステップ > レコード.
-
アクションヘッダーで [保存] を選択し、[テスト] を選択して、アクションをテストします。
-
テストアクション画面の [テーブル] 入力で、動的に生成されたテーブルの選択肢を任意に選択します。
たとえば、インシデントテーブルを選択します。
-
[フィールド値を追加] を選択し、任意のフィールドを選択して任意の値を入力します。
たとえば、[簡単な説明] フィールドを選択し、値「test」を入力します。
-
[動的入力] セクションと [参照タイプ入力(Reference type input)] フィールドで、参照フィールド値を選択します。
たとえば、「Abel Tuter」というユーザーを選択します。
-
[テストを実行] を選択します。
注:テーブル API から作成したレコードは、通常はレコードの作成に関連するデータポリシーと必須フィールドをバイパスします。このアクションは、解説のみを目的としています。標準的な保護および検証を行ってレコードを作成するには、代わりに「レコードの作成」ステップを使用してください。
-
アクションの実行の詳細が表示されます。
[作成されたレコード] 出力を使用すると、
[テーブル]と[フィールド]のランタイム値が入力したテスト値に一致することを確認できます。
-
テストアクション画面の [テーブル] 入力で、動的に生成されたテーブルの選択肢を任意に選択します。
- アクションヘッダーで [公開] を選択し、グローバルスコープ内の他のアクションでこのアクションを使用できるようにします。