チュートリアル:フォームデータモデルの作成 tutorial-create-form-data-model
これは、最初のアダプティブフォームを作成するシリーズを構成するチュートリアルです。チュートリアル内のユースケースを理解して実際に操作できるように、このシリーズのチュートリアルを最初から順に学習することをお勧めします。
チュートリアルについて about-the-tutorial
AEM Forms のデータ統合モジュールを使用すると、AEM ユーザープロファイル、RESTful web サービス、SOAP ベースの web サービス、OData サービス、リレーショナルデータベースなど、バックエンドの様々なデータソースからフォームデータモデルを作成できます。フォームデータモデル内でデータモデルオブジェクトおよびサービスを設定し、アダプティブフォームに関連付けることができます。アダプティブフォームのフィールドは、データモデルオブジェクトのプロパティに連結されます。このサービスを使用すると、アダプティブフォームに事前に入力し、送信されたフォームデータをデータモデルオブジェクトに書き込むことができます。
フォームデータの統合機能とフォームデータモデルについて詳しくは、「AEM Forms のデータ統合機能」を参照してください。
このチュートリアルでは、フォームデータモデルの準備、作成、設定およびアダプティブフォームとの関連付けの手順について説明します。このチュートリアルを完了すると、次の操作を実行できるようになります。
フォームデータモデルは、次のように表示されます。
A. 設定済みのデータソース B. データソーススキーマ C. 利用可能なサービス D. データモデルオブジェクト E. 設定済みサービス
前提条件 prerequisites
開始する前に、次の点を確認してください。
- 「最初のアダプティブフォームを作成する」の「前提条件」セクションの記載に従って、MySQL データベースにサンプルデータが取り込まれていること
- 「JDBC データベースドライバーのバンドル」の説明に従って、MySQL JDBC ドライバー用の OSGi バンドルが設定されていること
- 最初のチュートリアル「アダプティブフォームの作成」の説明に従って、アダプティブフォームが設定されていること
手順 1:MySQL データベースをデータソースとして設定する config-database
様々なタイプのデータソースを設定して、フォームデータモデルを作成できます。このチュートリアルでは、サンプルデータが取り込まれた MySQL データベースを設定します。その他のサポート対象データソースとその設定方法について詳しくは、AEM Forms データ統合を参照してください。
MySQL データベースを設定するには、次の手順を実行します。
-
MySQL データベース用の JDBC ドライバーを OSGi バンドルとしてインストールします。
-
MySQL JDBC ドライバー OSGi バンドルを
http://www.java2s.com/ref/jar/download-orgosgiservicejdbc100jar-file.html
からダウンロードします。 -
AEM Forms のオーサーインスタンスに管理者としてログインし、AEM Web コンソールのバンドルに移動します。デフォルトの URL は、https://localhost:4502/system/console/bundles です。
-
「Install/Update」を選択します。「Upload / Install Bundles」ダイアログが表示されます。
-
「Choose File」を選択し、MySQL JDBC ドライバーの OSGi バンドルを探して選択します。「Start Bundle」と「Refresh Packages」を選択して「Install or Update」を選択します。MySQL の Oracle Corporation’s JDBC ドライバーがアクティブになっていることを確認します。ドライバーがインストールされます。
-
-
MySQL データベースをデータソースとして設定します。
-
AEM web コンソール(https://localhost:4502/system/console/configMgr)に移動します。
-
「Apache Sling Connection Pooled DataSource」という設定を探し、その設定を選択して編集モードで開きます。
-
設定ダイアログで、次の詳細を指定します。
- データソース名: 任意の名前を指定できます。例えば、「WeRetailMySQL」などを指定します。
- DataSource サービスのプロパティ名:DataSource 名を含むサービスプロパティの名前を指定します。データソースインスタンスを OSGi サービスとして登録する際に指定されます。例えば、datasource.name です。
- JDBC ドライバークラス:JDBC ドライバーの Java™ クラス名を指定します。MySQL データベースの場合は、com.mysql.jdbc.Driver と指定します。
- JDBC connection URI:データベースの接続 URL を指定します。ポート 3306 およびスキーマ
weretail
で実行される MySQL データベースの場合、URL はjdbc:mysql://'server':3306/weretail?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
です。
note note NOTE MySQL データベースがファイアウォールの内側にある場合、データベースホスト名はパブリック DNS ではありません。データベースの IP アドレスを AEM ホストマシンの /etc/hosts ファイルに追加する必要があります。 - Username:データベースのユーザー名を指定します。データベースとの接続を確立するには、JDBC ドライバーを有効にする必要があります。
- Password:データベースのパスワードを指定します。データベースとの接続を確立するには、JDBC ドライバーを有効にする必要があります。
note note NOTE AEM Forms は、MySQL の NT 認証をサポートしていません。https://localhost:4502/system/console/configMgr で AEM web コンソールに移動し、「Apache Sling Connection Pooled Datasource」を検索します。「JDBC 接続 URI」プロパティでは、「integratedSecurity」の値を False に設定し、作成したユーザー名とパスワードを使用して MySQL データベースに接続します。 -
Test on Borrow: は Test on Borrow オプションを有効にします。
-
Test on Return: は Test on Return オプションを有効にします。
-
検証クエリ: プールからの接続を検証する SQL SELECT クエリを指定します。クエリは、1 行以上の行を返す必要があります。例えば、customerdetails から * を選択します。
-
Transaction Isolation:このオプションの値を「READ_COMMITTED」に設定します。
上記以外のプロパティはデフォルト値のままにして「Save」を選択します。
以下のような設定が作成されます。
-
手順 2:フォームデータモデルを作成する create-fdm
AEM Forms には、設定済みデータソースからフォームデータモデルを作成するための直感的なユーザーインターフェイスが用意されています。1 つのフォームデータモデル内で複数のデータソースを使用することができます。このユースケースでは、既に設定されている MySQL データソースを使用できます。
フォームデータモデルを作成するには、以下の手順を実行します。
-
AEM オーサーインスタンスで、フォーム/データ統合 に移動します。
-
「作成/フォームデータモデル」を選択します。
-
フォームデータモデル作成ダイアログで、フォームデータモデルの 名前 を指定します。例えば、customer-shipping-billing-details などを指定します。「次へ」を選択します。
-
データソース選択画面に、すべての設定済みデータソースが一覧表示されます。「WeRetailMySQL」データソースを選択して「作成」を選択します。
customer-shipping-billing-details というフォームデータモデルが作成されます。
手順 3:フォームデータモデルを設定する config-fdm
フォームデータモデルを設定するには、次の操作を行います。
- データモデルオブジェクトとサービスを追加する
- データモデルオブジェクトの読み取りサービスと書き込みサービスの設定
フォームデータモデルを設定するには、次の手順に従います。
-
AEM オーサーインスタンスで、フォーム/データ統合 に移動します。デフォルトの URL は、https://localhost:4502/aem/forms.html/content/dam/formsanddocuments-fdm です。
-
前の手順で作成した customer-shipping-billing-details というフォームデータモデルが表示されます。編集モードで開きます。
選択したデータソース WeRetailMySQL がフォームデータモデルで設定されます。
-
データソースツリーで WeRailMySQL データソースを展開します。weretail/customerdetails スキーマで、以下のデータモデルオブジェクトをフォームデータモデルに対して選択します。
-
データモデルオブジェクト:
- id
- name
- shippingAddress
- 市区町村
- ステート
- 郵便番号
-
サービス:
- 取得
- 更新
「選択項目を追加」を選択して、フォームデータモデルに対して選択したデータモデルオブジェクトおよびサービスを追加します。
note note NOTE JDBC データソースのデフォルトの get サービス、update サービス、insert サービスは、フォームデータモデルでそのまま使用することができます。 -
-
データモデルオブジェクトに読み取りサービスおよび書き込みサービスを設定します。
-
customerdetails データモデルオブジェクトを選択して、「プロパティを編集」を選択します。
-
「読み取りサービス」ドロップダウンで「get」を選択します。customerdetails データモデルオブジェクトのプライマリキーである id 引数が自動的に追加されます。タグ を選択して、次のように引数を設定します。
-
同様に、書き込みサービスとして「更新」を選択します。customerdetails オブジェクトが引数として自動的に追加されます。引数は次のように設定されます。
id 引数を追加して以下のように設定します。
-
「完了」を選択して、データモデルオブジェクトのプロパティを保存します。 次に「保存」を選択して、フォームデータモデルを保存します。
get サービスと update サービスが、データモデルオブジェクトのデフォルトのサービスとして追加されます。
-
-
「サービス」タブに移動し、get サービスと update サービスを設定します。
-
get サービスを選択して「プロパティの編集」を選択します。プロパティダイアログが開きます。
-
プロパティを編集ダイアログで、以下のプロパティを指定します。
-
タイトル:サービスのタイトルを指定します。例:配送先住所を取得します。
-
説明:サービスの詳細な機能を含む説明を指定します。例:
このサービスは MySQL データベースから配送先住所などの顧客についての詳細を取得します
-
出力モデルオブジェクト:顧客データを保管するスキーマを選択します。例:
customerdetail スキーマ
-
配列を返す:「配列を返す」オプションを無効にします。
-
引数:ID という引数を選択します。
「完了」を選択します。これで、顧客の詳細情報を MySQL データベースから取得するサービスが設定されました。
-
-
update サービスを選択して「プロパティの編集」を選択します。プロパティダイアログが開きます。
-
プロパティを編集ダイアログで、以下を指定します。
-
タイトル:サービスのタイトルを指定します。例えば、「配送先住所を更新」などです。
-
説明:サービスの詳細な機能を含む説明を指定します。例:
このサービスは、配送先住所とそれに関連するフィールドを MySQL データベース内で更新します
-
入力モデルオブジェクト:顧客データを保管するスキーマを選択します。例:
customerdetail スキーマ
-
出力タイプ:「ブール演算式」を選択します。
-
引数:ID という引数と customerdetails という引数を選択します。
「完了」を選択します。MySQL データベース内の顧客の詳細情報を更新する update サービスが設定されました。
-
-
フォームデータモデル内のデータモデルオブジェクトとサービスが設定されています。これで、フォームデータモデルをテストできます。
手順 4:フォームデータモデルをテストする test-fdm
データモデルオブジェクトとサービスをテストすることにより、フォームデータモデルが正しく設定されているかどうかを確認することができます。
テストを実行するには、以下の手順を実行します。
-
「モデル」タブに移動し、customerdetails データモデルオブジェクトを選択し、「モデルオブジェクトをテスト」を選択します。
-
モデル/サービスのテストウィンドウの「モデル/サービスを選択」ドロップダウンで「モデルオブジェクトを読み込み」を選択します。
-
「customerdetails」セクションで、設定済み MySQL データベース内の id 引数を指定して「テスト」を選択します。
指定した id 引数に関連付けられている顧客の詳細情報がデータベースから取得され、以下のように Output セクションに表示されます。
-
同様に、書き込みモデルオブジェクトおよびサービスをテストできます。
次の例では、更新サービスは、データベース内の ID 7102715 のアドレスの詳細を正常に更新します。
この状態で、7102715 という ID に対して読み取りモデルサービスのテストをもう一度実行すると、以下のように、更新後の顧客の詳細情報が画面に表示されます。