データストリームアクションの作成
フロー内の応答データのストリームを処理する再利用可能なアクションを作成します。
始める前に
- Guided Application Creator でアプリケーションを設定して フローデザイナー コンテンツを保存します。
- アクションを作成する前に、競合するビジネスルールまたはワークフローを無効にします。
- 必要なロール:action_designer または admin
このタスクについて
カスタム アプリケーションを作成して フローデザイナー のコンテンツを格納することで、アプリケーションリポジトリまたは ServiceNow Store を使用してコンテンツを展開することができます。
手順
- 移動先 すべて > フローデザイナー > デザイナー.
- [アクション] タブをクリックし、[データストリーム] を選択します。
-
アクションのプロパティを入力し、[送信] をクリックします。
フィールド 説明 名前 アクションの名前。 アクセス可能 スコープ対象のすべてのアプリケーションから、または指定したアプリケーション スコープ内のみから、アクセス可能です。 カテゴリ アクションのアプリケーション スコープ内で定義されたカテゴリ。 説明 アクションの説明。 保護 アクションを読み取り専用にするかどうかを選択します。自分が所有するアプリケーションスコープにアクションがある場合にのみ、値を選択できます。デフォルト値は「なし」です。 アプリケーション アクションのアプリケーション スコープ。 インフロー注釈 フローデザイナー でアクションのタイトルの下に表示されるテキスト。フロー設計者はこれを利用して、アクションがフロー内で使用されるときに何を実行するのかを理解できます。
空の アクションが開きます。 -
アクション ステップでデータを利用できるように、アクションの入力を定義します。
-
[+ 入力の作成] を選択し、フィールドに入力します。
入力は右側のペインにデータ ピルとして表示されます。
アクションの入力の詳細については、次を参照してください。 アクションデザイナー - カスタムアクションの構築. -
[+ 入力の作成] を選択し、フィールドに入力します。
-
アウトラインの [アクション前処理] をクリックし、必要なオプションを設定します。
-
[接続情報を取得 (Retrieve connection info)] を選択し、アクション前処理の最初のステップとして「接続情報の取得」ステップを追加します。
「接続情報の取得」ステップを使用すると、アクションで使用する接続と資格情報の詳細を取得できるようになります。詳細については、「Get Connection Info step」を参照してください。
-
[前処理スクリプトを有効化] を選択して次のことを実行します:
重要:
-
[接続情報を取得 (Retrieve connection info)] を選択し、アクション前処理の最初のステップとして「接続情報の取得」ステップを追加します。
-
アウトラインの [要求] をクリックし、必要なオプションを設定します。
-
[データの取得方法] フィールドで [REST ステップ]、[SOAP ステップ]、または [JDBC ステップ] を選択し、関連するステップをアクションに追加します。
詳細については、「REST ステップ」、「SOAP ステップ」、「JDBC ステップ 」を参照してください。
このセクションは、MID サーバー またはインスタンスのいずれかで実行できます。環境は、関連する接続 [sys_connection] レコードの [MID Server を使用] フィールドによって決定されます。
注:- JDBC ステップを使用している場合は、それをテストする必要があります。正常に実行されると、その結果を使用してステップ出力とデータストリームアクション出力を作成できます。
- REST ステップまたは SOAP ステップを使用している場合は、データストリームアクション出力を手動で作成する必要があります。
-
[ページネーションを有効化] を選択して次のことを要求します:。このオプションは、 アウトラインにページネーションのセットアップステップを追加します。
注:JDBC ステップの場合、ページネーションは適用されません。各ページは最大 1 GB のデータを取得でき、1 つの要求は最大 8 GB のデータを取得できます。
-
ページネーションされた API を呼び出すときに次のページのすべての要求の前にスクリプトを実行するには、[各要求の前にスクリプトを実行] を選択します。
たとえば、次のページの要求を送信する前に、最初の応答から変数データタイプを変換するスクリプトを作成します。注:JDBC ステップの場合、これは適用されません。重要:
-
[データの取得方法] フィールドで [REST ステップ]、[SOAP ステップ]、または [JDBC ステップ] を選択し、関連するステップをアクションに追加します。
- オプション:
ページネーションが有効になっている場合は、ページネーションのセットアップ手順を設定します。
ページネーションのセットアップ手順を手動で構成するか、構築済みのテンプレートを選択して一般的な構成を適用します。
-
ページネーション変数を作成します。
たとえば、サードパーティ API が要求で
limitパラメーターを受け取る場合は、limit変数を作成し、初期値を設定してページあたりの結果数を制限します。初期値は最初の要求でのみ使用されます。getNextPageは予約済みの読み取り専用変数です。 -
[次の値取得元] フィールドで、ページネーション変数が後続の要求の値を受け取る方法を定義します。
以下から選択します。
- [スクリプト]:ページネーション変数スクリプトを記述して、変数の入力方法を定義します。
- [応答本文]:前の要求からの応答の値を使用して変数を設定します。応答が JSON 形式の場合は、[値の抽出に使用] を JSONPath Expression に設定し、[式] フィールドに値へのパスを指定します。応答が XML 形式の場合は、[値の抽出に使用] を XPath Expression に設定し、値へのパスを指定します。
この例では、getNextPage変数は、nextOffset変数が API 応答ヘッダーに返される合計数の値に達するまで true です。 この例には、一般的な制限/オフセットページネーション構成が含まれています。 アクションがやり取りするサードパーティ API は、ページトークンまたはその他のメソッドを使用する場合があります。ページネーションスクリプトでは、
pageResponseオブジェクトにresponse_headers、response_body、およびステータスコードが含まれています。重要: -
ページネーション変数を作成します。
-
アウトラインの [解析] をクリックし、必要なオプションを設定します。 注:JDBC ステップの場合、これは適用されません。
- [各レコードを識別する方法] フィールドで [JSON/XML スプリッター] を選択し、Splitter ステップをアウトラインに追加します。
- [各アイテムをオブジェクトに解析する方法 (How will you parse each item into an object)] フィールドで [スクリプトパーサー] を選択し、スクリプトパーサーステップをアウトラインに追加します。
-
スプリッターステップを設定します。
このステップでは、次のことを特定します:
注:JDBC ステップの場合、これは適用されません。-
[ソース形式] フィールドで、[要求] セクションから返される形式を選択します。
-
[アイテムパス] フィールドで、オブジェクトにマッピングするデータストリーム内のアイテムへの絶対パスを定義します。
- JSON
- オブジェクトのアレイへの絶対パスを JSONPath 式として識別します。たとえば、JSON の
resultアレイ内の各アイテムをresultオブジェクトに分割するには、$ .resultを使用します。注:JSON データストリームのルートノードでアレイを選択すると、実行の詳細とエラーメッセージに絶対パスが$.*として表示されます。 - XML
- 繰り返しデータオブジェクトへの絶対パスを XPath 式として識別します。たとえば、
resultXML 要素の各インスタンスをresultオブジェクトに分割するには、/resultを使用します。注:スプリッターステップは、XML 名前空間を無視します。
たとえば、REST ステップが JSON データのストリームを返すとします。アイテムパス$.response.result.companiesは、companiesアレイの各アイテムを返し ます 。{ "response": { "result": { "companies": [ { "name": "company1" }, { "name": "company2" }, { "name": "company3" } ], "metadata": { "token": 1558666526 } } } }たとえば、REST ステップが XML データのストリームを返すとします。アイテムパス/response/result/companies/companyは、XML データから各company要素を返します。<response> <result> <companies> <company> <!-- company 1 info --> </company> <company> <!-- company 2 info --> </company> <company> <!-- company 3 info --> </company> <company> <!-- company 4 info --> </company> <batch>10645C53D4BED73YQ</batch> </companies> <metadata> <timestamp>1558666526</timestamp> </metadata> </result> </response>
-
[ソース形式] フィールドで、[要求] セクションから返される形式を選択します。
-
スクリプトパーサーステップで JavaScript と ServiceNow API を使用して、応答ストリームのアイテムを、
targetObjectグローバルオブジェクトによって表される複合オブジェクト出力にマッピングします。たとえば、スプリッターステップで識別されたインシデントレコード要素を、インシデントフィールドを含む複合オブジェクトにマッピングします。データストリームに、複合オブジェクトへマッピングしないスプリッターステップで識別されたアイテムの兄弟アイテムが含まれる場合は、それらのアイテムを除外する条件を含めます。
注:JDBC ステップの場合、これは適用されません。fd_data オブジェクトを使用して、データストリームアクションの前のステップの出力にアクセスできます。ただし、次のものは除きます。- REST または SOAP ステップの応答本文、ストリーム、またはエラーメッセージの出力。
- セパレーターステップ出力。
JSON 応答を解析するスクリプト例。(function parse(inputs, outputs) { var record = JSON.parse(inputs.sourceItem); outputs.targetObject.id=record.number; outputs.targetObject.name=record.short_description; })(inputs, outputs)XML 応答を解析するスクリプト例。(function parse(inputs, outputs) { var xmlDoc = new XMLDocument(inputs.sourceItem, false); outputs.targetObject.id = xmlDoc.getNodeText("/result/number"); outputs.targetObject.name = xmlDoc.getNodeText("/result/short_description"); })(inputs, outputs) - オプション:
ユーザーが JDBC ステップを選択した場合は、[Transform] をクリックします。
JDBC ステップを正常にテストした後、[結果の使用] をクリックして、ステップ出力とデータストリームアクション出力を作成します。この結果を使用することも、変換スクリプトを使用してカスタマイズすることもできます。
- デフォルトのデータストリーム出力を変換およびカスタマイズするには、[変換スクリプトを有効にする] チェックボックスをオンにします。
-
複雑なオブジェクト出力を作成します。
注:JDBC ステップの場合、これは適用されません。
- [アクションのアウトライン] で [出力] を選択し、[+] をクリックして出力を作成します。
-
[ラベル] フィールドを更新して、オブジェクトを表します。
たとえば、アクションが会社レコードのストリームを解析する場合は、 会社ラベルを追加します。
-
[タイプ] フィールドを [Object] に更新します。
これは、スクリプトパーサーステップの
targetObjectグローバルオブジェクトによって表される複合オブジェクト出力です。 - [+] アイコンを使用して複合オブジェクトに子フィールドを追加します。
-
スクリプト内で意味のある参照ができるように、それぞれの子フィールドの名前を分かりやすくします。
[名前] フィールドの値は、スクリプトパーサーステップで使用される内部名です。たとえば、スクリプトパーサーステップで市の出力を参照するには、
outputs.targetObject.cityを使用します。警告:アクションを保存した後は、[名前] フィールドの値を変更できません。
-
[保存] をクリックします。
アクションデザイナー によってアクションのドラフトが保存されます。