アダプティブフォームで推奨されるデータソースベースの事前入力ワークフローと送信ワークフロー

自動フォーム変換サービスを使用して変換されたアダプティブフォームでは、以下に示すいずれかのデータソースを使用することができます。

  • フォームデータモデル、OData、その他のサードパーティ製サービス
  • JSON スキーマ
  • XSD スキーマ

データソースに基づいて、データモデルを使用してアダプティブフォームを生成することも、データモデルを使用せずにアダプティブフォームを生成することもできます。

この記事では、データソースを選択し、変換サービスを使用してアダプティブフォームを生成してから、フィールド値を事前入力するための推奨ワークフローについて説明します。また、推奨される送信方法についても説明します。

データソース 推奨ワークフロー

フォームデータモデル、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 というテーブルを追加します。

サンプルの mysql データ

以下の 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 スキーマを使用してアダプティブフォームを作成する」を参照してください。

データバインディングがないアダプティブフォームを生成する

自動フォーム変換サービスを使用して、サンプルのローン申し込みフォームをデータバインディングがないアダプティブフォームに変換します。 データバインディングがないアダプティブフォームを生成するには、「データバインディングがないアダプティブフォームを生成」チェックボックスを選択します。

データバインディングがないアダプティブフォーム

データバインディングがないアダプティブフォームを生成したら、アダプティブフォームのデータソースを選択します。

メモ

自動フォーム変換サービスを使用して生成されたアダプティブフォームに、同じ名前のフィールドが複数含まれている場合は、フォームの送信時にデータが失われる可能性があるため、必ずこれらのフィールドをデータソースエンティティにバインドしてください。

データベース、OData、またはその他のサードパーティ製サービスをデータソースとして使用する

ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。 次に、アダプティブフォームの各フィールドをデータモデルの各エンティティに手動でバインドし、「フォームデータモデルの事前入力サービス」オプションを使用して、フィールド値の事前入力を行います。 次に、「フォームデータモデルを使用して送信」オプションを使用して、アダプティブフォームを送信します。

このユースケースを実行する前に、以下の処理を行う必要があります。

このユースケースでは、loanapplication というフォームデータモデルを作成し、read サービス引数を Literal 値にバインドします。 電話番号のリテラル値は、MySQL データベースの applicant スキーマ内で設定されているいずれかのレコードと一致している必要があります。 変換サービスは、この値を引数として使用して、データソースから詳細データをフェッチします。 「バインド先」ドロップダウンリストで「ユーザプロファイル属性または要求属性」を選択することもできます。

フォームデータモデルを設定する

メモ

このユースケースを実行する前に、get サービスと insert サービスをフォームデータモデルに追加し、これらのサービスの設定とテストを行ってください。

以下の手順を実行します。

  1. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択して「プロパティ」をタップします。

  2. フォームモデル」タブをタップし、「選択」ドロップダウンリストで「フォームデータモデル」を選択します。次に、「フォームデータモデルを選択」タブをタップし、データモデルで「loanapplication」を選択します。 「保存して終了」をタップしてフォームを保存します。

  3. サンプルのローン申し込みフォーム​を選択して「編集」をタップします。

  4. コンテンツ」タブで、以下の設定アイコンをタップします。

    フォームコンテナーの設定アイコン

    1. 基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。

    2. 送信」セクションの「送信アクション」ドロップダウンリストで「フォームデータモデルを使用して送信」を選択します。

    3. 送信するデータモデル」フィールドでデータモデルを選択します。

    4. 完了アイコン をタップしてプロパティを保存します。

  5. 「申込者名」テキストボックスをタップして設定アイコン(設定アイコン)を選択します。

    1. 「バインド参照」フィールドで​申込者名前​を選択し、完了アイコン をタップしてプロパティを保存します。 同様に、フォームデータモデルエンティティを使用して、「住所」、「電話番号」、「電子メール」、「職業」、「年収(ドル)」、「扶養家族の数」フィールドのデータバインディングを作成します。
      バインド参照
  6. プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。

  7. 必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 フィールド値が MySQL データベースに送信されます。 データベースで applicant テーブルを更新すると、このテーブル内の更新後の値が表示されます。

ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、MYSQL データベースをデータソースとして設定します。 次に、ルールエディターを使用してアダプティブフォームフィールドをバインドし、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。

ルールエディターを使用してフォームデータモデルサービスを呼び出し、アダプティブフォーム内のフィールドのバインドと値の事前入力を行うには、以下の手順を実行します。

  1. サンプルのローン申し込みフォーム​を output フォルダーで選択して「編集」をタップします。

  2. コンテンツ」タブで、以下の設定アイコンをタップします。

    フォームコンテナーの設定アイコン

    基本」セクションの「事前入力サービス」ドロップダウンリストで「フォームデータモデル事前入力サービス」を選択します。

  3. 申込者名」テキストボックスをタップしてから「ルールを編集」をタップします。

    ルールを編集してデータバインディングを作成

  4. ルールエディターページで「作成」をタップします。

  5. ルールエディター​ページで以下の手順を実行します。

    1. 「申込者名」テキストボックスで状態を選択します。 例えば、状態として「初期化された」を選択した場合、「プレビュー」モードでフォームをレンダリングすると、「Then」条件が実行されます。

    2. Then」セクションの「アクションの選択」ドロップダウンリストで「サービスの呼び出し」を選択します。Forms インスタンス上のすべてのサービスがドロップダウンリストに表示されます。

    3. フォームデータモデルが一覧表示されているセクションで「Get」サービスを選択します。 「入力」セクションに「phonenumber」が表示されます。これは、applicant データモデル用に定義されたプライマリーキーです。 このフィールドに基づいて、「出力」セクションのアダプティブフォームフィールド値が事前入力されます。

    4. 「出力」セクションのフォームデータモデルエンティティを使用して、アダプティブフォームフィールドのデータバインディングを作成します。 例えば、アダプティブフォームの「申込者名」フィールドを「name」エンティティにバインドします。

    5. 完了」をタップします。ルールエディターページで、もう一度「完了」をタップします。
      ルールエディターで参照をバインドする

  6. プレビュー」をタップして、事前入力されたアダプティブフォームフィールドの値を確認します。

    メモ

    アダプティブフォームに関連付けられているフォームデータモデルの get サービスプロパティに対して、「配列を返す」プロパティがオフに設定されていることを確認してください。

  7. 必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。

    http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder

JSON スキーマをデータソースとして使用する

ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、JSON スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを JSON スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。

このユースケースを実行する前に、以下を確認する必要があります。

以下の手順を実行します。

  1. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択して「プロパティ」をタップします。

  2. フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている demo.schema という JSON スキーマをアップロードします。 「保存して終了」をタップしてフォームを保存します。

  3. サンプルのローン申し込みフォーム​を選択して「編集」をタップします。

  4. 「申込者名」テキストボックスをタップして設定アイコン(設定アイコン)を選択します。

    「バインド参照」フィールドで​申込者名前​を選択し、完了アイコン をタップしてプロパティを保存します。 同様に、JSON スキーマエンティティを使用して、「住所」、「電話番号」、「電子メール」、「職業」、「年収(ドル)」、「扶養家族の数」フィールドのデータバインディングを作成します。

  5. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択し、プレビューデータを使用してプレビュー​を選択します。

    以下のリンクでサンプルデータファイルをダウンロードしてください:

    ファイルを入手

  6. 必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。

    http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder

XSD スキーマをデータソースとして使用する

ユースケース:自動フォーム変換サービスを使用して、データバインディングがないアダプティブフォームを生成し、XSD スキーマをデータソースとして設定します。 次に、アダプティブフォームの各フィールドを XSD スキーマに手動でバインドし、「データを使用してプレビュー」オプションを使用して、フィールド値の事前入力を行います。 次に、必要に応じてフィールド値を変更し、crx-repository にデータを送信します。

このユースケースを実行する前に、以下を確認する必要があります。

以下の手順を実行します。

  1. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択して「プロパティ」をタップします。

  2. フォームモデル」タブの「選択」ドロップダウンリストで「スキーマ」を選択し、「スキーマを選択」をタップして、ローカルファイルシステムに保存されている loanapplication という XSD スキーマをアップロードします。 次に、XSD スキーマのルート要素を選択し、「保存して終了」をタップしてフォームを保存します。

  3. サンプルのローン申し込みフォーム​を選択して「編集」をタップします。

  4. 「申込者名」テキストボックスをタップして設定アイコン(設定アイコン)を選択します。
    「バインド参照」フィールドで申込者名前​を選択し、完了アイコン をタップしてプロパティを保存します。 同様に、XSD スキーマエンティティを使用して、「住所」、「電話番号」、「電子メール」、「職業」、「年収(ドル)」、「扶養家族の数」フィールドのデータバインディングを作成します。

  5. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択し、プレビューデータを使用してプレビュー​を選択します。

    以下のリンクでサンプルデータファイルをダウンロードしてください:

    ファイルを入手

  6. 必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。

    http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder

JSON バインディングを持つアダプティブフォームを生成する

自動フォーム変換サービスを使用して、サンプルのローン申し込みフォームを、データバインディングを持つアダプティブフォームに変換します。 アダプティブフォームを生成する際に、「データバインディングがないアダプティブフォームを生成」チェックボックスが無効になっていることを確認してください。

JSON バインディングを持つアダプティブフォーム

JSON スキーマをデータソースとして使用する

ユースケース:自動フォーム変換サービスを使用して、JSON データバインディングを持つアダプティブフォームを生成します。 事前入力サービスとフォーム送信機能がシームレスに連携します。 設定手順を実行する必要はありません。

以下の手順を実行する前に、データバインディングを持つアダプティブフォームが生成されていることを確認してください。

以下の手順を実行します。

  1. 変換後の​サンプルのローン申し込みフォーム​を output フォルダーで選択し、プレビューデータを使用してプレビュー​を選択します。

    以下のリンクでサンプルデータファイルをダウンロードしてください:

    ファイルを入手

  2. 必要に応じてフィールド値を変更し、アダプティブフォームを送信します。 送信後のデータは、crx-repository の以下の場所に保存されます。

    http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder

送信後のアダプティブフォームの JSON データを 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));
    }
}

このページ