このチュートリアルは、最初の対話型通信を作成するシリーズのステップです。 チュートリアル内のユースケースを理解して実際に操作できるように、このシリーズのチュートリアルを最初から順に学習することをお勧めします。
AEM Formsデータ統合モジュールを使用すると、AEMユーザープロファイル、RESTful Webサービス、SOAPベースのWebサービス、ODataサービス、およびリレーショナルデータベースなど、異なるバックエンドデータソースからフォームデータモデルを作成できます。 フォームデータモデル内でデータモデルオブジェクトとサービスを設定し、そのフォームデータモデルをアダプティブフォームに関連付けることができます。アダプティブフォームのフィールドは、データモデルオブジェクトのプロパティに連結されます。フォームデータモデル内のサービスを使用して、アダプティブフォームに事前にデータを取り込み、送信されたフォームデータをデータモデルオブジェクトに書き込むことができます。
フォームデータの統合機能とフォームデータモデルについて詳しくは、「AEM Forms のデータ統合機能」を参照してください。
このチュートリアルでは、フォームデータモデルの準備、作成、設定を行い、そのフォームデータモデルをインタラクティブ通信に関連付けるための手順について、順を追って説明します。このチュートリアルを完了すると、次の操作を実行できるようになります。
フォームデータモデルは以下に類似しています。
A. 設定済みデータソース B. データソーススキーマC. 利用可能なサービス Available Services. Data modelオブジェクトE Configuredサービス
作業を開始する前に、以下の条件が満たされているかどうかを確認してください。
インタラクティブ通信の作成にはデータベースが不可欠です。このチュートリアルではデータベースを使用して、インタラクティブ通信のフォームデータモデルと永続性機能を表示します。顧客、請求書、および呼び出し表を含むデータベースを設定します。
以下の画像は、顧客テーブルのサンプルデータを示しています。
次のDDLステートメントを使用して、データベースにcustomerテーブルを作成します。
CREATE TABLE `customer` (
`mobilenum` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
`address` varchar(45) NOT NULL,
`alternatemobilenumber` int(11) DEFAULT NULL,
`relationshipnumber` int(11) DEFAULT NULL,
`customerplan` varchar(45) DEFAULT NULL,
PRIMARY KEY (`mobilenum`),
UNIQUE KEY `mobilenum_UNIQUE` (`mobilenum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
次のDDL文を使用して、データベースにbillsテーブルを作成します。
CREATE TABLE `bills` (
`billplan` varchar(45) NOT NULL,
`latepayment` decimal(4,2) NOT NULL,
`monthlycharges` decimal(4,2) NOT NULL,
`billdate` date NOT NULL,
`billperiod` varchar(45) NOT NULL,
`prevbal` decimal(4,2) NOT NULL,
`callcharges` decimal(4,2) NOT NULL,
`confcallcharges` decimal(4,2) NOT NULL,
`smscharges` decimal(4,2) NOT NULL,
`internetcharges` decimal(4,2) NOT NULL,
`roamingnational` decimal(4,2) NOT NULL,
`roamingintnl` decimal(4,2) NOT NULL,
`vas` decimal(4,2) NOT NULL,
`discounts` decimal(4,2) NOT NULL,
`tax` decimal(4,2) NOT NULL,
PRIMARY KEY (`billplan`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
次のDDLステートメントを使用して、データベース内に呼び出しテーブルを作成します。
CREATE TABLE `calls` (
`mobilenum` int(11) DEFAULT NULL,
`calldate` date DEFAULT NULL,
`calltime` varchar(45) DEFAULT NULL,
`callnumber` int(11) DEFAULT NULL,
`callduration` varchar(45) DEFAULT NULL,
`callcharges` decimal(4,2) DEFAULT NULL,
`calltype` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
呼び出しテーブルには、呼び出し日、呼び出し時間、呼び出し回数、呼び出し時間、呼び出し料金などの呼び出しの詳細が含まれます。 customerテーブルは、「モバイル番号(mobilenum)」フィールドを使用して呼び出しテーブルにリンクされています。 customerテーブルにリストされているモバイル番号ごとに、callsテーブルに複数のレコードがあります。 例えば、callsテーブルを参照して、1457892541モバイル番号の呼び出しの詳細を取得できます。
billsテーブルには、請求日、請求期間、月額料金、通話料金などの請求書の詳細が含まれます。 customerテーブルは、請求書計画フィールドを使用してbillsテーブルにリンクされます。 customerテーブルには、各顧客に関連付けられたプランがあります。 billsテーブルには、既存のすべてのプランの価格設定の詳細が含まれます。 例えば、Sarah のプランの詳細を顧客テーブルから取得し、この情報を使って請求テーブルから価格の詳細を取得することができます。
各種のデータソースを設定して、フォームデータモデルを作成することができます。このチュートリアルでは、サンプルデータが取り込まれた MySQL データベースの設定を行います。サポートされている他のデータソースとその設定方法については、「AEM Forms のデータ統合機能」を参照してください。
MySQL データベースを設定するには、以下の手順を実行します。
MySQLデータベース用のJDBCドライバーをOSGiバンドルとしてインストールします。
AEM Forms のオーサーインスタンスに管理者としてログインし、AEM Web コンソールバンドルに移動します。デフォルトのURLはhttps://localhost:4502/system/console/bundlesです。
「インストール/更新」をタップします。 「Upload / Install Bundles」ダイアログが表示されます。
「Choose File」をタップし、MySQL JDBC ドライバーの OSGi バンドルを探して選択します。「開始バンドル」と「パッケージを更新」を選択し、「インストール」または「更新」をタップします。 Oracle が提供する MySQL の JDBC ドライバーがアクティブになっていることを確認します。このドライバーは、既にインストールされています。
以下の手順により、MySQL データベースをデータソースとして設定します。
AEM Webコンソール(https://localhost:4502/system/console/configMgr)に移動します。
「Apache Sling Connection Pooled DataSource」という設定を探し、その設定をタップして編集モードで開きます。
設定ダイアログで、以下の詳細情報を指定します。
Datasource name:任意のデータソース名を指定します。例えば、MySQLを指定します。
DataSource service property name:データソース名を保管するサービスプロパティの名前を指定します。この名前は、データソースインスタンスを OSGi サービスとして登録する際に指定されます。例えば、「datasource.name」などを指定します。
JDBC driver class:JDBC ドライバーの Java クラス名を指定します。MySQLデータベースの場合は、com.mysql.jdbc.Driverを指定します。
JDBC connection URI:データベースの接続 URL を指定します。ポート3306およびスキーマtelecaで実行されるMySQLデータベースの場合、URLは次のようになります。jdbc:mysql://'server':3306/teleca?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
Username:データベースのユーザー名を指定します。データベースとの接続を確立するには、JDBC ドライバーを有効にする必要があります。
Password:データベースのパスワードを指定します。データベースとの接続を確立するには、JDBC ドライバーを有効にする必要があります。
借入時にテスト:借入時に テストを 有効に します。
リターン時のテスト:リターン時の テストの オプションを有効にします。
Validation Query:プールからの接続状態を確認するための SQL SELECT クエリを指定します。このクエリでは、1 行以上の行が返される必要があります。例えば、customerから*を選択します。
Transaction Isolation:このオプションの値を「READ_COMMITTED」に設定します。
その他のプロパティはデフォルトの値のままにし、「保存」をタップします。
以下のような設定が作成されます。
AEM Formsは、設定済みのデータソースからフォームデータモード](https://helpx.adobe.com/jp/experience-manager/6-3/forms/using/data-integration.html#main-pars_header_1524967585)lを作成する、直観的なユーザーインターフェイスを提供します。 [1 つのフォームデータモデル内で複数のデータソースを使用することができます。本チュートリアルのユースケースでは、MySQL をデータソースとして使用します。
フォームデータモデルを作成するには、以下の手順を実行します。
AEM オーサーインスタンスで、フォーム/データ統合に移動します。
作成/フォームデータモデルの順にタップします。
フォームデータモデルを作成ウィザードで、フォームデータモデルの名前を指定します。 例えば、FDM_Create_First_ICのように指定します。 「次へ」をタップします。
データソース選択画面に、すべての設定済みデータソースが一覧表示されます。「MySQLデータソース」を選択し、「作成」をタップします。
「完了」をクリックします。FDM_Create_First_ICフォーム・データ・モデルが作成されます。
フォームデータモデルの設定には以下が含まれます。
AEMオーサーインスタンスで、Forms > データ統合に移動します。 デフォルトのURLはhttps://localhost:4502/aem/forms.html/content/dam/formsanddocuments-fdmです。
前に作成したFDM_Create_First_ICフォームデータモデルをここに示します。 これを選択し、「編集」をタップします。
選択したデータソースMySQLがデータソースウィンドウに表示されます。
MySQL データソースツリーを展開します。telecaスキーマから次のデータモデルオブジェクトおよびサービスを選択します。
データモデルオブジェクト:
Services:
「選択項目を追加」をタップして、選択したデータモデルオブジェクトとサービスをフォームデータモデルに追加します。
請求、通話および顧客のデータモデルオブジェクトは、「モデル」タブの右側のペインに表示されます。get サービスと update サービスは、「サービス」タブに表示されます。
計算済みプロパティとは、ルールまたは式に基づいて値が計算されるプロパティのことです。ルールを使用して、計算済みプロパティの値を、リテラル文字列、数値、数式の計算結果、フォームデータモデル内の別のプロパティの値に設定することができます。
ユースケースに基づき、以下の数式を使って請求データモデルオブジェクトの usagecharges 計算済み子プロパティを作成します。
請求データモデルオブジェクト用の計算済み子プロパティを作成するには、次の手順を実行します。
billsデータモデルオブジェクトの上部にあるチェックボックスを選択して選択し、「子プロパティを作成」をタップします。
子プロパティを作成ペインで、
「ルールを編集」をタップして、ルールエディターを開きます。
「作成」をタップします。「値を設定」ルールウィンドウが開きます。
オプション選択ドロップダウンで、「数式」を選択します。
数学式で、callchargesおよびconfcallchargesを最初と2番目のオブジェクトとしてそれぞれ選択します。 演算子として「プラス」を選択します。数式内の領域をタップして「拡張式」をタップし、smscharges、internetcharges、roamingnational、roamingintnl、および vas を数式のオブジェクトに追加します。
次の画像はルールエディター内の数式を示しています。
「完了」をタップします。ルールがルールエディターで作成されます。
「を閉じる」をタップして、ルールエディターウィンドウを閉じます。
データモデルオブジェクトが定義されたら、オブジェクト間の関連付けを作成できます。この関連付けは、1 対 1 の場合もあれば、1 対多の場合もあります。例えば、1 人の従業員に対して複数の扶養家族を関連付けることができます。これを、1 対多の関連付けといいます。関連するデータモデルオブジェクトを接続するライン上では、「1:n」として表示されます。それに対して、特定の従業員 ID で一意の従業員名が返される場合などは、1 対 1 の関連付けになります。
データソース内の関連するデータモデルオブジェクトをフォームデータモデルに追加すると、関連付けは保持され、矢印で結ばれた状態で表示されます。
ユースケースに基づき、データモデルオブジェクト間で以下の関連付けを作成します。
関連付け | データモデルオブジェクト |
---|---|
1:n | customer:calls(月々の請求書で、1 人の顧客と複数の通話を関連付けられます) |
1:1 | customer:bills(特定の月の請求書で、1 つの請求を 1 人の顧客と関連付けます) |
データモデルオブジェクト間で関連性を作成するには、以下の手順を実行します。
customerデータモデルオブジェクトの上部にあるチェックボックスを選択して選択し、「追加関連付け」をタップします。 追加関連付けプロパティウィンドウが開きます。
関連付けを追加ペインで、以下の操作を実行します。
関連付けのタイトルを入力します。これはオプションのフィールドです。
「タイプ」ドロップダウンリストから「1 対多」を選択します。
「モデルオブジェクト」ドロップダウンリストから calls を選択します。
「サービス」ドロップダウンリストから get を選択します。
追加をタップして、customerデータモデルオブジェクトを呼び出しデータモデルオブジェクトにプロパティを使用してリンクします。 ユースケースに基づいて、通話データモデルオブジェクトは顧客データモデルオブジェクトの携帯電話番号プロパティにリンクされている必要があります。「追加引数」ダイアログボックスが開きます。
引数を追加ダイアログボックスで、
「名前」ドロップダウンリストから「mobilenum」を選択します。携帯電話プロパティは、顧客および通話データモデルオブジェクトで利用できる共通プロパティです。その結果、プロパティは顧客と通話データモデルオブジェクト間の関連付けを作成するために使用されます。顧客データモデルオブジェクトに用意された各携帯電話番号ごとに、通話テーブルに複数の記録を参照できます。
引数の任意のタイトルと説明を指定する。
「連結先」ドロップダウンリストから「customer」を選択します。
「連結値」ドロップダウンリストから「mobilenum」を選択します。
「追加」をタップします。
mobilenum プロパティが引数セクションに表示されます。
「完了」をタップして、顧客と呼び出しデータモデルオブジェクトの間に1:nの関連付けを作成します。
顧客および通話データモデルオブジェクト間で関連付けを作成したら、顧客と通話データモデルオブジェクト間で 1:1 の関連付けを作成します。
customerデータモデルオブジェクトの上部にあるチェックボックスを選択して選択し、「追加関連付け」をタップします。 追加関連付けプロパティウィンドウが開きます。
関連付けを追加ペインで、以下の操作を実行します。
関連付けのタイトルを入力します。これはオプションのフィールドです。
タイプドロップダウンリストから「1対1」を選択します。
モデルオブジェクトドロップダウンリストから請求書を選択します。
「サービス」ドロップダウンリストから get を選択します。billsテーブルの主キーであるbillplanプロパティは、既にArgumentsセクションにあります。
請求および顧客データモデルオブジェクトは、それぞれbillplan(請求)および customerplan(顧客)プロパティを使ってリンクされています。これらのプロパティ間で連結を作成し、MySQL データベースに含まれるあらゆる顧客の計画の詳細を取得します。
「連結先」ドロップダウンリストから「customer」を選択します。
「連結値」ドロップダウンリストから「customerplan」を選択します。
「完了」をタップして、billplanとcustomerplanのプロパティの間の連結を作成します。
以下の画像は、データモデルオブジェクト間の関連付けと、関連付けの作成に使用されているプロパティを示します。
顧客とほかのデータモデルオブジェクト間で関連付けを作成後、顧客プロパティを編集し、データモデルオブジェクトから取得されたデータに基づいてプロパティを定義します。ユースケースに基づいて、携帯電話番号は顧客データモデルオブジェクトからデータを取得するためのプロパティとして使用されます。
customerデータモデルオブジェクトの上部にあるチェックボックスを選択して選択し、「プロパティを編集」をタップします。 プロパティを編集ペインが開きます。
顧客をトップレベルモデルオブジェクトとして指定します。
「読み取りサービス」ドロップダウンで「get」を選択します。
引数セクションで、
「連結先」ドロップダウンリストから「属性を要求」を選択します。
mobilenum を連結値として指定します。
書き込みサービスのドロップダウンリストから「更新」を選択します。
引数セクションで、
mobilenum プロパティとして、「連結先」ドロップダウンリストから「顧客」を選択します。
「連結値」ドロップダウンリストから「mobilenum」を選択します。
「完了」をタップして、プロパティを保存します。
callsデータモデルオブジェクトの上部にあるチェックボックスを選択して選択し、「プロパティを編集」をタップします。 プロパティを編集ペインが開きます。
トップレベルモデルオブジェクトを、通話データモデルオブジェクトに対して無効にします。
「完了」をタップします。
手順 8~10 を繰り返し、請求データモデルオブジェクトのプロパティを設定します。
「サービス」タブに移動します。
getサービスを選択し、「プロパティを編集」をタップします。 プロパティを編集ペインが開きます。
プロパティを編集ペインで、
任意のタイトルと説明を入力します。
「出力モデルオブジェクト」ドロップダウンリストから「顧客」を選択します。
「完了」をタップして、プロパティを保存します。
updateサービスを選択し、「プロパティを編集」をタップします。 プロパティを編集ペインが開きます。
プロパティを編集ペインで、
任意のタイトルと説明を入力します。
「入力モデルオブジェクト」ドロップダウンリストから「customer」を選択します。
「完了」をタップします。
「保存」をタップして、フォームデータモデルを保存します。
データモデルのオブジェクトおよびサービスをテストして、フォームデータモデルが正しく設定されていることを確認できます。
テストを実行するには、以下の手順を実行します。
「モデル」タブに移動し、顧客データモデルオブジェクトを選択して、モデルオブジェクトをテストをタップします。
フォームデータモデルをテストウィンドウで、モデル/サービスを選択ドロップダウンリストからモデルオブジェクトを読み取りを選択します。
「入力」セクションで、設定したMySQLデータベースに存在するmobilenumプロパティの値を指定し、「テスト」をタップします。
指定したmobilenumプロパティに関連付けられた顧客の詳細が取得され、次に示すように「出力」セクションに表示されます。 ダイアログボックスを閉じます。
「サービス」タブに移動します。
getサービスを選択し、「Test Service.」をタップします。
「入力」セクションで、設定したMySQLデータベースに存在するmobilenumプロパティの値を指定し、「テスト」をタップします。
指定したmobilenumプロパティに関連付けられた顧客の詳細が取得され、次に示すように「出力」セクションに表示されます。 ダイアログボックスを閉じます。
フォームデータモデルエディターを使用して、計算済みプロパティを含むすべてのデータモデルオブジェクトプロパティのサンプルデータを、フォームデータモデル内で生成することができます。各プロパティで設定されたデータタイプに基づいて、一連のランダムな値がサンプルデータとして生成されます。このサンプルデータを編集して保存することもできます。サンプルデータを再生成した場合も、編集したサンプルデータは保存されたままになります。
サンプルデータを生成、編集して保存するには、以下の手順を実行します。
フォームデータモデルページで、「サンプルデータを編集」をタップします。 サンプルデータが生成され、サンプルデータ編集ウィンドウに表示されます。
「サンプルデータを編集」ウィンドウでデータを編集して「保存」をタップします。ウィンドウを閉じます。