複合データのスクリプトサポート

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む6読むのに数分
  • スクリプトから複合データを作成して参照します。データストリーム、REST ステップ応答、または複数のレコードの検索ステップからソースデータが取得される場合は、スクリプトを使用します。

    次のソースからデータを取得する場合は、スクリプトを使用して複合データを作成します。

    表 : 1. スクリプトを必要とするデータソース
    データソース 複合データの作成/マッピング元
    データストリームアクション応答ストリーム スクリプトパーサーステップ
    REST ステップ応答 スクリプトステップ
    「複数レコードのルックアップ」ステップ

    データストリームアクション応答ストリーム

    データストリームアクションは、パーサースクリプトを使用して、ストリームアイテム値を複合オブジェクト値にマッピングします。パーサースクリプトを記述する場合は、データストリーム形式に適した JavaScript メソッドを使用してください。たとえば、JSON - スコープ付きクラスを使用して、JSON データストリームを解析またはエンコードします。

    パーサースクリプトは、データストリームの入力オブジェクトと出力オブジェクト、および targetObject プロパティにアクセスできます。複合データを作成するための応答ストリームの解析の詳細については、「データストリームアクション」を参照してください。

    REST ステップ応答

    REST ステップ応答は、スクリプトステップで解析することによって 1 つ以上の複合オブジェクトに変換できます。スクリプトステップから応答にアクセスするには、入力スクリプト変数を作成し、それを前の REST ステップからの応答ペイロードにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「スクリプトステップ」を参照してください。

    REST 応答値を複合オブジェクト値にマッピングするスクリプトを記述します。REST 応答スクリプトを記述する場合は、JSON parse() メソッドなどの応答形式に適した JavaScript メソッドを使用してください。

    注:
    複合データを文字列入力のソースとして使用すると、フローデザイナー によって自動的に JSON 文字列に変換されます。

    複合データから REST 要求を作成するためにスクリプトステップを使用する必要はありません。前のアクションまたはステップで複合データを生成し、それを REST ステップの文字列入力にマッピングすることができます。実行時に、アクションまたはフローは複合データを JSON 表現に変換します。

    たとえば、動的入力を開始するには でデータ収集アクションに使用されるスクリプトステップを参照してください。テーブル名およびフィールド名を取得するためのデータ収集アクションは、どちらもスクリプトステップを使用して REST 応答を JSON オブジェクトに解析します。どちらのデータ収集アクションでも、複合データを JSON オブジェクトとして格納する出力変数が作成されます。

    「レコードのルックアップ」ステップ

    フローでは、For Each フローロジックを使用してレコードリストを処理できますが、アクションにはスクリプトステップが必要です。スクリプトステップにより、For Each フローロジックは For ループや While ループなどの JavaScript に置き換わります。

    スクリプトステップからレコードデータにアクセスするには、入力スクリプト変数を作成し、それを前のルックアップステップからのレコードデータにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「スクリプトステップ」を参照してください。

    ユーザーレコードリストを連絡先オブジェクトのアレイに変換するアクションの例については、「レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成」を参照してください。

    注:
    [複数のレコードの検索] アクションでは、レコードデータを複合データに変換するためのスクリプトステップは必要ありません。レコードをオブジェクトに変換し、For Each フローロジックをカスタムアクションに適用するカスタムアクションを作成できます。スクリプトを使用せずに複合オブジェクトを作成する例については、「レコードからオブジェクトを生成するカスタムアクションの作成」と「リスト内の各レコードのオブジェクトを生成するカスタムフローの作成」を参照してください。

    ドット連結オブジェクト構造

    構造のパスをドット連結することで、オブジェクトの構造から要素を参照することができます。複合データパスはすべてデータソースの名前で始まります。これは、入力のグローバルオブジェクト、出力のグローバルオブジェクト、またはスクリプトで作成したアレイまたはオブジェクトの名前です。

    パスの次は、ピリオド文字 (ドットとも呼ばれます) で区切られた、参照される各構造要素の名前です。構造要素の名前をリストすることは、テーブル構造を特定の参照フィールドにリストする参照フィールドをドット連結することと同じです。

    注:
    ドット連結パスには、ラベルではなく構造要素の名前が常にリストされます。

    たとえば、連絡先オブジェクトを出力変数として定義するとします。オブジェクトの構造は次のとおりです。

    図 : 1. 連絡先オブジェクトのサンプル
    連絡先の複合オブジェクトを含むスクリプトステップ出力変数。
    構造内での場所 ラベル 名前 タイプ
    連絡先 contact オブジェクト
    first_name 文字列
    last_name 文字列
    メールアドレス email_addresses Array.Object
    メールアドレス email_address オブジェクト
    曾孫 タイプ type 選択肢
    曾孫 メール email 文字列
    電話 telephone_number Array.Object
    郵送先 mailing_address Array.Object

    [名] 構造要素へのドット連結パスは outputs.contact.first_name になり、[メール] 構造要素へのパスは outputs.contact.email_addresses[0].email になります。これは、アレイの個々の要素をその JavaScript インデックス値で指定する必要があるためです。

    注:
    ドット連結パスでは、アレイ内の繰り返される要素の名前が省略されます。たとえば、オブジェクトのアレイはオブジェクト要素名を指定する必要はありません。ただし、オブジェクトは他の要素のコンテナであるため、ドット連結パス内でオブジェクトの子要素を指定できます。

    デザインの検討

    複合データを使用してスクリプトを作成する場合は、次のデザインの検討を念頭に置いてください。

    文字列入力を使用して複合データを JSON 文字列に変換する
    複合データを文字列入力にマッピングすると、フローデザイナー によって自動的に JSON 文字列に変換されます。スクリプトを記述する代わりに、文字列入力を REST ステップに追加し、前のアクションまたはステップからの複合データにマッピングすることができます。
    オブジェクトをテンプレートとして保存する
    オブジェクトをテンプレートとして保存して、他のアクション、フロー、およびスクリプトステップで再利用できるようにします。
    以前のデータにアクセスするためのスクリプト入力変数を作成する
    アクション入力または前のステップからアクセスするデータのスクリプト入力変数を作成します。スクリプト入力変数を入力またはステップデータピルにマッピングします。たとえば、スクリプト入力変数を、前のステップで検索したユーザーレコードリストにマッピングします。
    複合データを格納するスクリプト出力変数を作成する
    スクリプトで作成した任意の複合データを格納するスクリプト出力変数を作成します。スクリプト出力変数は、スクリプトで定義された値と一致する必要があります。たとえば、複数の連絡先オブジェクトを格納するオブジェクトの連絡先アレイを作成します。連絡先オブジェクトをテンプレートとして保存し、再利用できるようにします。
    アクション出力をスクリプト出力変数にマッピングする
    カスタムアクションで複合データを出力する場合は、アクション出力を追加し、スクリプトステップ出力変数のデータピルにマッピングします。たとえば、連絡先アレイを作成し、前に保存した連絡先オブジェクトテンプレートをロードします。アクション出力を、スクリプトステップによって生成された連絡先アレイにマッピングします。