フォームデータモデル(FDM)の操作 work-with-form-data-model
フォームデータモデル(FDM)エディターには、フォームデータモデル(FDM)の編集と設定を行うための直感的なユーザーインターフェイスが用意されています。このエディターを使用すると、フォームデータモデル(FDM)内の関連データソースからデータモデルのオブジェクト、プロパティ、サービスの追加と設定を行うことができます。また、データソースを持っていないデータモデルオブジェクトとプロパティを作成し、後でそれらのオブジェクトとプロパティにデータソースを連結することもできます。さらに、データモデルオブジェクトのプロパティ用にサンプルデータを生成して編集し、これらのプロパティを使用してアダプティブフォームにデータを取り込み、プレビュー表示することもできます。フォームデータモデル(FDM)内で設定したデータモデルのオブジェクトとサービスをテストすることにより、そのフォームデータモデル(FDM)がデータソースと正しく統合されているかどうかを確認できます。
Forms のデータ統合機能を初めて使用する場合や、これまでにデータソースの設定やフォームデータモデル(FDM)の作成を行ったことがない場合は、以下のトピックを参照してください。
ここからは、フォームデータモデルエディターを使用して実行できる様々なタスクや設定について説明します。
データモデルオブジェクトとサービスの追加 add-data-model-objects-and-services
データソースを持つフォームデータモデル(FDM)が既に作成されている場合は、フォームデータモデルエディターを使用して、データモデルオブジェクトとサービスの追加、各種プロパティの設定、データモデルオブジェクト間の関連付けの定義、フォームデータモデル(FDM)とサービスのテストを行うことができます。
フォームデータモデル(FDM)内の使用可能なデータソースから、データモデルのオブジェクトとサービスを追加できます。追加したデータモデルオブジェクトは「モデル」タブに表示され、追加したサービスは「サービス」タブに表示されます。
データモデルオブジェクトとサービスを追加するには、以下の手順を実行します。
-
Experience Manager オーサーインスタンスにログインして Forms/データ統合 に移動し、データモデルオブジェクトを追加するフォームデータモデル(FDM)を開きます。
-
データソースペインでデータソースを展開して、使用可能なデータモデルオブジェクトとサービスを表示します。
-
フォームデータモデル(FDM)に追加するデータモデルオブジェクトとサービスを選択して、「選択項目を追加」を選択します。
選択されたデータモデルオブジェクトとサービス
「モデル」タブには、フォームデータモデル(FDM)に追加されたすべてのデータモデルオブジェクトのグラフィカル表現と、それらのオブジェクトのプロパティが表示されます。フォームデータモデル内の各データモデルオブジェクト(FDM)は、ボックスを使用して表現されます。
追加したデータモデルオブジェクトが表示された「モデル」タブ
note note NOTE データモデルオブジェクトのボックスを選択してドラッグすると、コンテンツ領域内にデータモデルオブジェクトを配置できます。フォームデータモデル(FDM)に追加されたデータモデルオブジェクトは、データソースペイン内ではすべてグレーアウトされます。 「サービス」タブには、追加されたサービスが一覧表示されます。
データモデルサービスが表示された「サービス」タブ
note note NOTE OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。詳しくは、OData サービスのナビゲーションプロパティの操作を参照してください。 -
「保存」を選択して、フォームモデルオブジェクトを保存します。
note note NOTE アダプティブフォームのルールを使用すると、フォームデータモデル(FDM)の「サービス」タブで設定したサービスを呼び出せます。設定したサービスは、ルールエディターの「サービスを起動」アクションで使用できます。設定したサービスをアダプティブフォームルールで使用する方法については、「ルールエディター」で、「サービスを起動」ルールと「指定値」ルールに関する説明を参照してください。
データモデルオブジェクトと子プロパティの作成 create-data-model-objects-and-child-properties
データモデルオブジェクトの作成 create-data-model-objects
設定済みのデータソースからデータモデルオブジェクトを追加できますが、データソースのないデータモデルオブジェクトやデータモデルエンティティを作成することもできます。フォームデータモデル(FDM)でデータソースを設定していない場合は特に便利です。
データソースを使用せずにデータモデルオブジェクトを作成するには:
-
Experience Manager オーサーインスタンスにログインして Forms/データ統合 に移動し、データモデルオブジェクトまたはデータモデルエンティティを作成するフォームデータモデル(FDM)を開きます。
-
「エンティティを作成」を選択します。
-
データモデルを作成ダイアログで、データモデルオブジェクトの名前を指定して「追加」を選択します。データモデルオブジェクトがフォームデータモデル(FDM)に追加されます。以下の図に示すように、新しく追加されたデータモデルオブジェクトは、データソースには連結されません。また、プロパティも設定されません。
次に、バインドされていないデータモデルオブジェクトに子プロパティを追加できます。
子プロパティの追加 child-properties
フォームデータモデルエディターを使用すると、データモデルオブジェクトで子プロパティを作成できます。作成時のプロパティは、データソース内のどのプロパティにもバインドされません。後で、データモデルオブジェクトを含む別のプロパティにこの子プロパティをバインドできます。
子プロパティを作成するには、以下の手順を実行します。
-
フォームデータモデルでデータモデルオブジェクトを選択して「子プロパティを作成」を選択します。
-
子プロパティを作成 ダイアログで、 プロパティの名前とデータタイプをそれぞれ 名前 フィールドと タイプ フィールドに指定します。必要に応じて、プロパティのタイトルと説明を指定できます。
-
プロパティが計算済みの場合は、「計算済み」を有効にします。計算済みプロパティの値は、ルールまたは式に基づいて評価されます。詳しくは、プロパティの編集を参照してください。
-
データモデルオブジェクトがデータソースにバインドされている場合、追加された子プロパティは、同じ名前とデータタイプを持つ親データモデルオブジェクトのプロパティに自動的にバインドされます。
子プロパティをデータモデルオブジェクトのプロパティに手動で連結するには、「参照をバインド」フィールドの横に表示されている参照アイコンを選択します。オブジェクトの選択 ダイアログには、親データモデルオブジェクトのすべてのプロパティが一覧表示されます。バインドするプロパティを選択し、チェックマークアイコンをクリックします。子プロパティと異なるデータタイプのプロパティを選択することはできません。
-
「完了」を選択して子プロパティを保存し、「保存」を選択してフォームデータモデル(FDM)を保存します。これで、子プロパティがデータモデルオブジェクトに追加されました。
データモデルオブジェクトとプロパティを作成したら、続いて、アダプティブフォームをそのフォームデータモデル(FDM)に基づいて作成できます。データソースの設定が完了した時点で、フォームデータモデル(FDM)をデータソースにバインドできます。関連するアダプティブフォームでは、連結が自動的に更新されます。フォームデータモデル(FDM)を使用してアダプティブフォームを作成する方法については、フォームデータモデルの使用を参照してください。
データモデルオブジェクトとプロパティの連結 bind-data-model-objects-and-properties
フォームデータモデル(FDM)に統合するデータソースが使用可能な状態になったら、データソースの更新に記載されている説明に従い、データソースをフォームデータモデル(FDM)に追加することができます。次に、バインドされていないデータモデルオブジェクトとプロパティを以下の手順でバインドします。
-
フォームデータモデルで、データソースへのバインドの対象となるバインドされていないデータソースを選択します。
-
「プロパティを編集」を選択します。
-
プロパティを編集 ペインで、バインド フィールドの横にある参照アイコンを選択します。フォームデータモデル(FDM)に追加されたデータソースを一覧表示する オブジェクトを選択 ダイアログが開きます。
-
データソースツリーを展開し、連結するデータモデルオブジェクトを選択してチェックマークアイコンを選択します。
-
「完了」を選択してプロパティを保存し、「保存」を選択してフォームデータモデルを保存します。これで、データモデルオブジェクトがデータソースにバインドされました。これ以降は、データモデルオブジェクトに「連結されていない」というテキストが表示されることはありません。
サービスの設定 configure-services
データモデルオブジェクトのデータの読み取りと書き込みを行うには、以下の手順を実行して、読み取りサービスと書き込みサービスを設定します。
-
データモデルオブジェクト上部のチェックボックスを選択して「プロパティを編集」を選択します。
データモデルオブジェクトの読み取りサービスと書き込みサービスの設定を行う「プロパティを編集」
プロパティを編集ダイアログが表示されます。
プロパティを編集ダイアログ
note note NOTE OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。OData サービスのデータソースをフォームデータモデル(FDM)に追加すると、データモデルオブジェクト内のすべてのナビゲーションプロパティに対し、フォームデータモデル(FDM)でサービスを使用できます。このサービスを使用して、対応するデータモデルオブジェクトのナビゲーションプロパティを読み取ることができます。 このサービスの使用について詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。 -
トップレベルオブジェクト を切り替えて、データモデルオブジェクトを最上位のモデルオブジェクトにするかどうかを指定します。
フォームデータモデル(FDM)で設定したデータモデルオブジェクトは、そのフォームデータモデル(FDM)に基づくアダプティブフォームのコンテンツブラウザーの「データモデルオブジェクト」タブで使用できるようになります。2 つのデータモデルオブジェクト間の関連付けを追加すると、「データモデルオブジェクト」タブで、関連付け先のデータモデルオブジェクトが、関連付け元のデータモデルオブジェクトの下にネストされます。ネストされたデータモデルが最上位のオブジェクトである場合は、「データモデルオブジェクト」タブにもそのデータモデルが個別に表示されます。この場合、ネストされた階層の内側と外側に 1 つずつデータモデルのエントリが表示されるので、フォームの作成者が混乱する可能性があります。関連するデータモデルオブジェクトをネストされた階層内だけで表示するには、そのデータモデルオブジェクトの「トップレベルオブジェクト」プロパティを無効にします。
-
選択したデータモデルオブジェクトの読み取りサービスと書き込みサービスを選択します。サービスの引数が表示されます。
従業員データソースに対して設定されている読み取りサービスと書き込みサービス
-
読み取りサービスの引数に表示されている を選択して、ユーザープロファイル属性、リクエスト属性またはリテラル値にその引数を連結し、連結値を指定します。
-
「完了」を選択して引数を保存し、もう一度「完了」を選択してプロパティを保存します。次に、「保存」を選択してフォームデータモデル(FDM)を保存します。
バインド読み取りサービスの引数 bindargument
連結値に基づいて、バインド読み取りサービスの引数をユーザープロファイル属性、リクエスト属性またはリテラル値に連結します。この値が引数としてサービスに渡され、指定した値に関連付けられた詳細がデータソースから取得されます。
リテラル値 literal-value
連結先 ドロップダウンメニューから「リテラル」を選択し、「連結値」フィールドに値を入力します。値に関連付けられている詳細がデータソースから取得されます。静的な値に関連付けられた詳細を取得するには、このオプションを使用します。
この例では、4367655678 に関連付けられた詳細が、mobilenum
引数の値としてデータソースから取得されます。モバイル番号の引数に値を渡す場合、関連する詳細には、顧客名、顧客の住所、市区町村などのプロパティを含めることができます。
ユーザープロファイルの属性 user-profile-attribute
連結先 ドロップダウンメニューから「ユーザープロファイル属性」を選択し、「連結値」フィールドに属性名を入力します。Experience Manager インスタンスにログインしたユーザーの詳細は、属性名に基づいてデータソースから取得されます。
「連結値」フィールドで指定する属性名には、ユーザーの属性名までの完全な連結パスを含める必要があります。以下の URL を開いて、CRXDE のユーザー詳細にアクセスします。
https://[server-name]:[port]/crx/de/index.jsp#/home/users/
この例では、grios
ユーザーの「連結値」フィールドに profile.empid
を指定します。
id
引数を使用してユーザープロファイルの empid
属性の値を取得し、それを引数として読み取りサービスに渡しています。ログインしたユーザーに関連付けられた empid
の従業員データモデルオブジェクトから、関連付けられたプロパティの値を読み取って返します。
リクエスト属性 request-attribute
リクエスト属性を使用して、データソースから関連付けられたプロパティを取得します。
-
連結先 ドロップダウンメニューから「リクエスト属性」を選択し、「連結値」フィールドに属性名を入力します。
-
head.jsp のオーバーレイを作成します。オーバーレイを作成するには、CRX DEを開き、
https://<server-name>:<port number>/crx/de/index.jsp#/libs/fd/af/components/page2/afStaticTemplatePage/head.jsp
ファイルをhttps://<server-name>:<port number>/crx/de/index.jsp#/apps/fd/af/components/page2/afStaticTemplatePage/head.jsp
にコピーしますnote note NOTE - 静的テンプレートを使用する場合は、head.jsp を以下の場所にオーバーレイします。
/libs/fd/af/components/page2/afStaticTemplatePage/head.jsp
- 編集可能なテンプレートを使用する場合は、aftemplatedpage.jsp を以下の場所でオーバーレイします。
/libs/fd/af/components/page2/aftemplatedpage/aftemplatedpage.jsp
- 静的テンプレートを使用する場合は、head.jsp を以下の場所にオーバーレイします。
-
リクエスト属性に paramMap を設定します。例えば、apps フォルダーの .jsp ファイルに以下のコードを含めます。
code language-javascript <%Map paraMap = new HashMap(); paraMap.put("<request_attribute>",request.getParameter("<request_attribute>")); request.setAttribute("paramMap",paraMap);
例えば、以下のコードを使用して、データソースから petid の値を取得します。
code language-javascript <%Map paraMap = new HashMap(); paraMap.put("petId",request.getParameter("petId")); request.setAttribute("paramMap",paraMap);%>
詳細は、リクエストで指定された属性名に基づいてデータソースから取得されます。
例えば、リクエストで属性を petid=100
と指定すると、属性値に関連付けられたプロパティがデータソースから取得されます。
関連付けの追加 add-associations
通常、データソース内のデータモデルオブジェクト間には関連付けが構築されています。この関連付けは、1 対 1 の場合もあれば、1 対多の場合もあります。例えば、1 人の従業員に対して複数の扶養家族を関連付けることができます。これを、1 対多の関連付けといいます。関連するデータモデルオブジェクトを接続するライン上では、「1:n
」として表示されます。それに対して、特定の従業員 ID で一意の従業員名が返される場合などは、1 対 1 の関連付けになります。
データソース内の関連データモデルオブジェクト(FDM)をフォームデータモデルに追加した場合、それらの関連付けは維持され、矢印の線で接続された状態で表示されます。フォームデータモデル(FDM)内の異なる複数のデータソース全体で、データモデルオブジェクト間に関連付けを作成することができます。
関連付けを追加するには:
-
データモデルオブジェクト上部のチェックボックスを選択して、データモデルオブジェクトを選択し「関連付けを追加」を選択します。関連付けを追加ダイアログが表示されます。
note note NOTE OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。フォームデータモデル(FDM)で関連付けを追加する際に、これらのナビゲーションプロパティを使用できます。詳しくは、OData サービスのナビゲーションプロパティの操作を参照してください。 関連付けを追加ダイアログが表示されます。
関連付けを追加ダイアログ
-
関連付けを追加ペインで、以下の操作を実行します。
- 関連付けのタイトルを入力します。
- 関連付けのタイプ(「1 対 1」または「1 対多」)を選択します。
- 関連付けるデータモデルオブジェクトを選択します。
- 選択したモデルオブジェクトからデータを読み取るための読み取りサービスを選択します。読み取りサービスの引数が表示されます。必要に応じて引数を編集し、関連付けるデータモデルオブジェクトのプロパティにその引数をバインドします。
以下に示す例では、「扶養家族」データモデルオブジェクトの読み取りサービスのデフォルト引数が
dependentid
になっています。「扶養家族」読み取りサービスのデフォルト引数が dependentid になっている
ただし、この引数は、関連付けるデータモデルオブジェクト間の共通プロパティ(この例の場合は
Employeeid
)でなければなりません。そのため、Employeeid
引数を「従業員」データモデルオブジェクトのid
プロパティにバインドして、関連付けられている扶養家族の詳細情報を「扶養家族」データモデルオブジェクトから取得する必要があります。更新後の引数とバインディング
「完了」を選択して、引数を保存します。
-
「完了」を選択して関連付けを保存し、「保存」をクリックしてフォームデータモデル(FDM)を保存します。
-
必要に応じて上記の手順を繰り返し、さらに関連付けを作成します。
プロパティの編集 properties
フォームデータモデル(FDM)内で追加されたデータモデルオブジェクト、それらのプロパティおよびサービスのプロパティを編集できます。
プロパティを編集するには:
-
フォームデータモデル(FDM)内のデータモデルオブジェクト、プロパティまたはサービスの横に表示されているチェックボックスを選択します。
-
「プロパティを編集」を選択します。選択したモデルオブジェクト、プロパティまたはサービスの プロパティを編集 ペインが開きます。
-
データモデルオブジェクト:読み取りサービスと書き込みサービスを指定し、引数を編集します。
-
プロパティ:プロパティのタイプ、サブタイプ、形式を指定します。選択したプロパティをデータモデルオブジェクトのプライマリキーにするかどうかを指定することもできます。
-
サービス:サービスの入力モデルオブジェクト、出力タイプおよび引数を指定します。Get サービスの場合は、配列を返すようにするかどうかを指定できます。
Get サービスのプロパティを編集ダイアログ
-
-
「完了」を選択してプロパティを保存し、「保存」を選択してフォームデータモデル(FDM)を保存します。
計算済みプロパティを作成 computed
計算済みプロパティとは、ルールまたは式に基づいて値が計算されるプロパティのことです。ルールを使用して、計算済みプロパティの値を、リテラル文字列、数値、数式の計算結果、フォームデータモデル(FDM)内の別のプロパティの値に設定できます。
例えば、既存の FirstName プロパティと LastName プロパティの値を組み合わせた値を持つ FullName という計算済みプロパティを作成することができます。そのためには、以下の手順を実行します。
-
FullName
という名前の新しいプロパティを作成し、データタイプとして String を設定します。 -
「計算済み」を有効にし、「完了」を選択してプロパティを作成します。
FullName という計算済みプロパティが作成されます。このプロパティの横に、計算済みプロパティであることを表すアイコンが表示されます。
-
FullName プロパティを選択して「ルールを編集」を選択します。ルールエディターウィンドウが表示されます。
-
ルールエディターウィンドウで、「作成」を選択します。「Set Value」ルールウィンドウが開きます。
オプション選択ドロップダウンで、「数式」を選択します。「フォームデータモデルのオブジェクト」オプションや「文字列」オプションを選択することもできます。
-
数式の最初のオブジェクトとして「FirstName」を選択し、2 番目のオブジェクトとして「LastName」を選択します。演算子として「プラス」を選択します。
「完了」、「閉じる」の順に選択して、ルールエディターウィンドウを閉じます。ルールは以下のようになります。
-
フォームデータモデル(FDM)で、「保存」を選択します。これで、計算済みプロパティが設定されました。
OData サービスのナビゲーションプロパティを操作 work-with-navigation-properties-of-odata-services
OData サービスでは、ナビゲーションプロパティを使用して、2 つのデータモデルオブジェクト間の関連付けが定義されます。これらのプロパティは、エンティティタイプまたは複合タイプで定義されます。例えば、サンプルの TripPin OData サービスのメタデータファイルから抽出した以下のコードの場合、Friends、BestFriend、Trips という 3 つのナビゲーションプロパティが Person エンティティに含まれています。
ナビゲーションプロパティについて詳しくは、「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>
フォームデータモデル(FDM)内で OData サービスを設定すると、そのフォームデータモデル(FDM)内のサービスを経由して、エンティティコンテナ内のすべてのナビゲーションプロパティを使用できるようになります。このサンプルの TripPin OData サービスでは、フォームデータモデル(FDM)内の GET LINK
サービスを使用して、Person
コンテナに含まれている 3 つのナビゲーションプロパティを読み取ることができます。
以下の図では、フォームデータモデル(FDM)内の GET LINK of Person /People
サービスがハイライト表示されています。これは、TripPin OData サービスの Person
エンティティに含まれている 3 つのナビゲーションプロパティを組み合わせたサービスです。
フォームデータモデル(FDM)の「サービス」タブに GET LINK
サービスを追加すると、サービス内で使用する出力モデルオブジェクトとナビゲーションプロパティを選択するための各種プロパティを編集できるようになります。例えば、以下の GET LINK of Person /People
サービスでは、出力モデルオブジェクトとして「Trip」を使用し、ナビゲーションプロパティとして「Trips」を使用しています。
この例では、出力モデルオブジェクトとして「Person」を選択し、ナビゲーションプロパティの引数として「Friends」または「BestFriend」を選択することもできます(どちらを選択するかは、「配列を返しますか?」ボタンが有効になっているか無効になっているかによって異なります)。
同様に、フォームデータモデル(FDM)で関連付けを追加する際に GET LINK
サービスを選択し、サービスのナビゲーションプロパティを設定することができます。ただし、ナビゲーションプロパティを選択するには、連結先 ドロップダウンメニューで「リテラル」に設定されている必要があります。
サンプルデータの生成と編集 sample
フォームデータモデル(FDM)エディターを使用して、計算済みプロパティを含むすべてのデータモデルオブジェクトプロパティのサンプルデータを、フォームデータモデル(FDM)内で生成できます。各プロパティで設定されたデータタイプに基づいて、一連のランダムな値がサンプルデータとして生成されます。このサンプルデータを編集して保存することもできます。サンプルデータを再生成した場合も、編集したサンプルデータは保存されたままになります。
サンプルデータを生成して編集するには、以下の手順を実行します。
-
フォームデータモデル(FDM)を開いて「サンプルデータを編集」を選択します。サンプルデータが生成され、サンプルデータ編集ウィンドウに表示されます。
-
サンプルデータを編集 ウィンドウでデータを編集して「保存」を選択します。
データモデルオブジェクトとサービスのテスト test-data-model-objects-and-services
これまでの手順で設定したフォームデータモデル(FDM)を使用する前に、設定したデータモデルオブジェクトとサービスが正しく動作するかどうかをテストすることをお勧めします。データモデルオブジェクトとサービスをテストするには、以下の手順を実行します。
-
フォームデータモデル(FDM)でデータモデルオブジェクトまたはサービスを選択して、「モデルオブジェクトをテスト」または「サービスをテスト」をクリックします。
フォームデータモデルをテストウィンドウが表示されます。
-
フォームデータモデルをテスト ウィンドウの入力ペインで、テストするデータモデルオブジェクトまたはサービスを選択します。
-
テストコードで引数の値を指定して「テスト」を選択します。テストが成功すると、出力ペインに出力情報が返されます。
同様の方法で、フォームデータモデル(FDM)内の他のデータモデルオブジェクトやサービスをテストすることができます。
入力データの自動検証 automated-validation-of-input-data
フォームデータモデル(FDM)は、DermisBridge API を呼び出す際に入力として受け取ったデータを(フォームデータモデルで使用可能な検証条件に基づいて)検証します。検証は、API の呼び出しに使用されるクエリオブジェクトに設定された ValidationOptions
フラグに基づいて行われます。
このフラグは、以下のいずれかの値に設定できます。
- 完全:FDM は、すべての制約に基づいて検証を実行します
- オフ:検証なし
- 基本:FDM は、「required」制約および「nullable」制約に基づいて検証を実行します
ValidationOptions
フラグに値が設定されていない場合、入力データに対して 基本 検証が実行されます。
以下に、検証フラグを 完全 に設定する例を示します。
operationOptions.setValidationOptions(ValidationOptions.FULL);
値が属性に対して定義されたデータタイプと一致しない場合、DermisBridge API は
ValidationOptions
フラグの値に関係なく例外を表示します。ログレベルが「デバッグ」に設定されている場合は、error.log ファイルにエラーが記録されます。フォームデータモデル(FDM)は、データタイプ制約のリストに基づいて入力データを検証します。入力データに対する制約のリストは、データソースによって異なる場合があります。
以下の表に、データソースに基づく入力データの制約事項を示します。
この例では、Swagger ファイルで定義されている最大制約、最小制約、必須制約に基づいて入力データが検証されます。注文 ID が存在し、その値が 1~10 の場合にのみ、入力データは検証条件を満たします。
parameters: [
{
name: "orderId",
in: "path",
description: "ID of pet that must be fetched",
required: true,
type: "integer",
maximum: 10,
minimum: 1,
format: "int64"
}
]
入力データが検証条件を満たさない場合は、例外が表示されます。ログレベルが「デバッグ」に設定されている場合は、error.log ファイルにエラーが記録されます。例:
21.01.2019 17:26:37.411 *ERROR* com.adobe.aem.dermis.core.validation.JsonSchemaValidator {"errorCode":"AEM-FDM-001-044","errorMessage":"Input validations failed during operation execution.","violations":{"/orderId":["numeric instance is greater than the required maximum (maximum: 10, found: 16)"]}}
次の手順 next-steps
これで、作業用のフォームデータモデル(FDM)を、アダプティブフォームのワークフローで使用する準備が整いました。次の手順として、実際にこのフォームデータモデル(FDM)を使用します。詳しくは、フォームデータモデル(FDM)の使用を参照してください。