複合データのスクリプトサポート
スクリプトから複合データを作成して参照します。データストリーム、REST ステップ応答、または複数のレコードの検索ステップからソースデータが取得される場合は、スクリプトを使用します。
次のソースからデータを取得する場合は、スクリプトを使用して複合データを作成します。
| データソース | 複合データの作成/マッピング元 |
|---|---|
| データストリームアクション応答ストリーム | スクリプトパーサーステップ |
| REST ステップ応答 | スクリプトステップ |
| 「複数レコードのルックアップ」ステップ |
データストリームアクション応答ストリーム
データストリームアクションは、パーサースクリプトを使用して、ストリームアイテム値を複合オブジェクト値にマッピングします。パーサースクリプトを記述する場合は、データストリーム形式に適した JavaScript メソッドを使用してください。たとえば、JSON - スコープ付きクラスを使用して、JSON データストリームを解析またはエンコードします。
パーサースクリプトは、データストリームの入力オブジェクトと出力オブジェクト、および targetObject プロパティにアクセスできます。複合データを作成するための応答ストリームの解析の詳細については、「データストリームアクション」を参照してください。
REST ステップ応答
REST ステップ応答は、スクリプトステップで解析することによって 1 つ以上の複合オブジェクトに変換できます。スクリプトステップから応答にアクセスするには、入力スクリプト変数を作成し、それを前の REST ステップからの応答ペイロードにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「スクリプトステップ」を参照してください。
REST 応答値を複合オブジェクト値にマッピングするスクリプトを記述します。REST 応答スクリプトを記述する場合は、JSON parse() メソッドなどの応答形式に適した JavaScript メソッドを使用してください。
複合データから REST 要求を作成するためにスクリプトステップを使用する必要はありません。前のアクションまたはステップで複合データを生成し、それを REST ステップの文字列入力にマッピングすることができます。実行時に、アクションまたはフローは複合データを JSON 表現に変換します。
たとえば、動的入力を開始するには でデータ収集アクションに使用されるスクリプトステップを参照してください。テーブル名およびフィールド名を取得するためのデータ収集アクションは、どちらもスクリプトステップを使用して REST 応答を JSON オブジェクトに解析します。どちらのデータ収集アクションでも、複合データを JSON オブジェクトとして格納する出力変数が作成されます。
「レコードのルックアップ」ステップ
フローでは、For Each フローロジックを使用してレコードリストを処理できますが、アクションにはスクリプトステップが必要です。スクリプトステップにより、For Each フローロジックは For ループや While ループなどの JavaScript に置き換わります。
スクリプトステップからレコードデータにアクセスするには、入力スクリプト変数を作成し、それを前のルックアップステップからのレコードデータにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「スクリプトステップ」を参照してください。
ユーザーレコードリストを連絡先オブジェクトのアレイに変換するアクションの例については、「レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成」を参照してください。
ドット連結オブジェクト構造
構造のパスをドット連結することで、オブジェクトの構造から要素を参照することができます。複合データパスはすべてデータソースの名前で始まります。これは、入力のグローバルオブジェクト、出力のグローバルオブジェクト、またはスクリプトで作成したアレイまたはオブジェクトの名前です。
パスの次は、ピリオド文字 (ドットとも呼ばれます) で区切られた、参照される各構造要素の名前です。構造要素の名前をリストすることは、テーブル構造を特定の参照フィールドにリストする参照フィールドをドット連結することと同じです。
たとえば、連絡先オブジェクトを出力変数として定義するとします。オブジェクトの構造は次のとおりです。
| 構造内での場所 | ラベル | 名前 | タイプ |
|---|---|---|---|
| 親 | 連絡先 | contact | オブジェクト |
| 子 | 名 | first_name | 文字列 |
| 子 | 姓 | last_name | 文字列 |
| 子 | メールアドレス | email_addresses | Array.Object |
| 孫 | メールアドレス | email_address | オブジェクト |
| 曾孫 | タイプ | type | 選択肢 |
| 曾孫 | メール | 文字列 | |
| 子 | 電話 | telephone_number | Array.Object |
| 子 | 郵送先 | mailing_address | Array.Object |
[名] 構造要素へのドット連結パスは outputs.contact.first_name になり、[メール] 構造要素へのパスは outputs.contact.email_addresses[0].email になります。これは、アレイの個々の要素をその JavaScript インデックス値で指定する必要があるためです。
一般的なガイドライン
複合データを使用してスクリプトを作成する場合は、次の一般的なガイドラインを念頭に置いてください。
- 文字列入力を使用して複合データを JSON 文字列に変換する
- 複合データを文字列入力にマッピングすると、ワークフロースタジオ によって自動的に JSON 文字列に変換されます。スクリプトを記述する代わりに、文字列入力を REST ステップに追加し、前のアクションまたはステップからの複合データにマッピングすることができます。
- オブジェクトをテンプレートとして保存する
- オブジェクトをテンプレートとして保存して、他のアクション、フロー、およびスクリプトステップで再利用できるようにします。
- 以前のデータにアクセスするためのスクリプト入力変数を作成する
- アクション入力または前のステップからアクセスするデータのスクリプト入力変数を作成します。スクリプト入力変数を入力またはステップデータピルにマッピングします。たとえば、スクリプト入力変数を、前のステップで検索したユーザーレコードリストにマッピングします。
- 複合データを格納するスクリプト出力変数を作成する
- スクリプトで作成した任意の複合データを格納するスクリプト出力変数を作成します。スクリプト出力変数は、スクリプトで定義された値と一致する必要があります。たとえば、複数の連絡先オブジェクトを格納するオブジェクトの連絡先アレイを作成します。連絡先オブジェクトをテンプレートとして保存し、再利用できるようにします。
- アクション出力をスクリプト出力変数にマッピングする
- カスタムアクションで複合データを出力する場合は、アクション出力を追加し、スクリプトステップ出力変数のデータピルにマッピングします。たとえば、連絡先アレイを作成し、前に保存した連絡先オブジェクトテンプレートをロードします。アクション出力を、スクリプトステップによって生成された連絡先アレイにマッピングします。