アダプティブフォームと XFA フォームテンプレートの同期

はじめに

XFA フォームテンプレート(*.XDP ファイル)に基づいてアダプティブフォームを作成することができます。この方法では既存の XFA フォームが再利用でき、投資効率が得られます。XFA フォームテンプレートを使用したアダプティブフォームの作成方法については、「テンプレートに基づくアダプティブフォームの作成」を参照してください。

XDP ファイルのフィールドをアダプティブフォームで再利用することができます。これらのフィールドは、バインドされたフィールドと呼ばれます。バインドされたフィールドのプロパティ(スクリプト、ラベル、表示形式など)は、XDP ファイルからコピーされます。これらのプロパティには、値をオーバーライドできるものもあります。

AEM Forms では、XDP ファイル内の対応するフィールドに後で変更があった場合も、アダプティブフォームのフィールドが同期された状態を保つことができます。この記事では、この同期を有効にする方法を説明します。

XFA フォームからアダプティブフォームにフィールドをドラッグすることができます

AEM Forms のオーサリング環境では、XFA フォーム(左)からアダプティブフォーム(右)へとフィールドをドラッグすることができます

前提条件

この記事の情報を使用するには、次の内容について確認しておくと役立ちます。

この記事の例に示されているアセットを使用するには、次のセクション「サンプルパッケージ」で説明されているとおりにサンプルパッケージをダウンロードしてください。

サンプルパッケージ

この記事では、更新された XFA フォームテンプレートを使用したアダプティブフォームの同期方法を、例を使って示しています。例で使用しているアセットは、この記事の「ダウンロード」の節からダウンロードできるパッケージに含まれています。

パッケージをアップロードすると、これらのアセットが AEM Forms UI に表示されます。

パッケージマネージャー: https://<server>:<port>/crx/packmgr/index.jsp を使ってパッケージをインストールします

パッケージには次のアセットが含まれています。

  1. sample-form.xdp:例として使用されている XFA フォームテンプレート

  2. sample-xfa-af:sample-form.xdp ファイルに基づくアダプティブフォームただし、このアダプティブフォームにはフィールドは含まれていません。次の手順で、このアダプティブフォームにコンテンツを追加します。

アダプティブフォームへのコンテンツの追加

  1. https://<server>:<port>/aem/forms.html に移動します。要求された場合は、資格情報を入力します。
  2. 作成者モードで sample-af-xfa を開き、編集します。
  3. サイドバーにあるコンテンツブラウザーで、「データモデルオブジェクト」タブを選択します。NumericField1 と TextField1 をアダプティブフォームにドラッグします。
  4. NumericField1 のタイトルを Numeric Field から AF Numeric Field に変更します。
メモ

前述の手順では、XDP ファイル内のフィールドのプロパティを上書きしました。したがって、このプロパティは、XDP ファイル内の対応するプロパティが後に変更されても同期されません。

XDP ファイル内の変更の検出

XDP ファイルまたはフラグメントに変更があった場合、AEM Forms UI により、その XDP ファイルまたはフラグメントに基づくすべてのアダプティブフォームにフラグが付けられます。

XDP ファイルを更新した後、変更がフラグ付けされるようにするには、その XDP ファイルを AEM Forms UI に再度アップロードする必要があります。

例として、次の手順を使って sample-form.xdp ファイルを更新します。

  1. https://<server>:<port>/projects.html.に移動します。指示に従って、資格情報を入力します。

  2. 左側にある「フォーム」タブをクリックします。

  3. ローカルマシンに sample-form.xdp ファイルをダウンロードします。XDP ファイルが、任意のファイル解凍ユーティリティで抽出可能な .zip ファイル形式でダウンロードされます。

  4. sample-form.xdp ファイルを開き、TextField1 のタイトルを Text Field から My Text Field に変更します。

  5. sample-form.xdp ファイルを AEM Forms UI にアップロードして戻します。

XDP ファイルが更新されると、XDP ファイルに基づいてアダプティブフォームを編集する際、エディターにアイコンが表示されます。このアイコンは、アダプティブフォームが XDP ファイルと同期されていないことを示すものです。次の画像では、サイドバーにアイコンが表示されています。

アダプティブフォームが XDP ファイルと同期されていないことを示すアイコン

アダプティブフォームと最新の XDP ファイルとの同期

XDP ファイルと同期していないアダプティブフォームを次回、作成用に開くと、このアダプティブフォームのスキーマ / フォームテンプレートは更新されましたClick Hereというメッセージが表示されます(新しいバージョンでリベースするために使用)。

メッセージをクリックすると、アダプティブフォーム内のフィールドが XDP ファイル内の対応するフィールドと同期されます。

この記事で使用される例では、sample-xfa-af をオーサリングモードで開きます。メッセージが、アダプティブフォームの下部に表示されます。

アダプティブフォームを XDP ファイルと同期するよう促すメッセージ

プロパティの更新

XDP ファイルからアダプティブフォームにコピーされたプロパティは、作成者によってアダプティブフォーム内で(コンポーネントダイアログから)明示的に上書きされたプロパティを除き、すべて更新されます。更新されたプロパティのリストは、サーバーログで見ることができます。

例にあるアダプティブフォームのプロパティを更新するには、メッセージ内の「"Click Here"」のラベルが付いたリンクをクリックします。TextField1 のタイトルが、Text Field から My Text Field に変更されます。

update-property

メモ

AF Numeric Field のラベルが変更されなかったのは、「アダプティブフォームへのコンテンツの追加」で説明したとおり、コンポーネントプロパティダイアログでこのプロパティを上書きしたためです。

XDP ファイルからアダプティブフォームへの新しいフィールドの追加

「フォーム階層」タブから元の XDP ファイルに後から追加された新しいフィールドは、アダプティブフォームへとドラッグすることができます。

「フォーム階層」タブのフィールドを更新するために、エラーメッセージ内のリンクをクリックする必要はありません。

XDP ファイルから削除されたフィールド

アダプティブフォームに以前コピーされたフィールドが XDP ファイルから削除されている場合には、XDP ファイルにフィールドが存在しないというエラーメッセージが作成者モード内で表示されます。その場合は、アダプティブフォームから手動でそのフィールドを削除するか、コンポーネントダイアログで bindRef プロパティを消去します。

次の手順では、この記事で使われている例の中のアセットに対してこの方法を使用する流れを説明します。

  1. sample-form.xdp ファイルを更新し、NumericField1 を削除します。

  2. AEM Forms UI に sample-form.xdp ファイルをアップロードします。

  3. sample-xfa-af アダプティブフォームを作成のために開きます。次のエラーメッセージが表示されます:このアダプティブフォームのスキーマ/フォームテンプレートは更新されました。Click Here(新しいバージョンでリベースするために使用)。

  4. メッセージ内の「Click Hereのラベル」が付いたリンクをクリックします。XDP ファイルにフィールドが存在しないというエラーメッセージが表示されます。

XDP ファイルで要素を削除すると表示されるエラー

削除されたフィールドも、フィールドにエラーが存在することを示すアイコンでマークされます。

フィールド内のエラーアイコン

メモ

アダプティブフォームのフィールドで誤ったバインド(編集ダイアログの無効な bindRef 値)を持つフィールドも、削除されたフィールドとみなされます。これらのエラーを修正しないでアダプティブフォームを発行すると、フィールドはバインドされていない通常のアダプティブフォームフィールドとして処理され、出力 XML ファイルのバインドされていないセクションに追加されます。

ダウンロード

この記事の例に使用されているコンテンツパッケージ

ファイルを入手

このページ