顧客は、多くの場合、サービスや特典の申し込みに複数のフォームを送信する必要があります。 関連するすべてのフォームを検索し、それらを個別に入力、送信、および追跡する必要があります。 また、フォーム間で共通の詳細を複数回入力する必要があります。 多数のフォームが含まれる場合、プロセス全体が煩雑で誤りが生じやすくなります。 AEM Formsのフォームセット機能を使用すると、このような状況でのユーザーエクスペリエンスをシンプル化できます。
フォームセットは、1 つにグループ化され、エンドユーザーに対して 1 つのフォームのセットとして提供されるHTML5 のフォームの集まりです。 エンドユーザーがフォームセットの入力を開始すると、フォームを別のフォームにシームレスに切り替えることができます。 最後に、1 回のクリックですべてのフォームを送信できます。
AEM Formsでは、フォーム作成者がフォームセットの作成、設定、管理を直感的なユーザーインターフェイスで行うことができます。 作成者は、エンドユーザーに指示する特定の順序でフォームを並べることができます。 また、個々のフォームに条件や適格性の式を適用して、ユーザーの入力に基づいて表示を制御することもできます。 例えば、配偶者の詳細フォームは、配偶者の有無が [ 既婚 ] に設定されている場合にのみ表示するように設定できます。
さらに、共通のデータバインディングを共有するように、異なるフォームの共通のフィールドを設定できます。 適切なデータバインディングが設定されている場合、エンドユーザーは、後続のフォームで自動入力される一度だけ共通情報を入力する必要があります。
フォームセットはAEM Formsアプリでもサポートされ、現場の従業員がフォームセットをオフラインで取得し、顧客にアクセスし、データを入力し、後でAEM Formsサーバーと同期して、フォームデータをビジネスプロセスに送信できます。
複数の XDP ファイルや Designer を使用して作成したフォームテンプレートを一つのフォームセットに関連付けることができます。それから、フォームセットを使用して、ユーザーが最初にフォームに入力した値やプロフィールを基に、必要な情報のみを含む XDP ファイルを生成できます。
AEM Forms ユーザーインターフェイスを使用して、すべてのフォームやフォームセット、および関連アセットを一元的に管理できます。
フォームセットを作成するには、次の手順を実行します。
Forms/Formsとドキュメントを選択します。
作成/フォームセットを選択します。
プロパティを追加ページで、次の詳細を追加し、「次へ」をクリックします。
フォームを選択画面に、使用可能な XDP フォームまたは XDP ファイルが表示されます。 フォームセットに含めるフォームを検索して選択し、「フォームセットに追加」をクリックします。 必要に応じて、追加するフォームを再度検索します。 すべてのフォームをフォームセットに追加したら、「次へ」をクリックします。
XDP フォーム内のフィールド名にはドット(.)文字を含めないでください。ドット文字が含まれていた場合、スクリプトがそのフィールドを解決できなくなります。
フォームを設定のページで、次の操作を実行できます。
fs.valueOf(<Form Identifier>, <fieldSom expression>) > <value>
例えば、業務用と旅費という 2 つのフォームがフォームセットにある場合、これらのフォームの「実施要件の式」フィールドに JavaScript スニペットを追加して、フォームの経費のタイプに対するユーザー入力を確認できます。 ユーザーが「ビジネス費」を選択した場合、「ビジネス費」フォームがエンドユーザーに表示されます。 また、ユーザーが旅費を選択した場合は、別のフォームがエンドユーザーに表示されます。 詳しくは、「適格性式」を参照してください。
また、作成者は、各行の右隅にある削除アイコンを使用してフォームセットからフォームを削除するか、「+「 」アイコンを使用して、アイコンをクリックします。 この'+「 」アイコンをクリックすると、「フォームを選択」するために使用したウィザードの前の手順に戻ります。 既存の選択内容は維持され、追加の選択内容は、そのページの「フォームセットに追加」アイコンを使用してフォームセットに追加する必要があります。
フォームセットで使用されるすべてのフォームは、AEM Formsユーザーインターフェイスで管理されます。
フォームセットを作成した後は、そのフォームセットに対して次の操作を実行できます。
フォームセットを編集するには、次の手順を実行します。
Forms/Formsとドキュメントを選択します。
編集するフォームセットを見つけます。 その上にカーソルを置いて、「編集」()を選択してください。
フォームを設定ページで、以下の内容を編集できます。
関連する削除アイコンをクリックして、フォームセットからフォームを削除することもできます。
AEM Forms Management ユーザーインターフェイスを使用してフォームセットを作成したら、Workbench を使用して、そのフォームセットをスタートポイントまたはタスクの割り当てアクティビティで使用できます。
処理を設計する際、タスクの割り当て / 始点の Presentation & Data セクションの下で、「CRX アセットを使用」を選択します。CRX アセットブラウザーが表示されます。
フォームセットを選択して、AEM リポジトリ(CRX)のフォームセットをフィルタリングします。
フォームセットを選択してから「OK」をクリックしてください。
フォームセット内の適任性の式は、ユーザーに表示されるフォームを定義し動的に制御するために使用されます。 例えば、ユーザーが特定の年齢グループに属している場合にのみ特定のフォームを表示する場合などです。 Forms Manager を使用して、適任性の式を指定および編集します。
適任性の式には、ブール値を返す任意の有効な JavaScript ステートメントを指定できます。 JavaScript コードスニペットの最後のステートメントは、JavaScript コードスニペットの残り(前の行)の処理に基づいてフォームの適格性を決定するブール値として扱われます。 式の値が true の場合、フォームはユーザーへの表示の対象となります。 このようなフォームは、適格なフォームと呼ばれます。
フォームセットの最初のフォームの適任性の式は実行されません。 適任性の式に関係なく、最初のフォームが常に表示されます。
標準の JavaScript 関数に加えて、フォームセットでは、フォームセット内のフォームのフィールドの値にアクセスできる fs.valueOf API も公開しています。 この API を使用して、フォームセット内のフォームフィールドの値にアクセスします。 API 構文は fs.valueOf(formUid、fieldSOM) です。ここで、
formUid と fieldSOM の両方のパラメーターは文字列リテラルである必要があります。
API の有効な使用方法は次のとおりです。
fs.valueOf("form1", "xfa.form.form1.subform1.field1")
API の正しくない使用法:
var formUid = "form1";
var fieldSOM = "xfa.form.form1.subform1.field1"; fs.valueOf(formUid, fieldSOM);
フォームセットは、共通または異なるスキーマを持つ複数の HTML5 フォームのまとまりです。XML ファイルを使用して、フォームフィールドへの事前入力を行うこともできます。XML ファイルをフォームセットに関連付けることで、フォームセットの中のフォームを開いたときに、いくつかのフィールドは事前入力されます。
事前入力XML ファイルは、フォームセットの URL の、dataRef パラメータを使用して指定します。dataRef パラメーターは、フォームセットと結合される XML データファイルの絶対パスを指定します。
例えば、次の構造を持つフォームセットに 3 つのフォーム (form1、form2、form3) があるとします。
form1
field form1field
form2
field form2field
form3
field form3field
各フォームには、「field」という共通の名前のフィールドと、「formfield」という一意の名前を持つフィールドがあります。
次の構造を持つ XML を使用して、このフォームセットに事前入力できます。
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<field>common field value</field>
<form1field>value1</form1field>
<form2field>value2</form2field>
<form3field>value3</form3field>
</formSetRootTag>
XML のルートタグには任意の名前を指定できますが、フィールドに対応する要素タグは、フィールドと同じ名前にする必要があります。 XML の階層とフォームの階層は同じでなければなりません。つまり、XML にはサブフォームをラップするための対応するタグがなければなりません。
上記の XML のスニペットでは、フォームセットの事前入力 XML が、個々のフォームの事前入力 XML のスニペットのまとまりであることがわかります。異なるフォームの特定のフィールドがお互いに類似したデータ階層 / スキーマを持つ場合、それらのフィールドは同じ値が事前入力されます。この例では、3 つのすべてのフォームにおいて、共通のフィールド「field」に同じ値が事前入力されています。これは、あるフォームから次のフォームにデータを転送する簡単な方法です。 これは、フィールドを同じスキーマまたはデータ参照に連結することでも実現できます。 フォームのスキーマに基づいてフォームセットのデータを区別する場合。 これは、フォームセットの作成時に、フォームの「データルート」属性を指定することで実現できます(デフォルト値は「/」で、フォームセットのルートタグにマッピングされます)。
前の例では、3 つのフォームに対してそれぞれ「/form1」、「/form2」、「/form3」のデータルートを指定する場合、次の構造の事前入力 XML を使用する必要があります。
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<form1>
<field>field value1</field>
<form1field>value1</form1field>
</form1>
<form2>
<field>field value2</field>
<form2field>value2</form2field>
</form2>
<form3>
<field>field value3</field>
<form3field>value3</form3field>
</form3>
</formSetRootTag>
フォームセットにおいて、XML スキーマは以下の構文で定義されます。
<formset>
<fs_data>
<xdp:xdp xmlns:xdp="https://ns.adobe.com/xdp/">
<xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<rootElement>
... data ....
</rootElement>
</xfa:data>
</xfa:datasets>
</xdp:xdp>
</fs_data>
<fs_draft>
... private data...
</fs_draft>
</formset>
重複するデータルートを持つ 2 つのフォームがある場合、またはあるフォームの要素階層が別のフォームのデータルート階層と重なっている場合、事前入力 XML では、重なっている要素の値が結合されます。 送信 XML は事前入力 XML と同様の構造を持っていますが、送信 XML にはより多くのラッパータグと、一部のフォームセットのコンテキストデータタグが末尾に追加されています。
事前入力 XML ファイルを作成するための構文ルール:
parent elements:
null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: fs_data
フォームセット XML のルート要素。 フォームセット内のフォームの rootSubform の名前としてこの単語を使用しないことをお勧めします。
parent elements:
formset
基数:[1]
submitXML:P
prefillXML:O
children: xdp:xdp/rootElement
サブツリーはフォームセット内のフォームのデータを示します。 この要素は、フォームセット要素が存在しない場合にのみ、事前入力 XML でのオプションです
parent elements: fs_data/null
cardinality: [0,1]
submitXML: O
prefillXML: O
children: xfa:datasets
このタグは、HTML5 フォーム XML の開始を示します。 事前入力 XML に存在する場合、または事前入力 XML がない場合は、送信 XML に追加されます。 このタグは、事前入力 XML から削除できます。
parent elements: xdp:xdp
cardinality: [1]
submitXML: O
prefillXML: O
children: xfa:data
parent elements: xfa:datasets
cardinality: [1]
submitXML: O
prefillXML: O
children: rootElement
parent elements: xfa:datasets/fs_data/null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: controlled by the Forms in Form set
「rootElement」という名前はプレースホルダーでしかありません。実際の名前はフォームセットで使用されているフォームから選択されます。「rootElement」で始まるサブツリーは、フォームセットのフォーム内にフィールドのデータとサブフォームを含んでいます。rootElement とその子の構造を決定する複数の要因があります。
事前入力 XML では、このタグはオプションですが、見つからない場合、XML 全体が無視されます。
ルート要素タグの名前
事前入力 XML にルート要素がある場合、その要素の名前は送信 XML にも取り込まれます。 事前入力 XML がない場合、 rootElement の名前は、 dataRoot プロパティが「/」に設定されているフォームセット内の最初のフォームのルートサブフォームの名前になります。 そのようなフォームがない場合、rootElement 名はとなります。 fs_dummy_root:予約済みのキーワードです。
AEM Formsアプリを使用すると、フィールドワーカーはモバイルデバイスをAEM Formsサーバーと同期し、タスクを操作できます。 デバイス上のローカルにデータを保存することで、デバイスがオフラインの場合でもアプリケーションが機能します。 写真や現場作業者などの注釈機能を使用すると、ビジネスプロセスに統合する正確な情報を提供できます。
次のデータパターンは、フォームセットでは完全にはサポートされていません。
フォームセットで完全にはサポートされていないパターン | 例 |
入力サイズとパターンサイズの不一致 | When pattern= num{z,zzz} および input= 12,345 または 1,23 |
括弧「(" ")」を含むパターン形式文字列 | num{(zz,zzz)} |
複数のデータパターン | num{zz,zzz} | num{z,zzz,zzz} |
略記法パターン | num.integer{}, num.decimal{}, num.percent{}または num.currency{} |