アダプティブフォームで推奨される、データソースベースの事前入力ワークフローと送信ワークフロー recommended-data-source-btased-prefill-and-submit-workflows-for-adaptive-forms
自動フォーム変換サービス(AFCS)を使用して変換されたアダプティブフォームでは、次のデータソースのいずれかを使用できます。
- フォームデータモデル、OData、その他のサードパーティ製サービス
- JSON スキーマ
- XSD スキーマ
データソースに基づいて、データモデルを使用してアダプティブフォームを生成することも、データモデルを使用せずにアダプティブフォームを生成することもできます。
この記事では、データソースを選択し、変換サービスを使用してアダプティブフォームを生成してから、フィールド値を事前入力するための推奨ワークフローについて説明します。また、推奨される送信方法についても説明します。
自動フォーム変換サービス(AFCS)について詳しくは、以下の記事を参照してください。
この記事は、アダプティブフォームに関する基礎的な概念を理解している読者を対象としています。
前提条件 pre-requisites
サンプルのアダプティブフォーム sample-adaptive-form
アダプティブフォームフィールドに事前に値を入力してデータソースに送信するというユースケースを実行するには、以下のサンプル PDF ファイルをダウンロードする必要があります。
サンプルのローン申し込みフォーム
PDF ファイルは、自動フォーム変換サービス(AFCS)への入力として機能します。自動フォーム変換サービスを実行すると、このファイルがアダプティブフォームに変換されます。 以下の画像は、PDF 形式のサンプルのローン申し込みフォームです。
フォームモデルのデータを準備する prepare-data-for-form-model
AEM Forms のデータ統合機能により、複数の異なるデータソースを設定して接続することができます。変換サービスを使用してアダプティブフォームを生成したら、使用するデータモデル(XSD スキーマまたは JSON スキーマ)に応じてフォームモデルを定義します。 データベース、Microsoft Dynamics、またはその他のサードパーティ製サービスを使用して、フォームデータモデルを作成することができます。
このチュートリアルでは、MySQL データベースをデータソースとして使用してフォームデータモデルを作成します。 アダプティブフォーム内の有効なフィールドに基づいて、データベース内に loanapplication というスキーマを作成し、このスキーマに applicant というテーブルを追加します。
以下の DDL ステートメントを使用して、データベース内に applicant というテーブルを作成します。
CREATE TABLE `applicant` (
`name` varchar(45) DEFAULT NULL,
`address` varchar(45) DEFAULT NULL,
`phonenumber` int(11) NOT NULL,
`email` varchar(45) DEFAULT NULL,
`occupation` varchar(45) DEFAULT NULL,
`annualsalary` varchar(45) DEFAULT NULL,
`familymembers` int(11) DEFAULT NULL,
PRIMARY KEY (`phonenumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
XSD スキーマをフォームモデルとして使用してこのユースケースを実行する場合は、以下のコードが記述された XSD ファイルを作成します。
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://adobe.com/sample.xsd"
xmlns="http://adobe.com/sample.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sample" type="SampleType"/>
<xs:complexType name="SampleType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="phonenumber" type="xs:int"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="occupation" type="xs:string"/>
<xs:element name="annualsalary" type="xs:string"/>
<xs:element name="familymembers" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
または、ローカルのファイルシステムに XSD スキーマをダウンロードします。
サンプルのローン申し込み XSD スキーマ
アダプティブフォーム内で XSD スキーマをフォームモデルとして使用する方法については、「XML スキーマを使用してアダプティブフォームを作成する」を参照してください。
JSON スキーマをフォームモデルとして使用してこのユースケースを実行する場合は、以下のコードが記述された JSON ファイルを作成します。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"loanapplication": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"phonenumber": {
"type": "number"
},
"email": {
"type": "string"
},
"occupation": {
"type": "string"
},
"annualsalary": {
"type": "string"
},
"familymembers": {
"type": "number"
}
}
}
},
"type": "object",
"properties": {
"employee": {
"$ref": "#/definitions/loanapplication"
}
}
}
または、ローカルのファイルシステムに JSON スキーマをダウンロードします。
サンプルのローン申し込み JSON スキーマ
アダプティブフォーム内で JSON スキーマをフォームモデルとして使用する方法については、「JSON スキーマを使用してアダプティブフォームを作成する」を参照してください。
データバインディングがないアダプティブフォームを生成する generate-adaptive-forms-with-no-data-binding
自動フォーム変換サービスを使用して、サンプルのローン申し込みフォームをデータバインディングがないアダプティブフォームに変換します。 データバインディングがないアダプティブフォームを生成するには、「データバインディングがないアダプティブフォームを生成」チェックボックスを選択します。
データバインディングがないアダプティブフォームを生成したら、アダプティブフォームのデータソースを選択します。
データベース、OData、またはその他のサードパーティ製サービスをデータソースとして使用する sqldatasource
ユースケース:自動フォーム変換サービス(AFCS)を使用して、データバインディングのないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。次に、アダプティブフォームの各フィールドをデータモデルの各エンティティに手動でバインドし、「フォームデータモデルの事前入力サービス」オプションを使用して、フィールド値の事前入力を行います。 次に、「フォームデータモデルを使用して送信」オプションを使用して、アダプティブフォームを送信します。
このユースケースを実行する前に、以下の処理を行う必要があります。
このユースケースでは、loanapplication というフォームデータモデルを作成し、read サービス引数を Literal 値にバインドします。 電話番号のリテラル値は、MySQL データベースの applicant スキーマ内で設定されているいずれかのレコードと一致している必要があります。 変換サービスは、この値を引数として使用して、データソースから詳細データをフェッチします。 「バインド先」ドロップダウンリストで「ユーザプロファイル属性または要求属性」を選択することもできます。
以下の手順を実行します。
-
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択して「プロパティ」をタップします。
-
「フォームモデル」タブをタップし、「選択」ドロップダウンリストで「フォームデータモデル」を選択します。次に、「フォームデータモデルを選択」タブをタップし、データモデルで「loanapplication」を選択します。 「保存して終了」をタップしてフォームを保存します。
-
サンプルのローン申し込みフォーム を選択して「編集」をタップします。
-
「コンテンツ」タブで、以下の設定アイコンをタップします。
-
「基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。
-
「送信」セクションの「送信アクション」ドロップダウンリストで「フォームデータモデルを使用して送信」を選択します。
-
「送信するデータモデル」フィールドでデータモデルを選択します。
-
-
-
「申込者名」テキストボックスをタップして設定アイコン(
- 「バインド参照」フィールドで 申込者/名前 を選択し、
- 「バインド参照」フィールドで 申込者/名前 を選択し、
-
「プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。
-
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 フィールド値が MySQL データベースに送信されます。 データベースで applicant テーブルを更新すると、このテーブル内の更新後の値が表示されます。
ユースケース: 自動フォーム変換サービス(AFCS)を使用して、データバインディングがないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。次に、ルールエディターを使用してアダプティブフォームフィールドをバインドし、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
ルールエディターを使用してフォームデータモデルサービスを呼び出し、アダプティブフォーム内のフィールドのバインドと値の事前入力を行うには、以下の手順を実行します。
-
サンプルのローン申し込みフォーム を output フォルダーで選択して「編集」をタップします。
-
「コンテンツ」タブで、以下の設定アイコンをタップします。
「基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。
-
「申込者名」テキストボックスをタップしてから「ルールを編集」をタップします。
-
ルールエディターページで「作成」をタップします。
-
ルールエディター ページで以下の手順を実行します。
-
「申込者名」テキストボックスで状態を選択します。 例えば、状態として「初期化された」を選択した場合、「プレビュー」モードでフォームをレンダリングすると、「Then」条件が実行されます。
-
「Then」セクションの「アクションの選択」ドロップダウンリストで「サービスの呼び出し」を選択します。Forms インスタンス上のすべてのサービスがドロップダウンリストに表示されます。
-
フォームデータモデルが一覧表示されているセクションで「Get」サービスを選択します。 「入力」セクションに「phonenumber」が表示されます。これは、applicant データモデル用に定義されたプライマリーキーです。 このフィールドに基づいて、「出力」セクションのアダプティブフォームフィールド値が事前入力されます。
-
「出力」セクションのフォームデータモデルエンティティを使用して、アダプティブフォームフィールドのデータバインディングを作成します。 例えば、アダプティブフォームの「申込者名」フィールドを「name」エンティティにバインドします。
-
「完了」をタップします。ルールエディターページで、もう一度「完了」をタップします。
-
-
「プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。
note note NOTE アダプティブフォームに関連付けられているフォームデータモデルの get サービスプロパティに対して、「配列を返す」プロパティがオフに設定されていることを確認してください。 -
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
JSON スキーマをデータソースとして使用する jsondatasource
ユースケース: 自動フォーム変換サービス(AFCS)を使用して、データバインディングがないアダプティブフォームを生成し、JSON スキーマをデータソースとして設定します。次に、アダプティブフォームの各フィールドを JSON スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
このユースケースを実行する前に、以下を確認する必要があります。
以下の手順を実行します。
-
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択して「プロパティ」をタップします。
-
「フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている demo.schema という JSON スキーマをアップロードします。 「保存して終了」をタップしてフォームを保存します。
-
サンプルのローン申し込みフォーム を選択して「編集」をタップします。
-
「申込者名」テキストボックスをタップして設定アイコン(
「バインド参照」フィールドで 申込者/名前 を選択し、
-
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択し、プレビュー/データを使用してプレビュー を選択します。
以下のリンクでサンプルデータファイルをダウンロードしてください:
-
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
XSD スキーマをデータソースとして使用する xsddatasource
ユースケース: 自動フォーム変換サービス(AFCS)を使用して、データバインディングがないアダプティブフォームを生成し、XSD スキーマをデータソースとして設定します。次に、アダプティブフォームの各フィールドを XSD スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
このユースケースを実行する前に、以下を確認する必要があります。
以下の手順を実行します。
-
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択して「プロパティ」をタップします。
-
「フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている loanapplication という XSD スキーマをアップロードします。 次に、XSD スキーマのルート要素を選択し、「保存して終了」をタップしてフォームを保存します。
-
サンプルのローン申し込みフォーム を選択して「編集」をタップします。
-
「申込者名」テキストボックスをタップして設定アイコン(
「バインド参照」フィールドで 申込者/名前 を選択し、 -
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択し、プレビュー/データを使用してプレビュー を選択します。
以下のリンクでサンプルデータファイルをダウンロードしてください:
-
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
JSON バインディングを持つアダプティブフォームを生成する generate-adaptive-forms-with-json-binding
自動フォーム変換サービス(AFCS)を使用して、サンプルのローン申し込みフォームをデータバインディングがあるアダプティブフォームに変換します。アダプティブフォームを生成する際に、「データバインディングがないアダプティブフォームを生成」チェックボックスが無効になっていることを確認してください。
JSON スキーマをデータソースとして使用する jsonwithdatabinding
ユースケース: 自動フォーム変換サービス(AFCS)を使用して、JSON データバインディングがあるアダプティブフォームを生成します。事前入力サービスとフォーム送信機能がシームレスに連携します。 設定手順を実行する必要はありません。
以下の手順を実行する前に、データバインディングを持つアダプティブフォームが生成されていることを確認してください。
以下の手順を実行します。
-
変換後の サンプルのローン申し込みフォーム を output フォルダーで選択し、プレビュー/データを使用してプレビュー を選択します。
以下のリンクでサンプルデータファイルをダウンロードしてください:
-
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
送信後のアダプティブフォームの JSON データを XML 形式に変換する convert-submitted-adaptive-form-data-to-xml
アダプティブフォームのフィールドに値を入力してフォームを送信すると、そのデータが crx-repository 内で JSON 形式に変換されます。 JSON データを XML 形式に変換するには、org.apache.sling.commons.json.xml という API を使用するか、以下のサンプルコードを使用します。
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.commons.json.xml.XML;
public class ConversionUtils {
public static String jsonToXML(String jsonString) throws JSONException {
//https://sling.apache.org/apidocs/sling5/org/apache/sling/commons/json/xml/XML.html#toString(java.lang.Object)
//jar - http://maven.ibiblio.org/maven2/org/apache/sling/org.apache.sling.commons.json/2.0.18/
//Note: Need to extract boundData part before converting to XML
return XML.toString(new JSONObject(jsonString));
}
}