これは、最初のアダプティブフォームを作成するシリーズを構成するチュートリアルです。チュートリアルの使用例全体を理解、実行、デモするために、シリーズを時系列に沿って実施することをお勧めします。
AEM Forms データ統合モジュールを使用すると、AEMユーザープロファイル、RESTful Web サービス、SOAP ベースの Web サービス、OData サービス、リレーショナルデータベースなど、様々なバックエンドデータソースからフォームデータモデルを作成できます。 フォームデータモデル内でデータモデルオブジェクトおよびサービスを設定し、アダプティブフォームに関連付けることができます。アダプティブフォームのフィールドは、データモデルオブジェクトのプロパティに連結されます。このサービスを使用すると、アダプティブフォームに事前に入力し、送信されたフォームデータをデータモデルオブジェクトに書き込むことができます。
フォームデータの統合機能とフォームデータモデルについて詳しくは、「AEM Forms のデータ統合機能」を参照してください。
このチュートリアルでは、フォームデータモデルの準備、作成、設定およびアダプティブフォームとの関連付けの手順について説明します。このチュートリアルを完了すると、次の操作を実行できるようになります。
フォームデータモデルは、次のように表示されます。
A. 設定済みのデータソース B. データソーススキーマ C. 利用可能なサービス D. データモデルオブジェクト E. 設定済みサービス
開始する前に、次の点を確認してください。
様々なタイプのデータソースを設定して、フォームデータモデルを作成できます。このチュートリアルでは、サンプルデータが取り込まれた 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 をタップします。「バンドルのアップロード/インストール」ダイアログが表示されます。
「ファイルを選択」をタップし、MySQL JDBC ドライバーの OSGi バンドルを探して選択します。「バンドルを開始」と「パッケージを更新」を選択して「インストールまたはアップデート」をタップします。MySQL の Oracle Corporation’s JDBC ドライバーがアクティブになっていることを確認します。ドライバーがインストールされます。
MySQL データベースをデータソースとして設定します。
AEM web コンソール(https://localhost:4502/system/console/configMgr)に移動します。
「Apache Sling Connection Pooled DataSource」という設定を探し、その設定をタップして編集モードで開きます。
設定ダイアログで、次の詳細を指定します。
jdbc:mysql://'server':3306/weretail?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
です。MySQL データベースがファイアウォールの内側にある場合、データベースホスト名はパブリック DNS ではありません。データベースの IP アドレスを AEM ホストマシンの /etc/hosts ファイルに追加する必要があります。
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 をタップします。
以下のような設定が作成されます。
AEM Forms には、設定済みデータソースからフォームデータモデルを作成するための直感的なユーザーインターフェイスが用意されています。1 つのフォームデータモデル内で複数のデータソースを使用することができます。このユースケースでは、既に設定されている MySQL データソースを使用します。
フォームデータモデルを作成するには、以下の手順を実行します。
AEM オーサーインスタンスで、フォーム/データ統合に移動します。
作成/フォームデータモデルの順にタップします。
フォームデータモデル作成ダイアログで、フォームデータモデルの名前を指定します。例えば、customer-shipping-billing-details などを指定します。「次へ」をタップします。
データソース選択画面に、すべての設定済みデータソースが一覧表示されます。「WeRetailMySQL」データソースを選択して「作成」をタップします。
customer-shipping-billing-details というフォームデータモデルが作成されます。
フォームデータモデルを設定するには、次の操作を行います。
フォームデータモデルを設定するには、次の手順に従います。
AEM オーサーインスタンスで、フォーム/データ統合に移動します。デフォルトの URL は、https://localhost:4502/aem/forms.html/content/dam/formsanddocuments-fdm です。
前の手順で作成した customer-shipping-billing-details というフォームデータモデルが表示されます。編集モードで開きます。
選択したデータソース WeRetailMySQL がフォームデータモデルで設定されます。
データソースツリーで WeRailMySQL データソースを展開します。weretail/customerdetails スキーマで、以下のデータモデルオブジェクトをフォームデータモデルに対して選択します。
データモデルオブジェクト:
サービス:
「選択項目を追加」をタップして、フォームデータモデルに対して選択したデータモデルオブジェクトおよびサービスを追加します。
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 サービスが設定されました。
フォームデータモデル内のデータモデルオブジェクトとサービスが設定されています。これで、フォームデータモデルをテストできます。
データモデルオブジェクトとサービスをテストすることにより、フォームデータモデルが正しく設定されているかどうかを確認することができます。
テストを実行するには、以下の手順を実行します。
「モデル」タブに移動し、customerdetails データモデルオブジェクトを選択し、「モデルオブジェクトをテスト」をタップします。
モデル/サービスのテストウィンドウの「モデル/サービスを選択」ドロップダウンで「モデルオブジェクトを読み込み」を選択します。
「customerdetails」セクションで、設定済み MySQL データベース内の id 引数を指定して「テスト」をタップします。
指定した id 引数に関連付けられている顧客の詳細情報がデータベースから取得され、以下のように Output セクションに表示されます。
同様に、書き込みモデルオブジェクトおよびサービスをテストできます。
次の例では、更新サービスは、データベース内の ID 7102715 のアドレスの詳細を正常に更新します。
この状態で、7102715 という ID に対して読み取りモデルサービスのテストをもう一度実行すると、以下のように、更新後の顧客の詳細情報が画面に表示されます。