自動フォーム変換サービスを使用して変換されたアダプティブフォームでは、以下に示すいずれかのデータソースを使用することができます。
データソースに基づいて、データモデルを使用してアダプティブフォームを生成することも、データモデルを使用せずにアダプティブフォームを生成することもできます。
この記事では、データソースを選択し、変換サービスを使用してアダプティブフォームを生成してから、フィールド値を事前入力するための推奨ワークフローについて説明します。また、推奨される送信方法についても説明します。
データソース | 推奨ワークフロー |
---|---|
フォームデータモデル、OData、その他のサードパーティ製サービス |
方法 1:データソースとして、フォームデータモデル、OData、またはその他のサードパーティ製サービスを選択します。 次に、自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成します。 次に、アダプティブフォームの各フィールドをデータモデルの各エンティティに手動でバインドし、「フォームデータモデルの事前入力サービス」オプションを使用して、フィールド値の事前入力を行います。 次に、「フォームデータモデルを使用して送信」オプションを使用して、アダプティブフォームを送信します。 |
方法 2:データソースとして、フォームデータモデル、OData、またはその他のサードパーティ製サービスを選択します。 次に、自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成します。 次に、ルールエディターを使用してアダプティブフォームフィールドをバインドし、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。 |
|
これらのワークフローの詳細な手順については、「データベース、OData、またはその他のサードパーティ製サービスをデータソースとして使用する」を参照してください。 |
|
JSON スキーマ |
データソースとして JSON スキーマを選択します。 選択したデータソースに応じて、以下のいずれかの方法を選択します。 |
方法 1:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、JSON スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを JSON スキーマに手動でバインドし、サポートされているいずれかのプロトコルを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。 |
|
このワークフローの詳細な手順については、次のセクションを参照してください:JSON スキーマをデータソースとして使用する |
|
方法 2:自動フォーム変換サービスを使用して、JSON データバインディングを持つアダプティブフォームを生成します。 事前入力サービスとフォーム送信機能がシームレスに連携します。 設定手順を実行する必要はありません。 |
|
このワークフローの詳細な手順については、「JSON スキーマをデータソースとして使用する」を参照してください。 |
|
XSD スキーマ |
データソースとして XSD スキーマを選択します。 選択したデータソースに応じて、自動フォーム変換サービスを使用してデータバインディングがないアダプティブフォームを生成し、XSD スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを XSD スキーマに手動でバインドし、サポートされているいずれかのプロトコルを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。 |
このワークフローの詳しい手順については、「XSD スキーマをデータソースとして使用する」を参照してください。 |
自動フォーム変換サービスについて詳しくは、以下の記事を参照してください。
この記事は、アダプティブフォームに関する基礎的な概念を理解している読者を対象としています。
アダプティブフォームフィールドに事前に値を入力してデータソースに送信するというユースケースを実行するには、以下のサンプル PDF ファイルをダウンロードする必要があります。
サンプルのローン申し込みフォーム
この PDF ファイルは、自動フォーム変換サービスの入力データとして機能します。 自動フォーム変換サービスを実行すると、このファイルがアダプティブフォームに変換されます。 以下の画像は、PDF 形式のサンプルのローン申し込みフォームです。
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 スキーマを使用してアダプティブフォームを作成する」を参照してください。
自動フォーム変換サービスを使用して、サンプルのローン申し込みフォームをデータバインディングがないアダプティブフォームに変換します。 データバインディングがないアダプティブフォームを生成するには、「データバインディングがないアダプティブフォームを生成」チェックボックスを選択します。
データバインディングがないアダプティブフォームを生成したら、アダプティブフォームのデータソースを選択します。
自動フォーム変換サービスを使用して生成されたアダプティブフォームに、同じ名前のフィールドが複数含まれている場合は、フォームの送信時にデータが失われる可能性があるため、必ずこれらのフィールドをデータソースエンティティにバインドしてください。
ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。 次に、アダプティブフォームの各フィールドをデータモデルの各エンティティに手動でバインドし、「フォームデータモデルの事前入力サービス」オプションを使用して、フィールド値の事前入力を行います。 次に、「フォームデータモデルを使用して送信」オプションを使用して、アダプティブフォームを送信します。
このユースケースを実行する前に、以下の処理を行う必要があります。
このユースケースでは、loanapplication というフォームデータモデルを作成し、read サービス引数を Literal 値にバインドします。 電話番号のリテラル値は、MySQL データベースの applicant スキーマ内で設定されているいずれかのレコードと一致している必要があります。 変換サービスは、この値を引数として使用して、データソースから詳細データをフェッチします。 「バインド先」ドロップダウンリストで「ユーザプロファイル属性または要求属性」を選択することもできます。
このユースケースを実行する前に、get サービスと insert サービスをフォームデータモデルに追加し、これらのサービスの設定とテストを行ってください。
以下の手順を実行します。
変換後のサンプルのローン申し込みフォームを output フォルダーで選択して「プロパティ」をタップします。
「フォームモデル」タブをタップし、「選択」ドロップダウンリストで「フォームデータモデル」を選択します。次に、「フォームデータモデルを選択」タブをタップし、データモデルで「loanapplication」を選択します。 「保存して終了」をタップしてフォームを保存します。
サンプルのローン申し込みフォームを選択して「編集」をタップします。
「コンテンツ」タブで、以下の設定アイコンをタップします。
「基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。
「送信」セクションの「送信アクション」ドロップダウンリストで「フォームデータモデルを使用して送信」を選択します。
「送信するデータモデル」フィールドでデータモデルを選択します。
をタップしてプロパティを保存します。
「申込者名」テキストボックスをタップして設定アイコン()を選択します。
「プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 フィールド値が MySQL データベースに送信されます。 データベースで applicant テーブルを更新すると、このテーブル内の更新後の値が表示されます。
ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。 次に、ルールエディターを使用してアダプティブフォームフィールドをバインドし、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
ルールエディターを使用してフォームデータモデルサービスを呼び出し、アダプティブフォーム内のフィールドのバインドと値の事前入力を行うには、以下の手順を実行します。
サンプルのローン申し込みフォームを output フォルダーで選択して「編集」をタップします。
「コンテンツ」タブで、以下の設定アイコンをタップします。
「基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。
「申込者名」テキストボックスをタップしてから「ルールを編集」をタップします。
ルールエディターページで「作成」をタップします。
ルールエディターページで以下の手順を実行します。
「申込者名」テキストボックスで状態を選択します。 例えば、状態として「初期化された」を選択した場合、「プレビュー」モードでフォームをレンダリングすると、「Then」条件が実行されます。
「Then」セクションの「アクションの選択」ドロップダウンリストで「サービスの呼び出し」を選択します。Forms インスタンス上のすべてのサービスがドロップダウンリストに表示されます。
フォームデータモデルが一覧表示されているセクションで「Get」サービスを選択します。 「入力」セクションに「phonenumber」が表示されます。これは、applicant データモデル用に定義されたプライマリーキーです。 このフィールドに基づいて、「出力」セクションのアダプティブフォームフィールド値が事前入力されます。
「出力」セクションのフォームデータモデルエンティティを使用して、アダプティブフォームフィールドのデータバインディングを作成します。 例えば、アダプティブフォームの「申込者名」フィールドを「name」エンティティにバインドします。
「完了」をタップします。ルールエディターページで、もう一度「完了」をタップします。
「プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。
アダプティブフォームに関連付けられているフォームデータモデルの get サービスプロパティに対して、「配列を返す」プロパティがオフに設定されていることを確認してください。
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、JSON スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを JSON スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
このユースケースを実行する前に、以下を確認する必要があります。
以下の手順を実行します。
変換後のサンプルのローン申し込みフォームを output フォルダーで選択して「プロパティ」をタップします。
「フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている demo.schema という JSON スキーマをアップロードします。 「保存して終了」をタップしてフォームを保存します。
サンプルのローン申し込みフォームを選択して「編集」をタップします。
「申込者名」テキストボックスをタップして設定アイコン()を選択します。
「バインド参照」フィールドで申込者/名前を選択し、 をタップしてプロパティを保存します。 同様に、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 スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを XSD スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。
このユースケースを実行する前に、以下を確認する必要があります。
以下の手順を実行します。
変換後のサンプルのローン申し込みフォームを output フォルダーで選択して「プロパティ」をタップします。
「フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている loanapplication という XSD スキーマをアップロードします。 次に、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 データバインディングを持つアダプティブフォームを生成します。 事前入力サービスとフォーム送信機能がシームレスに連携します。 設定手順を実行する必要はありません。
以下の手順を実行する前に、データバインディングを持つアダプティブフォームが生成されていることを確認してください。
以下の手順を実行します。
変換後のサンプルのローン申し込みフォームを output フォルダーで選択し、プレビュー/データを使用してプレビューを選択します。
以下のリンクでサンプルデータファイルをダウンロードしてください:
必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
アダプティブフォームのフィールドに値を入力してフォームを送信すると、そのデータが 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));
}
}