チュートリアル:フォームデータモデルの作成 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 です。
-
選択 インストール/更新. 「Upload / Install Bundles」ダイアログが表示されます。
-
「ファイル を選択」を選択して、 JDBC ドライバーの OSGi バンドルを参照し、MySQL選択します。「開始バンドルおよび更新パッケージ 」を選択し 、「インストール」または「更新 」を選択します。 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 認証をサポートしていません。Web コンソールAEM https://localhost:4502/system/console/configMgr に移動し、「Apache Sling 接続 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」に設定します。
他のプロパティはデフォルト値🔗のままにして、「保存 」を選択します。
以下のような設定が作成されます。
-
手順 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 データベースから取得するサービスが設定されました。
-
-
更新 サービスを選択し、[ 編集 プロパティ ] を選択します。プロパティダイアログが開きます。
-
プロパティを編集ダイアログで、以下を指定します。
-
タイトル:サービスのタイトルを指定します。例えば、「配送先住所を更新」などです。
-
説明:サービスの詳細な機能を含む説明を指定します。例:
このサービスは、配送先住所とそれに関連するフィールドを MySQL データベース内で更新します
-
入力モデルオブジェクト:顧客データを保管するスキーマを選択します。例:
customerdetail スキーマ
-
出力タイプ:「ブール演算式」を選択します。
-
引数:引数 名 、ID および 顧客詳細 を選択します。
「完了」を選択します。MySQL データベース内の顧客の詳細情報を更新する update サービスが設定されました。
-
-
フォームデータモデル内のデータモデルオブジェクトとサービスが設定されています。これで、フォームデータモデルをテストできます。
手順 4:フォームデータモデルをテストする test-fdm
データモデルオブジェクトとサービスをテストすることにより、フォームデータモデルが正しく設定されているかどうかを確認することができます。
テストを実行するには、以下の手順を実行します。
-
モデル タブに移動し、customerdetails データモデルオブジェクトを選択して、「モデルオブジェクト テストを選択します。
-
モデル/サービスのテストウィンドウの「モデル/サービスを選択」ドロップダウンで「モデルオブジェクトを読み込み」を選択します。
-
customerdetails セクションで、構成済みのMySQLデータベースに存在する id 引数の値 を指定し、[テスト] を選択します 。
指定した id 引数に関連付けられている顧客の詳細情報がデータベースから取得され、以下のように Output セクションに表示されます。
-
同様に、書き込みモデルオブジェクトおよびサービスをテストできます。
次の例では、更新サービスは、データベース内の ID 7102715 のアドレスの詳細を正常に更新します。
これで、id 7107215 に対してモデルの読み取りサービスを再度テストすると、次に示すように、更新された顧客の詳細がフェッチされて表示されます。