フォームデータモデルの操作

データ統合機能には、フォームデータモデルの設定と操作を行うためのフォームデータモデルエディターが付属しています。

フォームデータモデルエディターには、フォームデータモデルの編集と設定を行うための直感的なユーザーインターフェイスが用意されています。エディターを使用すると、フォームデータモデル内の関連するデータソースから、データモデルのオブジェクト、プロパティおよびサービスを追加および設定できます。 また、データソースを持っていないデータモデルオブジェクトとプロパティを作成し、後でそれらのオブジェクトとプロパティにデータソースを連結することもできます。さらに、データモデルオブジェクトのプロパティ用にサンプルデータを生成して編集し、これらのプロパティを使用してアダプティブフォームとインタラクティブ通信にデータを取り込み、プレビュー表示することもできます。フォームデータモデル内で設定したデータモデルオブジェクトとサービスのテストを実行することにより、そのフォームデータモデルがデータソースと正しく統合されているかどうかを確認することができます。

AEM Forms のデータ統合機能を初めて使用する場合や、これまでにデータソースの設定やフォームデータモデルの作成を行ったことがない場合は、以下のトピックを参照してください。

ここからは、フォームデータモデルエディターを使用して各種の操作や設定を行う方法について説明します。

メモ

フォームデータモデルを作成して操作するには、fdm-author​および​forms-user​グループのメンバーである必要があります。 これらのグループのメンバーになるには、AEM の管理者に依頼してください。

データモデルオブジェクトとサービスの追加

データソースを使用してフォームデータモデルを作成した場合、フォームデータモデルエディターを使用してデータモデルのオブジェクトとサービスを追加し、そのプロパティを設定し、データモデルオブジェクト間の関連付けを構築し、フォームデータモデルとサービスをテストできます。

フォームデータモデル内の有効なデータソースを使用して、データモデルオブジェクトとサービスを追加することができます。追加したデータモデルオブジェクトは「モデル」タブに表示され、追加したサービスは「サービス」タブに表示されます。

データモデルのオブジェクトおよびサービスを追加するには:

  1. AEM オーサーインスタンスにログインして​フォーム/データ統合​に移動し、データモデルオブジェクトを追加するフォームデータモデルを開きます。

  2. データソースウィンドウで、データソースを展開して、使用可能な表示データモデルのオブジェクトおよびサービスに移動します。

  3. フォームデータモデルに追加するデータモデルオブジェクトとサービスを選択して、「選択項目を追加」をタップします。

    selected-objects

    「モデル」タブには、フォームデータモデルに追加されたすべてのデータモデルオブジェクトのグラフィカル表現と、それらのオブジェクトのプロパティが表示されます。フォームデータモデル内の各データモデルオブジェクトは、ボックスを使用して表現されます。

    model-tab

    メモ

    データモデルオブジェクトのボックスを選択してドラッグすると、コンテンツ領域内にデータモデルオブジェクトを配置することができます。フォームデータモデルに追加されたデータモデルオブジェクトは、データソースペインではすべて灰色表示になっています。

    「サービス」タブには、追加されたサービスが一覧表示されます。

    services-tab

    メモ

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

  4. 保存」をタップして、フォームモデルオブジェクトを保存します。

    メモ

    アダプティブフォームのルールを使用して、フォームデータモデルの「サービス」タブで設定したサービスを呼び出すことができます。設定したサービスは、ルールエディターの「サービスを起動」アクションで使用することができます。設定したサービスをアダプティブフォームルールで使用する方法については、「ルールエディター」で、「サービスを起動」ルールと「指定値」ルールに関する説明を参照してください。

データモデルオブジェクトと子プロパティの作成

データモデルオブジェクトの作成

設定済みデータソースからデータモデルオブジェクトを追加することができますが、データソースを持っていないデータモデルオブジェクトやデータモデルエンティティを作成することもできます。この方法は、フォームデータモデル内でデータソースが設定されていない場合に使用すると、特に便利です。

データソースを持っていないデータモデルオブジェクトを作成するには、以下の手順を実行します。

  1. AEM オーサーインスタンスにログインして​フォーム/データ統合​に移動し、データモデルオブジェクトまたはデータモデルエンティティを作成するフォームデータモデルを開きます。

  2. エンティティを作成」をタップします。

  3. フォームデータモデル作成ダイアログで、データモデルオブジェクトの名前を指定して「追加」をタップします。データモデルオブジェクトがフォームデータモデルに追加されます。新しく追加されたデータモデルオブジェクトは、データソースに連結されず、次の図に示すようなプロパティも持たないことに注意してください。

    new-entity

次に、データソースに連結されていないデータモデルオブジェクトで、子プロパティを追加します。

子プロパティの追加

フォームデータモデルエディターを使用して、データモデルオブジェクト内で子プロパティを作成することができます。作成した時点では、子プロパティはデータソース内のどのプロパティにも連結されません。作成した子プロパティは、データモデルオブジェクト内の別のプロパティに後で連結することができます。

子プロパティを作成するには、以下の手順を実行します。

  1. フォームデータモデル内で、データモデルオブジェクトを選択し、「子プロパティを作成」をタップします。

  2. 子プロパティを作成​ダイアログの「名前」フィールドと「タイプ」フィールドで、子プロパティの名前とタイプを指定します。必要に応じて、子プロパティのタイトルと説明を指定することもできます。

  3. 作成するプロパティが計算済みプロパティの場合は、「計算済み」を有効にします。計算済みプロパティの値は、ルールまたは式に基づいて評価されます。詳しくは、「プロパティの編集」を参照してください。

  4. データモデルオブジェクトをデータソースに連結すると、追加した子プロジェクトが親データモデルオブジェクトのプロパティに自動的に連結されます。その際、子プロパティの名前とデータタイプは変わりません。

    子プロパティをデータモデルオブジェクトのプロパティに手動で連結するには、「参照をバインド」フィールドの横に表示されている参照アイコンをタップします。オブジェクトの選択​ダイアログに、親データモデルオブジェクトのすべてのプロパティが一覧表示されます。連結するプロパティを選択して、チェックマークアイコンをタップします。子プロパティと異なるデータタイプのプロパティを選択することはできないことに注意してください。

  5. 完了」をタップして子プロパティを保存し、「保存」タップしてフォームデータモデルを保存します。これで、子プロパティがデータモデルオブジェクトに追加されました。

データモデルオブジェクトとプロパティを作成したら、フォームデータモデルに基づいて、アダプティブフォームとインタラクティブ通信を作成することができます。データソースの設定が完了した時点で、フォームデータモデルをデータソースに連結することができます。連結の設定は、関連するアダプティブフォームとインタラクティブ通信内で自動的に更新されます。フォームデータモデルを使用したアダプティブフォームとインタラクティブな通信の作成について詳しくは、「フォームデータモデルの使用」を参照してください。

データモデルオブジェクトとプロパティの連結

フォームデータモデルと統合するデータソースが使用可能な場合は、データソースの更新の説明に従って、データソースをフォームデータモデルに追加できます。 その後、以下の手順を実行して、データソースに連結されていないデータモデルオブジェクトとプロパティを連結します。

  1. フォームデータモデルで、データソースに連結するデータソースを選択します。

  2. プロパティを編集」をタップします。

  3. プロパティを編集​ペインで、「連結」フィールドの横に表示されている参照アイコンをタップします。この操作により、オブジェクトの選択​ダイアログが表示されます。このダイアログには、フォームデータモデル内に追加されたデータソースが一覧表示されます。

    select-object

  4. データソースツリーを展開し、連結するデータモデルオブジェクトを選択してチェックマークアイコンをタップします。

  5. 完了」をタップしてプロパティを保存し、「保存」をタップしてフォームデータモデルを保存します。これで、データモデルオブジェクトがデータソースに連結されました。データモデルオブジェクトが「連結なし」とマークされなくなったことに注意してください。

    bound-model-object

サービスの設定

データモデルオブジェクトのデータの読み取りと書き込みを行うには、以下の手順を実行して、読み取りサービスと書き込みサービスを設定します。

  1. データモデルオブジェクト上部のチェックボックスを選択して「プロパティを編集」をタップします。

    edit-properties

    データモデルオブジェクトの読み取りサービスと書き込みサービスの設定を行う「プロパティを編集」

    プロパティを編集ダイアログが表示されます。

    edit-properties-2

    プロパティを編集ダイアログ

    メモ

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。OData サービスのデータソースをフォームデータモデルに追加すると、フォームデータモデルでデータモデルオブジェクト内のすべてのナビゲーションプロパティが有効になるサービスを使用できます。このサービスを使用して、対応するデータモデルオブジェクトのナビゲーションプロパティを読み取ることができます。

    このサービスの使用について詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

  2. トップレベルオブジェクト」を切り替えて、データモデルオブジェクトを最上位のモデルオブジェクトにするかどうかを指定します。

    フォームデータモデルで設定したデータモデルオブジェクトは、そのフォームデータモデルに基づいて、アダプティブフォームのコンテンツブラウザーの「データモデルオブジェクト」タブで使用することができます。2 つのデータモデルオブジェクト間の関連付けを追加すると、「データモデルオブジェクト」タブで、関連付け先のデータモデルオブジェクトが、関連付け元のデータモデルオブジェクトの下にネストされます。ネストされたデータモデルが最上位のオブジェクトである場合は、「データモデルオブジェクト」タブにもそのデータモデルが個別に表示されます。この場合、ネストされた階層の内側と外側に 1 つずつデータモデルのエントリが表示されるため、フォームの作成者が混乱する可能性があります。関連するデータモデルオブジェクトをネストされた階層内だけで表示するには、そのデータモデルオブジェクトの「トップレベルオブジェクト」プロパティを無効にします。

  3. 選択したデータモデルオブジェクトの読み取りサービスと書き込みサービスを選択します。各サービスの引数が表示されます。

    読み取り/書き込みサービス

    従業員データソースに対して設定されている読み取りサービスと書き込みサービス

  4. 読み取りサービスの引数でaem_6_3_editをタップし、引数をユーザープロファイル属性、要求属性またはリテラル値に連結し、連結値を指定します。 これにより、指定したバインド属性またはリテラル値にサービスの引数がバインドされ、それが引数としてサービスに渡され、指定した値に関連付けられている詳細情報がデータソースから取得されます。

    上記の例では、id 引数を使用してユーザープロファイルの empid 属性の値を取得し、それを引数として読み取りサービスに渡しています。読み取りサービスは、指定された employee について、empid データモデルオブジェクトから関連プロパティの値を読み取り、その値をシステムに返します。したがって、フォームのempidフィールドに00250を指定した場合、読み取りサービスは従業員IDが00250の従業員の詳細を読み取ります。

    また、引数の入力を任意にすることも必須にすることもできます。

    引数を編集

    id 引数を AEM ユーザープロファイルの empid 属性にバインドする

  5. 完了」をタップして引数を保存し、もう一度「完了」をタップしてプロパティを保存します。次に、「保存」をタップしてフォームデータモデルを保存します。

関連付けの追加

通常、データソース内のデータモデルオブジェクト間には関連付けが作成されています。この関連付けは、1 対 1 の場合もあれば、1 対多の場合もあります。例えば、1 人の従業員に対して複数の扶養家族を関連付けることができます。これを、 対多の関連付けといいます。関連するデータモデルオブジェクトを接続するライン上では、「1:n1:」」として表示されます。それに対して、特定の従業員 ID で一意の従業員名が返される場合などは、1 対 1 の関連付けになります。

データソース内の関連するデータモデルオブジェクトをフォームデータモデルに追加すると、関連付けは保持され、矢印で結ばれた状態で表示されます。 フォームデータモデルでは、異なる複数のデータソース間でデータモデルオブジェクト間に関連付けを追加できます。

メモ

JDBC データソース内で事前に定義されている関連付けは、フォームデータモデル内では維持されません。これらの関連付けについては、手動で作成する必要があります。

関連付けを追加するには、以下の手順を実行します。

  1. データモデルオブジェクト上部のチェックボックスを選択して「関連付けを追加」をタップします。関連付けを追加ダイアログが表示されます。

    追加関連

    メモ

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。フォームデータモデルで関連付けを追加する際に、これらのナビゲーションプロパティを使用することができます。詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

    関連付けを追加ダイアログが表示されます。

    add-association-2

    関連付けを追加ダイアログ

  2. 関連付けを追加ペインで、以下の操作を実行します。

    • 関連付けのタイトルを入力します。
    • 関連付けのタイプを「1対1」または「1対多」から選択します。
    • 関連付けるデータモデルオブジェクトを選択します。
    • 選択したモデルオブジェクトからデータを読み取るための読み取りサービスを選択します。読み取りサービスの引数が表示されます。必要に応じて引数を編集し、関連付けるデータモデルオブジェクトのプロパティにその引数をバインドします。

    以下に示す例では、「扶養家族」データモデルオブジェクトの読み取りサービスのデフォルト引数が dependentid になっています。

    add-association-example

    「扶養家族」読み取りサービスのデフォルト引数が dependentid になっている

    ただし、この引数は、関連付けるデータモデルオブジェクト間の共通プロパティ(この例の場合は Employeeid)でなければなりません。したがって、Employeeid引数は、Employeeデータモデルオブジェクトのidプロパティにバインドして、関連付けられた依存の詳細をDependentsデータモデルオブジェクトから取得する必要があります。

    add-association-example-2

    更新後の引数とバインド

    完了」をクックして、引数を保存します。

  3. 完了」をタップして関連付けを保存し、次に「保存」をタップしてフォームデータモデルを保存します。

  4. さらに関連付けを作成するには、上記の手順を繰り返します。

メモ

追加した関連付けは、入力したタイトルと、関連データモデルオブジェクトを接続する線とともに、データモデルオブジェクトのボックス内に表示されます。

関連付けを編集するには、対象のチェックボックスを選択し、関連付けを編集​をタップします。

付加結合

プロパティの編集

フォームデータモデル内で追加されたデータモデルオブジェクトとサービスのプロパティを編集することができます。

プロパティを編集するには、以下の手順を実行します。

  1. フォームデータモデル内のデータモデルオブジェクト、プロパティ、またはサービスの横に表示されているチェックボックスを選択します。

  2. プロパティを編集」をタップします。選択したモデルオブジェクト、プロパティ、またはサービスの「プロパティを編集」ペインが表示されます。

    • データモデルオブジェクト:読み取りサービスと書き込みサービスを指定し、引数を編集します。
    • プロパティ:プロパティのタイプ、サブタイプ、形式を指定します。選択したプロパティをデータモデルオブジェクトのプライマリキーにするかどうかを指定することもできます。
    • サービス:サービスの入力モデルオブジェクト、出力タイプ、引数を指定します。Get サービスの場合は、配列を返す必要があるかどうかを指定することができます。

    edit-properties-service

    Get サービスのプロパティを編集ダイアログ

  3. 完了」をタップしてプロパティを保存し、次に「保存」をタップしてフォームデータモデルを保存します。

計算済みプロパティの作成

計算済みプロパティとは、ルールまたは式に基づいて値が計算されるプロパティのことです。ルールを使用して、計算済みプロパティの値を、リテラル文字列、数値、数式の計算結果、フォームデータモデル内の別のプロパティの値に設定することができます。

例えば、FirstName プロパティと LastName プロパティの値を組み合わせた値を持つ FullName プロパティを作成することができます。この作業を行うには:

  1. データタイプがStringであるFullNameという名前で新しいプロパティを作成します。

  2. 計算済み」を有効にし、「完了」をタップしてプロパティを作成します。

    計算済み

    これにより、FullName という名前の計算済みプロパティが作成されます。このプロパティの横に、計算済みプロパティであることを表すアイコンが表示されます。

    computed-prop

  3. 「FullName」プロパティを選択して「ルールを編集」をタップします。ルールエディターウィンドウが表示されます。

  4. ルールエディターウィンドウで、「作成」をタップします。「Set Value」ルールウィンドウが表示されます。

    オプション選択ドロップダウンで、「数式」を選択します。「フォームデータモデルのオブジェクト」オプションと「文字列」オプションを選択することもできます。

  5. 数式の最初のオブジェクトとして「FirstName」を選択し、2 番目のオブジェクトとして「LastName」を選択します。演算子として「プラス」を選択します。

    完了」をタップし、「閉じる」をタップして、ルールエディターウィンドウを閉じます。 ルールは以下のようになります。

    rule

  6. フォームデータモデルで、「保存」をタップします。これで、計算済みプロパティが設定されました。

OData サービスのナビゲーションプロパティの操作

OData サービスでは、ナビゲーションプロパティを使用して、2 つのデータモデルオブジェクト間の関連付けが定義されます。これらのプロパティは、エンティティタイプまたは複合タイプに対して定義されます。例えば、サンプルTripPin ODataサンプルサービスのメタデータファイルから抽出した次の例では、人物のエンティティに3つのナビゲーションプロパティ(Friends、BestFriend、Trips)が含まれています。

ナビゲーションプロパティについて詳しくは、OData のドキュメントを参照してください。

<edmx:Edmx xmlns:edmx="https://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<script/>
<edmx:DataServices>
<Schema xmlns="https://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.OData.Service.Sample.TrippinInMemory.Models">
<EntityType Name="Person">
<Key>
<PropertyRef Name="UserName"/>
</Key>
<Property Name="UserName" Type="Edm.String" Nullable="false"/>
<Property Name="FirstName" Type="Edm.String" Nullable="false"/>
<Property Name="LastName" Type="Edm.String"/>
<Property Name="MiddleName" Type="Edm.String"/>
<Property Name="Gender" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.PersonGender" Nullable="false"/>
<Property Name="Age" Type="Edm.Int64"/>
<Property Name="Emails" Type="Collection(Edm.String)"/>
<Property Name="AddressInfo" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location)"/>
<Property Name="HomeAddress" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location"/>
<Property Name="FavoriteFeature" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature" Nullable="false"/>
<Property Name="Features" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature)" Nullable="false"/>
<NavigationProperty Name="Friends" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person)"/>
<NavigationProperty Name="BestFriend" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person"/>
<NavigationProperty Name="Trips" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)"/>
</EntityType>

フォームデータモデル内で OData サービスを設定すると、そのフォームデータモデル内のサービスを経由して、エンティティコンテナ内のすべてのナビゲーションプロパティを使用できるようになります。このTripPin ODataサービスの例では、Personエンティティコンテナの3つのナビゲーションプロパティは、フォームデータモデルの1つのGET LINKサービスを使用して読み取ることができます。

次の例は、Form Data ModelのGET LINK of Person /Peopleサービスに焦点を当てています。これは、TripPin ODataサービスのPersonエンティティの3つのナビゲーションプロパティを組み合わせたサービスです。

nav-prop-service

フォームデータモデルの「サービス」タブに GET LINK サービスを追加すると、サービス内で使用する出力モデルオブジェクトとナビゲーションプロパティを選択するための各種プロパティを編集できるようになります。例えば、次の例のGET LINK of Person /Peopleサービスでは、Tripを出力モデルオブジェクトとして使用し、navigationプロパティをTripsとして使用しています。

edit-prop-nav-prop

メモ

NavigationPropertyName​引数の​Default Value​フィールドに指定できる値は、Return配列の状態によって異なります。」トグルボタンの状態によって異なります。このボタンが有効になっている場合は、コレクションタイプのナビゲーションプロパティが表示されます。

この例では、出力モデルオブジェクトをPersonに、ナビゲーションプロパティ引数をFriendsまたはBestFriend (Return配列かどうかによって異なります)に選択することもできます。」ボタンが有効になっているか無効になっているかによって異なります)。

edit-prop-nav-prop2

同様に、フォームデータモデルで関連付けを追加する際に GET LINK サービスを選択し、サービスのナビゲーションプロパティを設定することができます。ただし、ナビゲーションプロパティを選択するには、「​バインディング先」フィールドが「リテラル」に設定されている必要があります。

add-association-nav-prop

サンプルデータの生成と編集

フォームデータモデルエディターを使用して、計算済みプロパティを含むすべてのデータモデルオブジェクトプロパティのサンプルデータを、フォームデータモデル内で生成することができます。各プロパティで設定されたデータタイプに基づいて、一連のランダムな値がサンプルデータとして生成されます。このサンプルデータを編集して保存することもできます。サンプルデータを再生成した場合も、編集したサンプルデータは保存されたままになります。

サンプルデータを生成して編集するには、以下の手順を実行します。

  1. フォームデータモデルを開いて「サンプルデータを編集」をタップします。サンプルデータが生成され、サンプルデータ編集ウィンドウに表示されます。

    sample-data

  2. サンプルデータを編集」ウィンドウでデータを編集して「保存」をタップします。

次に、サンプルデータを使用し、フォームデータモデルに基づいてインタラクティブ通信にデータを取り込んでテストを実行します。詳しくは、「フォームデータモデルの使用」を参照してください。

データモデルオブジェクトとサービスのテスト

これまでの手順で設定したフォームデータモデルを使用する前に、設定したデータモデルオブジェクトとサービスが正しく動作するかどうかをテストすることをお勧めします。データモデルオブジェクトとサービスをテストするには、以下の手順を実行します。

  1. フォームデータモデル内のデータモデルオブジェクトまたはサービスを選択し、「モデルオブジェクトをテスト」または「サービスをテスト」をタップします。

    フォームデータモデルをテストウィンドウが表示されます。

    test-data-model

  2. 上記のウィンドウの入力ペインで、テストするデータモデルオブジェクトまたはサービスを選択します。

  3. テストコードで引数の値を指定して「テスト」をタップします。テストが成功すると、出力ペインに出力情報が表示されます。

    test-data-model-2

同様の方法で、フォームデータモデル内の他のデータモデルオブジェクトやサービスをテストすることができます。

次の手順

これで、作業用のフォームデータモデルを、アダプティブフォームとインタラクティブ通信のワークフローで使用する準備が整いました。次の手順として、実際にこのフォームデータモデルを使用します。詳しくは、「フォームデータモデルの使用」を参照してください。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now