複合データ
グラフィカルインターフェイスを使用して、複合的な構造化データのコレクションを操作します。設計ユーザーが構造化データの構成を理解して、個々の要素を追加、削除、または構成できるようにします。
複合データを使用すると、構造化データを JavaScript Object Notation (JSON) や拡張マークアップ言語 (XML) などの機械可読形式でエンコードして保存できます。ワークフロースタジオ インターフェイスを使用して、構造化データの構成を表示して把握したり、データ構造を作成したりすることができます。たとえば、名、姓、メールアドレスなど、ユーザーレコードから検索する情報で構成される連絡先データ構造を作成できます。
これらの ワークフロースタジオ インターフェイスから複合データを作成できます。
| ワークフロースタジオインターフェイス | 使用例 |
|---|---|
| アクションの入力および出力 | レコードデータからオブジェクトを生成するアクションを作成します。アクションが検索するレコードデータを使用してオブジェクトを設定します。次のフォームを参照してください。 レコードからオブジェクトを生成するカスタムアクションの作成 |
| スクリプトステップの入力変数および出力変数 | レコードリストからオブジェクトのアレイを作成するスクリプトを記述します。「レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成」を参照してください。 JSON ドキュメントを解析してオブジェクトタイプの出力にするスクリプトを記述します。 |
| サブフローの入力および出力 | オブジェクトを入力として受け入れ、それを使用して外部サービスを呼び出すサブフローを作成します。 |
| XML パーサーステップ ターゲットフィールド構成 | XML パーサーステップを使用して、XML ペイロードを解析して複合データオブジェクトにします。 |
| REST API トリガーの本文フィールド | 受信 REST API 要求を解析して複合データオブジェクトにし、その値をフローで使用します。「REST API トリガー」を参照してください。 |
メリット
- コードを記述せずにデータを解析およびフォーマットできます。たとえば、応答メッセージを解析したり、要求メッセージをフォーマットしたりするデータ変数を作成できます。
- 任意のデータ構造を作成できます。たとえば、既存のインタラクションとインシデントレコードの情報を組み合わせた問題データ構造を作成したり、カスタムデータ連携をサポートするデータ構造を作成したりできます。
- データ構造の構成を表示できます。たとえば、問題データ構造は、問題について連絡する相手を説明するユーザーオブジェクトと、問題を解決するために行われた作業を説明する履歴オブジェクトで構成されている場合があります。ユーザーオブジェクトにリストされているメールアドレスへのパスを使用して通知アクションを設定し、ステータスへのパスを使用して問題をエスカレートするサブフローを呼び出すか、履歴オブジェクトからカウントを再割り当てすることができます。
- API 呼び出しからのデータ構造へのアクセスを許可できます。たとえば、スクリプトからアクションまたはサブフローを呼び出し、事前定義されたデータ構造を入力値として使用できます。
- データ構造をテンプレートとして保存して再利用できます。たとえば、ユーザーオブジェクトをテンプレートデータ構造として保存し、他のアクションやフローで再利用できるようにします。
データ構造
データ構造は、階層に編成された関連するデータ要素のコレクションです。データ構造内の各要素には、階層内に独自のデータタイプと一意の位置があります。
たとえば、このデータ構造は、[従業員] の親要素と、[ID 番号]、[名前]、[開始日]、[連絡先メール] の 4 つの子要素で構成されます。[連絡先メール] 要素は、1 つの子を持つ親要素でもあります。
データパネルには、レコード変数の場合と同様に、データ構造階層が折りたたみおよび展開可能なデータピルのツリーとして表示されます。親要素には、階層を折りたたんだり展開したりするための矢印アイコンがあります。
たとえば、データパネルから見た [従業員] データ構造は次のとおりです。
データパネルまたはデータピッカーを使用して、データ構造から特定の値を選択できます。データ構造は、ドット連結したり、構造内の特定の要素に移動したりできるという点で、レコードのデータピルに似ています。データ要素を選択すると、他のデータ要素の選択と同様に、ワークフロースタジオ にそのデータ要素へのパスがデータピルとして表示されます。たとえば、[開始日] データ要素を選択した場合、パスは [入力 -> 従業員 -> 開始日] になります。
要素データパスは、XPath または JPath と同じように使用できます。データピルパスをこれらのパス表記のいずれかに変換することができる場合もあります。
複合データ型
1 つ以上の「アレイ」または「オブジェクト」変数を使用してデータ構造をビルドします。これらの変数データ型のみが子変数をサポートします。
アレイ変数には、あるタイプのアイテムの値が含まれています。親変数は常にアレイデータ型であり、存在する子変数は常に 1 つのみとなります。これは、アレイでサポートされているデータ型の 1 つのインスタンスです。入力または出力が同じデータ型の値を複数受け入れる場合は、アレイ変数を作成します。
たとえば、[連絡先メール] アレイを作成して、特定のユーザーに関連付けられているすべてのメールアドレスをリストすることができます。
| コンポーネントラベル | データタイプ | サンプルデータ |
|---|---|---|
| 連絡先メール | Array.String | beth.anglin@example.com and beth@anglin.com |
| 連絡先メール_child0 | 文字列 |
オブジェクト変数には、それぞれ独自のデータ型と値を持つ任意の数と配置の子変数が含まれます。オブジェクト変数をネストすると、あるテーブルの関連レコードが別のテーブルにあるテーブルスキーマに似た複雑なデータ構造を作成できます。入力または出力が 1 つ以上の関連プロパティを受け入れる場合はオブジェクト変数を作成します。
たとえば、[従業員] オブジェクトを作成して、会社で働く人々に関する情報を定義することができます。
| コンポーネントラベル | データタイプ | サンプルデータ |
|---|---|---|
| 従業員 | オブジェクト | |
| ID 番号 | 整数 | 20190304000101 |
| 名前 | 文字列 | Beth Anglin |
| 開始日 | 日付/時刻 | 2019 年 3 月 4 日 |
| 連絡先メール | Array.String | beth.anglin@example.com and beth@anglin.com |
次の変数データ型のみが親になることができます。
| データタイプ | 説明 |
|---|---|
| Array.Array | アレイのコンテナです。アレイ型の読み取り専用の子アイテムを追加します。 |
| Array.True/False | true/false 値のコンテナです。True/False 型の読み取り専用の子アイテムを追加します。 |
| Array.Choice | 選択値のコンテナです。選択型の読み取り専用の子アイテムを追加します。 |
| Array.Date/Time | 日付/時刻値のコンテナです。日付/時刻型の読み取り専用の子アイテムを追加します。 |
| Array.Integer | 整数値のコンテナです。整数型の読み取り専用の子アイテムを追加します。 |
| Array.Object | オブジェクトのコンテナです。オブジェクト型の読み取り専用の子アイテムを追加します。これには、[子アイテムを追加] オプションが表示されます。 |
| Array.String | 文字列値のコンテナです。文字列型の読み取り専用の子アイテムを追加します。 |
| オブジェクト | その他のデータ要素のコンテナです。[子アイテムを追加] オプションを表示します。 |
- アレイ
- True/False
- 選択肢
- 日付/時刻
- 整数
- オブジェクト
- 文字列
詳細オプション
オブジェクト変数には、データ構造を保存およびロードするための詳細オプションがあります。これらのオプションを使用すると、ある場所で定義されたデータ構造を別の場所で再利用できます。詳細オプションの詳細については、「アクション変数データ型 (action variable data types)」を参照してください。
データ構造テンプレート
データ構造テンプレートを使用すると、オブジェクト変数を複数のアクションまたはサブフローで再利用できます。たとえば、応答を解析するデータ構造を作成し、後で同じデータ構造を再利用して要求をフォーマットすることができます。テンプレートは、子変数のリストとその構造をオブジェクト内に格納します。各オブジェクト変数には、テンプレートとして保存するための [詳細オプション] があります。
テンプレートを適用すると、元の構造のコピーが作成されます。テンプレートの適用後に行った変更は、テンプレートには影響せず、テンプレートを使用する他のアクションにも影響しません。
アレイデータピル
アレイデータを含むオブジェクトでは、For Each フローロジックの処理が必要になる場合があります。たとえば、メールアドレスのアレイを含むユーザーオブジェクトには、各メールアドレスに通知を送信する For Each フローロジックループが必要です。
オブジェクトデータピル
オブジェクトデータピルを入力値として受け入れるアクションを設計できます。たとえば、ユーザーオブジェクトを入力として受け入れる通知アクションを作成できます。ユーザーオブジェクトが名、姓、および住所の値で構成されている場合、通知アクションはこれらすべての値にアクセスできます。オブジェクトデータピルを使用してアクション入力を構成するには、フローの早い段階でオブジェクトを作成する必要があります。
オブジェクトデータピルまたはその子要素を使用して、入力を構成できます。オブジェクトデータピルを使用して入力値を設定すると、ワークフロースタジオ によってオブジェクトの子要素がすべて読み取り専用になり、アクションではオブジェクトによって提供された値が使用されます。たとえば、あるアクションがユーザーオブジェクトを生成し、別のアクションがそのオブジェクトで指定されたユーザーに通知を送信するフローを作成できます。
オブジェクトの子要素を構成する場合は、オブジェクトの各子要素にデータピルを手動で指定する必要があります。たとえば、以前のアクションのレコード値を使用してユーザーオブジェクトを手動で設定できます。
スクリプトのサポート
スクリプトから複合データを作成して参照します。データストリーム、REST ステップ応答、または複数のレコードの検索ステップからソースデータが取得される場合は、スクリプトを使用します。複合データを使用するスクリプティングの詳細については、「複合データのスクリプトサポート」を参照してください。
更新セットのサポート
更新セットは、それらが定義されているフロー、サブフロー、またはアクションの一部として複合オブジェクトを含みます。親フロー、サブフロー、またはアクションが変更されると、それに関連する複合データが自動的にキャプチャされます。
一般的なガイドライン
再利用可能かつメンテナンス可能なデータ構造を作成するには、次の一般的なガイドラインに従います。
- 階層内の子レベルの数を最低限にする
- データ構造の子レベルが多いほど、階層からデータ変数を表示して選択することが難しくなります。任意の数の子レベルを持つデータ構造をビルドできますが、7 つを超える子レベルを持つデータ構造をナビゲートして把握することは困難になります。最高のユーザーエクスペリエンスを得るには、水平方向にスクロールして表示および設定する必要があるほど子レベルが多いデータ構造を作成しないでください。
- レコードデータのタイプごとに個別のオブジェクトを作成する
- ほとんどの ワークフロースタジオ データは、インスタンスからのものか外部システムからのものかを問わずレコードデータです。この設計メソッドにより、オブジェクトの内容とデータの出所を確実に把握できます。
- レコードデータ構造を再作成する
- レコードデータを送受信するオブジェクトをビルドする場合は、これらのレコードのデータベースディクショナリーエントリを確認し、一致するオブジェクトデータ構造を作成します。たとえば、インシデントおよび構成アイテムテーブルからのデータをオブジェクトに含める必要があるとします。インシデントテーブルの [簡単な説明] フィールド用に文字列要素を作成し、構成アイテムテーブルの [クラス] フィールド用に文字列要素のアレイを作成することができます。
- さまざまなタイプのレコードを結合するオブジェクトを作成する
- 複数のタイプのレコードの情報が必要な場合は、必要なすべての情報を含むオブジェクトを作成します。その後、そのオブジェクトを使用することで ワークフロースタジオ でデータのフォーマットや解析を行うことができます。