現在表示中:

データ統合により、複数の異なるデータソースを接続してフォームデータモデルを作成
data-integeration

企業のインフラストラクチャは、データベース、Web サービス、REST サービス、OData サービス、CRM ソリューションなど、各種のバックエンドシステムやデータソースから構成されています。これらを統合することにより、データをエンタープライズアプリケーションに渡して日常業務を実行する情報システムを構築することができます。一方、各アプリケーションは、データを取得してシステムに返します。これにより、データソースが更新されます。 

アダプティブフォームなどの AEM Forms アプリケーションを使用するには、フォームとドキュメントのレンダリング時にデータを取得できるように、データソースを統合する必要があります。フォーム上で手動で操作を実行して、データを複数の異なるデータソースから取得する場合があります。この場合、フォームを送信すると、取得されたデータが取得元の各データソースに再度書き込まれます。

モジュール形式の分散システムには独自のメリットもありますが、複数のデータソースを統合してデータの関連付けを作成することが課題になります。企業のインフラストラクチャを効率的に運用するには、ビジネスデータを交換できるように、データを統合して複数の異なるデータソースをアプリケーションに関連付けることが重要になります。

AEM Forms データ統合機能の概要

AEM-forms-Data-Integeration

AEM Forms のデータ統合機能により、複数の異なるデータソースを設定して接続することができます。以下の機能は、すぐに使用することができます。ただし、これらの機能を少しカスタマイズするだけで、他のデータソースを統合することもできます。

  • リレーショナルデータベース - MySQL、Microsoft SQL Server、IBM DB2、Oracle RDBMS
  • AEM ユーザープロファイル
  • RESTful Web サービス
  • SOAP ベース Web サービス
  • OData サービス

注意:

データ統合機能における OData サービスのサポートは、AEM 6.3 Cumulative Fix Pack 1 以降のバージョンの AEM Forms アドオンパッケージで使用することができます。

すぐに使用できる認証タイプとして、OAuth2.0 認証、基本認証、API キー認証がサポートされています。また、カスタム認証を実装して Web サービスにアクセスすることもできます。

データ統合機能には、接続されたデータソース全体で、ビジネスエンティティとサービスの統一されたデータ表現スキーマを作成するための直感的なユーザーインターフェイスが用意されています。この統一された表現は、フォームデータモデルと呼ばれます。これは、JSON スキーマの拡張機能です。フォームデータモデル内のエンティティは、データモデルオブジェクトと呼ばれます。フォームデータモデルにより、以下の処理を行うことができます。

  • 接続されたデータソースから、データモデルオブジェクト、メタデータ、サービスにアクセスする。
  • データソース内とデータソース全体にわたり、データモデルオブジェクト間の関連付けを作成する。
  • データモデルオブジェクトサービスを呼び出し、データソースに対してクエリやデータの書き込みを行う。

フォームデータモデルを作成したら、アダプティブフォームの各種ワークフローでそのフォームデータモデルを使用することができます。以下に例を示します。

  • フォームデータモデルに基づいて、アダプティブフォームを作成する。
  • アダプティブフォームに事前にデータを取り込む。
  • アダプティブフォームルールを使用して、フォームデータモデル内で定義されているサービスを呼び出す。
  • 送信されたフォームデータを、基礎となるデータソースに書き込む。

データ統合機能を使用するには、以下の操作を行う必要があります。

  1. データソースを設定する
  2. フォームデータモデルを作成する
  3. フォームデータモデル内のデータモデルオブジェクトとサービスをテストする
  4. アダプティブフォームのワークフローでフォームデータモデルを使用する

データソースの設定

Forms のデータ統合機能では、以下のデータソースを設定することができます。

  • リレーショナルデータベース - MySQL、Microsoft SQL Server、IBM DB2、Oracle RDBMS
  • AEM ユーザープロファイル
  • RESTful Web サービス
  • SOAP ベース Web サービス
  • OData サービス

RESTful サービス、SOAP ベースサービス、OData サービスは AEM クラウドサービスで設定し、リレーショナルデータベース用の JDBC と AEM ユーザープロファイル用のコネクターは、AEM Web コンソールで設定します。

これらのデータソースの設定方法については、これ以降の各セクションを参照してください。

リレーショナルデータベースの設定

AEM Web Console Configuration を使用してリレーショナルデータベースを設定することができます。次の手順を実行します。

  1. AEM Web コンソールに移動します(http://[server]:[host]/system/console/configMgr)。

  2. Apache Sling Connection Pooled DataSource」という設定を探し、その設定をタップして編集モードで開きます。

  3. 設定ダイアログで、設定するデータベースの詳細を指定します。例えば、以下のような詳細を指定します。

    • データソースの名前
    • データソース名が保管されるデータソースサービスプロパティ
    • JDBC ドライバーの Java クラス名
    • JDBC 接続 URI
    • JDBC ドライバーとの接続を確立するためのユーザー名とパスワード

    注意:

    データソースを設定する前に、パスワードなどの機密情報を必ず暗号化してください。暗号化するには、以下の手順を実行します。

    1. http://[server]:[port]/system/console/crypto に移動します。
    2. プレーンテキスト」フィールドに暗号化する文字列(パスワードなど)を入力して「保護」をクリックします。

    暗号化されたテキストが「保護されたテキスト」フィールドに表示されます。このテキストを、設定内で指定することができます。

  4. プールからオブジェクトを取得するときにそのオブジェクトを検証する場合は「Test on Borrow」を有効にし、プールにオブジェクトを返すときにそのオブジェクトを検証する場合は「Test on Return」を有効にします。

  5. 検証クエリ」フィールドで SQL SELECT クエリを指定して、プールからの接続を検証します。このクエリでは、1 行以上の行が返される必要があります。使用しているデータベースに応じて、以下のいずれかを指定します。

    • SELECT 1(MySQL または MS SQL の場合)
    • SELECT 1 from dual(Oracle の場合)
  6. 保存」をタップして、設定内容を保存します。

AEM ユーザープロファイルの設定

AEM Web コンソールでユーザープロファイルコネクター設定を使用して、AEM のユーザープロファイルを設定することができます。次の手順を実行します。

  1. AEM Web コンソールに移動します(http://[server]:[host]/system/console/configMgr)。

  2. AEM Forms データ統合 - ユーザープロファイルコネクター設定」という設定をタップして、この設定を編集モードで開きます。

  3. ユーザープロファイルコネクター設定ダイアログで、ユーザープロファイルプロパティの追加、削除、更新を行うことができます。ここで指定したプロパティは、フォームデータモデルで使用することができます。ユーザープロファイルのプロパティを指定する場合は、以下の形式で指定します。

    name=[property_name_with_location_in_user_profile],type=[property_type]

    例:

    • name=profile/phoneNumber,type=string
    • name=profile/empLocation/*/city,type=string

    注意:

    上記の「*」は、CRXDE 構造における AEM ユーザープロファイル内の profile/empLocation/ ノードに属するすべてのノードを表しています。この場合、profile/empLocation/ ノード配下のいずれかのノード内に存在する string タイプの city プロパティに、フォームデータモデルからアクセスすることができます。ただし、指定されたプロパティが存在するノードの構造が統一されている必要があります。

  4. 保存」をタップして、設定内容を保存します。

RESTful Web サービスの設定

RESTful Web サービスは、Swagger の仕様に従い、JSON 形式または YAML 形式で Swagger 定義ファイル内に記述することができます。AEM クラウドサービスで RESTful Web サービスを設定するには、ファイルシステム内に Swagger ファイルが存在しているか、Swagger ファイルがホストされる URL を指定する必要があります。

RESTful サービスを設定するには、以下の手順を実行します。

  1. クラウドサービスの設定に移動し(http://[server]:[host]/libs/cq/core/content/tools/cloudservices.html)、管理者の資格情報を使用してログインします。

  2. サードパーティサービス」で「フォームデータモデル」を探します。初めてフォームデータモデルを設定する場合は、「今すぐ設定」をタップします。別の設定を追加する場合は、「設定を表示」をタップし、「利用可能な設定」の横に表示されている「+」アイコンをタップします。

  3. REST サービス」を選択し、設定のタイトルを入力して「作成」をタップします。REST サービスダイアログが表示されます。

  4. REST サービスダイアログで、以下の操作を実行します。

    • (任意)RESTful サービスの設定ページに表示するサムネイル画像のパスを指定します。
    • Swagger のソース、URL、またはファイルを選択し、その選択内容に応じて、Swagger 定義ファイルの URL を指定するか、ローカルファイルシステムから Swagger ファイルをアップロードします。
    • RESTful サービスにアクセスするための認証タイプ(なし、OAuth2.0 認証、基本認証、API キー認証、カスタム認証)を選択し、その選択内容に応じて認証の詳細を指定します。
  5. OK」をタップして、設定内容を保存します。

SOAP Web サービスの設定

SOAP ベースの Web サービスは、Web Services Description Language(WSDL)の仕様に従って記述します。AEM クラウドサービスで SOAP ベースの Web サービスを設定するには、その Web サービスの WSDL URL を確認して、以下の手順を実行します。

  1. クラウドサービスの設定に移動し(http://[server]:[host]/libs/cq/core/content/tools/cloudservices.html)、管理者の資格情報を使用してログインします。

  2. サードパーティサービス」で「フォームデータモデル」を探します。初めてフォームデータモデルを設定する場合は、「今すぐ設定」をタップします。別の設定を追加する場合は、「設定を表示」をタップし、「利用可能な設定」の横に表示されている「+」アイコンをタップします。

  3. SOAP Web サービス設定」を選択し、設定のタイトルを入力して「作成」をタップします。SOAP ベース Web サービスダイアログが表示されます。

  4. SOAP ベース Web サービスダイアログで、以下の操作を実行します。

    • (任意)サービスの設定ページに表示するサムネイル画像のパスを指定します。
    • Web サービスの WSDL URL を指定します。
    • SOAP サービスにアクセスするための認証タイプ(なし、OAuth2.0 認証、基本認証、カスタム認証)を選択し、その選択内容に応じて認証の詳細を指定します。
  5. OK」をタップして、設定内容を保存します。

OData サービスの設定

OData サービスは、そのサービスのルート URL によって識別されます。AEM クラウドサービスで OData サービスを設定するには、そのサービスのルート URL を確認して、以下の手順を実行します。

  1. クラウドサービスの設定に移動し(http://[server]:[host]/libs/cq/core/content/tools/cloudservices.html)、管理者の資格情報を使用してログインします。

  2. サードパーティサービス」で「フォームデータモデル」を探します。初めてフォームデータモデルを設定する場合は、「今すぐ設定」をタップします。別の設定を追加する場合は、「設定を表示」をタップし、「利用可能な設定」の横に表示されている「+」アイコンをタップします。

  3. OData サービス」を選択し、設定のタイトルを入力して「作成」をタップします。OData サービスダイアログが表示されます。

  4. OData サービスダイアログで、以下の操作を実行します。

    • 設定する OData サービスのルート URL を指定します。
    • OData サービスにアクセスするための認証タイプ(なし、OAuth2.0 認証、基本認証、カスタム認証)を選択し、その選択内容に応じて認証の詳細を指定します。
    • (任意)OData サービスの設定ページに表示するサムネイル画像のパスを指定します。

    注意:

    OData エンドポイントをサービスルートとして使用して Microsoft Dynamics サービスに接続する場合は、OAuth 2.0 認証を選択する必要があります。

  5. OK」をタップして、設定内容を保存します。

フォームデータモデルの作成

AEM Forms には、設定済みデータソースからフォームデータモデルを作成するための直感的なユーザーインターフェイスが用意されています。フォームデータモデルを作成してフォームデータモデルエディターを起動するには、以下の手順を実行します。

  1. AEM オーサーインスタンスで、フォーム/データ統合に移動します。

  2. 作成/フォームデータモデルをタップします。

  3. フォームデータモデルを作成ダイアログで、フォームデータモデルの名前を入力して「次へ」をタップします。

  4. データソースを選択画面に、設定されているすべてのデータソースが一覧表示されます。フォームデータモデル内で使用するデータソースを選択して「作成」をタップします。

    確認ダイアログで「開く」をタップして、フォームデータモデルエディターを起動します。

ここで、フォームデータモデルエディターの UI に表示される各種コンポーネントを確認してみます。

フォームデータモデルエディター
RESTful サービス、AEM ユーザープロファイル、RDBMS という 3 つのデータソースが含まれているフォームデータモデル

A. データソース

フォームデータモデルの作成時に選択したすべてのデータソースが一覧表示されます。各データソースを展開して、そのデータソース内のすべてのデータモデルオブジェクトとサービスを表示することができます。

B. 選択項目を追加

選択したデータモデルオブジェクトとサービスがフォームデータモデルに追加されます。

C. モデル

追加されたデータモデルオブジェクトのコンテンツ領域が表示されます。

D. サービス

データモデルオブジェクトの操作または追加されたサービスのコンテンツ領域が表示されます。

オブジェクトとエンティティを追加してモデルを作成するための領域。
オブジェクトとエンティティを追加してモデルを作成するための領域。

フォームデータモデルの操作

フォームデータモデルを作成してデータソースを追加したら、フォームデータモデルエディターを使用して、データモデルオブジェクトとサービスの追加、それらのプロパティの設定、データモデルオブジェクト間の関連付けの作成、フォームデータモデルとサービスのテストを行うことができます。

データモデルオブジェクトとサービスの追加

フォームデータモデル内の有効なデータソースを使用して、データモデルオブジェクトとサービスを追加することができます。追加したデータモデルオブジェクトは「モデル」タブに表示され、追加したサービスは「サービス」タブに表示されます。

データモデルオブジェクトとサービスを追加するには、以下の手順を実行します。

  1. データソースペインでデータソースを展開して、使用可能なデータモデルオブジェクトとサービスを表示します。

  2. フォームデータモデルに追加するデータモデルオブジェクトとサービスを選択して、「選択項目を追加」をタップします。

    selected-objects
    選択されたデータモデルオブジェクトとサービス

    「モデル」タブには、フォームデータモデルに追加されたすべてのデータモデルオブジェクトのグラフィカル表現と、それらのオブジェクトのプロパティが表示されます。フォームデータモデル内の各データモデルオブジェクトは、ボックスを使用して表現されます。

    model-tab
    追加したデータモデルオブジェクトが表示された「モデル」タブ

    注意:

    データモデルオブジェクトのボックスを選択してドラッグすると、コンテンツ領域内にデータモデルオブジェクトを配置することができます。フォームデータモデルに追加されたデータモデルオブジェクトは、データソースペイン内ではすべてグレーアウトされます。

    「サービス」タブには、追加されたサービスが一覧表示されます。

    services-tab
    データモデルサービスが表示された「サービス」タブ

    注意:

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。OData サービスのデータソースをフォームデータモデルに追加すると、フォームデータモデルでデータモデルオブジェクト内のすべてのナビゲーションプロパティが有効になるサービスを使用できます。このサービスを使用して、対応するデータモデルオブジェクトのナビゲーションプロパティを読み取ることができます。

    詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

  3. 保存」をタップして、フォームモデルオブジェクトを保存します。

    注意:

    アダプティブフォームルールを使用して、フォームデータモデルの「サービス」タブで設定したサービスを呼び出すことができます。設定したサービスは、ルールエディターの「サービスを起動」アクションで使用することができます。設定したサービスをアダプティブフォームルールで使用する方法については、「ルールエディター」で、「サービスを起動」ルールと「指定値」ルールに関する説明を参照してください。

データモデルオブジェクトの読み取りサービスと書き込みサービスを設定する

データモデルオブジェクトのデータの読み取りと書き込みを行うには、以下の手順を実行して、読み取りサービスと書き込みサービスを設定します。

  1. データモデルオブジェクト上部のチェックボックスを選択して「プロパティを編集」をタップします。

    edit-properties
    データモデルオブジェクトの読み取りサービスと書き込みサービスの設定を行う「プロパティを編集」

    プロパティを編集ダイアログが表示されます。

    edit-properties-2
    プロパティを編集ダイアログ

    注意:

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。OData サービスのデータソースをフォームデータモデルに追加すると、フォームデータモデルでデータモデルオブジェクト内のすべてのナビゲーションプロパティが有効になるサービスを使用できます。このサービスを使用して、対応するデータモデルオブジェクトのナビゲーションプロパティを読み取ることができます。 

    このサービスの使用について詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

  2. トップレベルオブジェクト」を切り替えて、データモデルオブジェクトを最上位のモデルオブジェクトにするかどうかを指定します。

    フォームデータモデルで設定したデータモデルオブジェクトは、そのフォームデータモデルに基づいて、アダプティブフォームのコンテンツブラウザーの「データモデルオブジェクト」タブで使用することができます。2 つのデータモデルオブジェクト間の関連付けを追加すると、「データモデルオブジェクト」タブで、関連付け先のデータモデルオブジェクトが、関連付け元のデータモデルオブジェクトの下にネストされます。ネストされたデータモデルが最上位のオブジェクトである場合は、「データモデルオブジェクト」タブにもそのデータモデルが個別に表示されます。この場合、ネストされた階層の内側と外側に 1 つずつデータモデルのエントリが表示されるため、フォームの作成者が混乱する可能性があります。関連付けられているデータモデルオブジェクトをネストされた階層内だけで表示するには、そのデータモデルオブジェクトの「トップレベルオモデル」プロパティを無効にします。    

  3. 選択したデータモデルオブジェクトの読み取りサービスと書き込みサービスを選択します。各サービスの引数が表示されます。

    read-write-services
    従業員データソースに対して設定されている読み取りサービスと書き込みサービス

  4. 読み取りサービスの引数に表示されている をタップして、ユーザープロファイル属性、要求属性、またはリテラル値にその引数をバインドし、バインドの値を指定します。これにより、指定したバインド属性またはリテラル値にサービスの引数がバインドされ、それが引数としてサービスに渡され、指定した値に関連付けられている詳細情報がデータソースから取得されます。

    上記の例では、id 引数を使用してユーザープロファイルの empid 属性の値を取得し、それを引数として読み取りサービスに渡しています。読み取りサービスは、指定された empid について、employee データモデルオブジェクトから関連プロパティの値を読み取り、その値をシステムに返します。そのため、フォームの empid フィールドで「00250」という値を入力すると、読み取りサービスは、「00250」という従業員 ID が設定されている従業員の詳細情報を読み取ります。

    また、引数の入力を任意にすることも必須にすることもできます。

    注意:

    JDBC データソースの場合のみ、読み取りサービスと書き込みサービスで、引数の追加、編集、削除を行うことができます。

    edit-argument
    id 引数を AEM ユーザープロファイルの empid 属性にバインドする

  5. 完了」をタップして引数を保存し、もう一度「完了」をタップしてプロパティを保存します。次に、「保存」をタップしてフォームデータモデルを保存します。

関連付けの追加

通常、データソース内のデータモデルオブジェクト間には関連付けが作成されています。この関連付けは、1 対 1 の場合もあれば、1 対多の場合もあります。例えば、1 人の従業員に対して複数の扶養家族を関連付けることができます。これを、1 対多の関連付けといいます。関連するデータモデルオブジェクトを接続するライン上では、「1:n」として表示されます。それに対して、特定の従業員 ID で一意の従業員名が返される場合などは、1 対 1 の関連付けになります。

データソース内の関連データモデルオブジェクトをフォームデータモデルに追加した場合、それらの関連付けは維持され、矢印の線で接続された状態で表示されます。フォームデータモデル内の異なる複数のデータソース全体で、データモデルオブジェクト間に関連付けを作成することができます。

注意:

JDBC データソース内で事前に定義されている関連付けは、フォームデータモデル内では維持されません。これらの関連付けについては、手動で作成する必要があります。

関連付けを追加するには、以下の手順を実行します。

  1. データモデルオブジェクト上部のチェックボックスを選択して「関連付けを追加」をタップします。関連付けを追加ダイアログが表示されます。

    add-association

    注意:

    OData サービスのメタデータドキュメントには、データモデルオブジェクトとサービスのほかに、2 つのデータモデルオブジェクト間の関連付けを定義するナビゲーションプロパティが含まれます。フォームデータモデルで関連付けを追加する際に、これらのナビゲーションプロパティを使用することができます。詳しくは、「OData サービスのナビゲーションプロパティの操作」を参照してください。

    関連付けを追加ダイアログが表示されます。

    add-association-2
    関連付けを追加ダイアログ

  2. 関連付けを追加ペインで、以下の操作を実行します。

    • 関連付けのタイトルを入力します。
    • 関連付けのタイプ(「1 対 1」または「1 対多」)を選択します。
    • 関連付けるデータモデルオブジェクトを選択します。
    • 選択したモデルオブジェクトからデータを読み取るための読み取りサービスを選択します。読み取りサービスの引数が表示されます。必要に応じて引数を編集し、関連付けるデータモデルオブジェクトのプロパティにその引数をバインドします。

    以下に示す例では、「扶養家族」データモデルオブジェクトの読み取りサービスのデフォルト引数が dependentid になっています。

    add-association-example
    「扶養家族」読み取りサービスのデフォルト引数が dependentid になっている

    ただし、この引数は、関連付けるデータモデルオブジェクト間の共通プロパティ(この例の場合は Employeeid)でなければなりません。そのため、Employeeid 引数を「従業員」データモデルオブジェクトの id プロパティにバインドして、関連付けられている扶養家族の詳細情報を「扶養家族」データモデルオブジェクトから取得する必要があります。

    add-association-example-2
    更新後の引数とバインド

    完了」をクックして、引数を保存します。

  3. 完了」をタップして関連付けを保存し、次に「保存」をタップしてフォームデータモデルを保存します。

  4. さらに関連付けを作成するには、上記の手順を繰り返します。

注意:

追加した関連付けは、入力したタイトルと、関連データモデルオブジェクトを接続する線とともに、データモデルオブジェクトのボックス内に表示されます。

関連付けを編集するには、その関連付けのチェックボックスを選択して「関連付けを編集」をタップします。

データモデルオブジェクトの関連付けの編集

プロパティの編集

フォームデータモデル内で追加されたデータモデルオブジェクトとサービスのプロパティを編集することができます。

プロパティを編集するには、以下の手順を実行します。

  1. フォームデータモデル内のデータモデルオブジェクト、プロパティ、またはサービスの横に表示されているチェックボックスを選択します。

  2. プロパティを編集」をタップします。選択したモデルオブジェクト、プロパティ、またはサービスの「プロパティを編集」ペインが表示されます。

    • データモデルオブジェクト:読み取りサービスと書き込みサービスを指定し、引数を編集します。
    • プロパティ:プロパティのタイプ、サブタイプ、形式を指定します。選択したプロパティをデータモデルオブジェクトのプライマリキーにするかどうかを指定することもできます。
    • サービス:サービスの入力モデルオブジェクト、出力タイプ、引数を指定します。Get サービスの場合は、配列を返す必要があるかどうかを指定することができます。

     

    edit-properties-service
    Get サービスのプロパティを編集ダイアログ

  3. 完了」をタップしてプロパティを保存し、次に「保存」をタップしてフォームデータモデルを保存します。

データソースの変更内容を使用したフォームデータモデルの更新

データソース内のデータモデルオブジェクトやサービスを変更または更新した場合、その変更内容は関連するフォームデータモデル内で自動的に反映されません。

フォームデータモデル内で変更内容を反映させるには、キャッシュを無効にする必要があります。

JDBC データソース

  1. AEM オーサーインスタンスで、http://[server]:[port]/system/console/bundles に移動します。

  2. AEM Forms Dermis Core (aem-dermis-core) バンドルを探し、クリックして開きます。

  3. 上記のバンドルを停止してからもう一度開始します。この操作により、キャッシュが無効になります。

RESTful サービス、SOAP ベースのサービス、OData サービス

  1. AEM オーサーインスタンスで、ツール/デプロイメント/クラウドサービスに移動します。

  2. フォームデータモデルで「設定を表示」をクリックします。設定されているすべてのクラウドサービスが一覧表示されます。

  3. 更新されたデータソースのクラウドサービスをクリックして開きます。

  4. クラウドサービスの設定を保存します。

データモデルオブジェクトとサービスのテスト

これまでの手順で設定したフォームデータモデルを使用する前に、設定したデータモデルオブジェクトとサービスが正しく動作するかどうかをテストすることをお勧めします。データモデルオブジェクトとサービスをテストするには、以下の手順を実行します。

  1. フォームデータモデル内のデータモデルオブジェクトまたはサービスを選択し、「モデルオブジェクトをテスト」または「サービスをテスト」をタップします。

    フォームデータモデルをテストウィンドウが表示されます。

    test-data-model
  2. 上記のウィンドウの入力ペインで、テストするデータモデルオブジェクトまたはサービスを選択します。

  3. テストコードで引数の値を指定して「テスト」をタップします。テストが成功すると、出力ペインに出力情報が表示されます。

    test-data-model-2

同様の方法で、フォームデータモデル内の他のデータモデルオブジェクトやサービスをテストすることができます。

アダプティブフォームでフォームデータモデルを使用する場合の使用例

JSON スキーマの拡張機能であるフォームデータモデルを使用して、以下の処理を行うことができます。

  • アダプティブフォームとアダプティブフォームフラグメントを作成する。
  • アダプティブフォームに事前にデータを取り込む。
  • フォームの送信時に、フォームデータをデータソースにもう一度書き込む。
  • アダプティブフォームのルールを使用してサービスを呼び出す。

アダプティブフォームとアダプティブフォームフラグメントを作成する

フォームデータモデルに基づいて、アダプティブフォームアダプティブフォームフラグメントを作成することができます。フォームデータモデルを使用してアダプティブフォームまたはアダプティブフォームフラグメントを作成するには、以下の手順を実行します。

  1. プロパティを追加画面の「フォームモデル」タブで、「次から選択」ドロップダウンリストから「フォームデータモデル」を選択します。

    create-af-1
  2. フォームデータモデルを選択」をタップして展開します。すべての有効なフォームデータモデルが一覧表示されます。

    任意のフォームデータモデルを選択します。

    create-af-2
  3. アダプティブフォームフラグメントのみ)フォームデータモデル内の 1 つのデータモデルオブジェクトだけに基づいて、アダプティブフォームフラグメントを作成することができます。「フォームデータモデル定義」ドロップダウンを展開します。指定したフォームデータモデル内のすべてのデータモデルオブジェクトがリスト表示されます。リストから、任意のデータモデルオブジェクトを選択します。

    create-af-3

フォームデータモデルに基づいてアダプティブフォームまたはアダプティブフォームフラグメントを作成すると、アダプティブフォームエディターのコンテンツブラウザーの「データモデルオブジェクト」タブにフォームデータモデルオブジェクトが表示されます。

注意:

アダプティブフォームフラグメントの場合は、オーサリング時に選択したデータモデルオブジェクトと、そのオブジェクトに関連付けられているデータモデルオブジェクトだけが、「データモデルオブジェクト」タブに表示されます。

data-model-objects-tab

データモデルオブジェクトをアダプティブフォームまたはアダプティブフォームフラグメントにドラッグアンドドロップすると、フォームフィールドを追加することができます。追加されたフォームフィールドには、データモデルオブジェクトのメタデータプロパティとバインド情報が保管されます。このバインド情報により、フォームの送信時に、対応するデータソース内のフィールド値が更新され、フォームのレンダリング時に、対応するデータソース内のフィールドに値が取り込まれます。

アダプティブフォームに事前にデータを取り込む

AEM Forms には、すぐに使用できるフォームデータモデル事前入力サービスが用意されています。フォームデータモデルに基づいて、このサービスをアダプティブフォームで使用することができます。この事前入力サービスは、アダプティブフォーム内のデータモデルオブジェクトに対してデータソースのクエリを実行し、フォームのレンダリング時に、フィールドに値を取り込みます。

アダプティブフォームに対してフォームデータモデル事前入力サービスを有効にするには、アダプティブフォームコンテナのプロパティを開き、基本アコーディオンの「事前入力サービス」ドロップダウンで「フォームデータモデル事前入力サービス」を選択します。次に、各プロパティを保存します。

prefill-service

送信されたフォームデータをデータソースに書き込む

フォームデータモデルに基づくフォームを送信した場合、そのフォームを設定して、特定のデータモデルオブジェクトに対して送信されたデータをそのデータモデルオブジェクトのデータソースに書き込むことができます。この設定を行うために、AEM Forms には、すぐに使用できるフォームデータモデル送信アクションが用意されています。これは、フォームデータモデルをベースとするアダプティブフォーム専用のアクションです。このアクションを実行すると、特定のデータモデルオブジェクトに対して送信されたデータが、そのデータモデルオブジェクトのデータソースに書き込まれます。

フォームデータモデル送信アクションを設定するには、アダプティブフォームコンテナのプロパティを開き、送信アコーディオンの「送信アクション」ドロップダウンで「フォームデータモデルを使用して送信」を選択します。次に、「送信するデータモデルオブジェクトの名前」ドロップダウンで、データモデルオブジェクトを探して選択します。その後、各プロパティを保存します。

フォームを送信すると、設定されているデータモデルオブジェクトのデータが、各データソースに書き込まれます。 

data-submission

バイナリデータモデルオブジェクトのプロパティを使用して、フォームの添付ファイルをデータソースに送信することもできます。添付ファイルを JDBC データソースに送信するには、以下の手順を実行します。

  1. バイナリプロパティが含まれているデータモデルオブジェクトをフォームデータモデルに追加します。

  2. コンポーネントブラウザーの「添付ファイル」コンポーネントを、アダプティブフォームにドラッグアンドドロップしますす。

  3. 追加されたコンポーネントをタップして選択し、次に をタップして、そのコンポーネントのプロパティブラウザーを開きます。 

  4. 「バインド参照」フィールドで をタップし、フォームデータモデルに追加したバイナリプロパティに移動してそのプロパティを選択します。必要に応じて、他のプロパティを設定します。

    をタップして各プロパティを保存します。この操作により、添付ファイルフィールドが、フォームデータモデルのバイナリプロパティにバインドされます。

  5. アダプティブフォームコンテナプロパティの「送信」セクションで、「フォームの添付ファイルを送信」を有効にします。これにより、フォームの送信時に、バイナリプロパティフィールドの添付ファイルがデータソースに送信されるようになります。

ルールを使用してデータモデルサービスを呼び出す

フォームデータモデルに基づくアダプティブフォームの場合、ルールを作成して、フォームデータモデル内で設定されているサービスを呼び出すことができます。ルール内の「サービスを起動」操作を実行すると、フォームデータモデル内のすべての有効なサービスが一覧表示され、任意のサービスの入力フィールドと出力フィールドを選択することができます。「指定値」というルールタイプを使用してフォームデータモデルサービスを呼び出し、そのサービスから返された出力に対するフィールドの値を設定することもできます。

例えば以下のルールの場合、従業員 ID を入力として使用する Get サービスが呼び出され、このサービスから返された値が、フォーム内の対応する扶養家族 ID フィールド、姓フィールド、名フィールド、性別フィールドに設定されます。

invoke-service

また、guidelib.dataIntegrationUtils.executeOperation API を使用して、ルールエディターのコードエディターで JavaScript を記述することもできます。API について詳しくは、「フォームデータモデルサービスを呼び出すための API」を参照してください。

OData サービスでは、ナビゲーションプロパティを使用して、2 つのデータモデルオブジェクト間の関連付けが定義されます。これらのプロパティは、エンティティタイプまたは複合タイプに対して定義されます。例えば、サンプルの TripPin OData サービスのメタデータファイルから抽出した以下のコードの場合、Friends、BestFriend、Trips という 3 つのナビゲーションプロパティが Person エンティティに含まれています。

ナビゲーションプロパティについて詳しくは、OData のドキュメントを参照してください。

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<script/>
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.OData.Service.Sample.TrippinInMemory.Models">
<EntityType Name="Person">
<Key>
<PropertyRef Name="UserName"/>
</Key>
<Property Name="UserName" Type="Edm.String" Nullable="false"/>
<Property Name="FirstName" Type="Edm.String" Nullable="false"/>
<Property Name="LastName" Type="Edm.String"/>
<Property Name="MiddleName" Type="Edm.String"/>
<Property Name="Gender" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.PersonGender" Nullable="false"/>
<Property Name="Age" Type="Edm.Int64"/>
<Property Name="Emails" Type="Collection(Edm.String)"/>
<Property Name="AddressInfo" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location)"/>
<Property Name="HomeAddress" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Location"/>
<Property Name="FavoriteFeature" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature" Nullable="false"/>
<Property Name="Features" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Feature)" Nullable="false"/>
<NavigationProperty Name="Friends" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person)"/>
<NavigationProperty Name="BestFriend" Type="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Person"/>
<NavigationProperty Name="Trips" Type="Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)"/>
</EntityType>

フォームデータモデル内で OData サービスを設定すると、そのフォームデータモデル内のサービスを経由して、エンティティコンテナ内のすべてのナビゲーションプロパティを使用できるようになります。このサンプルの TripPin OData サービスでは、フォームデータモデル内のいずれかの GET LINK サービスを使用して、Person エンティティコンテナに含まれている 3 つのナビゲーションプロパティを読み取ることができます。

以下の図では、フォームデータモデル内の「GET LINK of Person /People」サービスがハイライト表示されています。これは、TripPin OData サービスの Person エンティティに含まれている 3 つのナビゲーションプロパティを組み合わせたサービスです。

nav-prop-service

フォームデータモデルの「サービス」タブに GET LINK サービスを追加すると、サービス内で使用する出力モデルオブジェクトとナビゲーションプロパティを選択するための各種プロパティを編集できるようになります。例えば、以下の「GET LINK of Person /People」サービスでは、出力モデルオブジェクトとして「Trip」を使用し、ナビゲーションプロパティとして「Trips」を使用しています。

edit-prop-nav-prop

注意:

NavigationPropertyName 引数の「デフォルト値」フィールドで指定できる値は、「配列を返しますか?」トグルボタンの状態によって異なります。このボタンが有効になっている場合は、コレクションタイプのナビゲーションプロパティが表示されます。

この例では、出力モデルオブジェクトとして「Person」を選択し、ナビゲーションプロパティの引数として「Friends」または「BestFriend」を選択することもできます(どちらを選択するかは、「配列を返しますか?」ボタンが有効になっているか無効になっているかによって異なります)。

edit-prop-nav-prop2

同様に、フォームデータモデルで関連付けを追加する際に GET LINK サービスを選択し、サービスのナビゲーションプロパティを設定することができます。ただし、ナビゲーションプロパティを選択するには、「バインディング先」フィールドが「リテラル」に設定されている必要があります。

add-association-nav-prop

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー