AEM Forms におけるフォームセット

概要

サービスを受けるために、顧客が複数のフォームを送信しなければならないことがあります。それに伴い関連するフォームを集め、入力、送信し、それらを個別にトラッキングしなければなりません。また、複数のフォームで同じ内容を何度も入力しなければなりません。フォームの数が多いとこのプロセスは面倒になり、また間違いも起こりやすくなります。AEM Forms のフォームセット機能により、このような場合のユーザー体験をシンプルにすることができます。

フォームセットは HTML5 フォームの集まりであり、エンドユーザーには 1 つのフォームのセットとして提供されます。エンドユーザーがフォームセットへの入力を始めると、フォームセットはシームレスにその内容を別のフォームにも写します。最終的に、お客様はワンクリックですべてのフォームを送信することができます。

AEM Forms では、フォームの作成、設定、フォームセットの管理を直感的なインターフェイスで行うことができます。フォーム作成者は、エンドユーザーが順を追って入力するように、フォームの順番を並べることができます。またそれぞれのフォームに条件や適格性の式を設定することで、ユーザーの入力に基づいて表示ををコントロールすることができます。例えば、婚姻区分で既婚が選ばれた場合のみ、配偶者についてのフォームを表示するように設定することができます。

さらに、異なるフォーム間で共通するフィールドは、共通データバインディングを共有するよう設定することができます。適切な箇所でデータバインディングを使うと、エンドユーザーが他のフォームと共通する情報を一度入力するだけで、次のフォームではオートフィル入力が行われるようになります。

フォームセットは AEM Forms のアプリでもサポートされており、現場で働く従業員はフォームセットをオフラインにして、顧客を訪問、データを入力し、後で AEM Forms のサーバーとシンクロさせてデータを送信し、ビジネスを進めることができます。

フォームセットの作成と管理

複数の XDP ファイルや Designer を使用して作成したフォームテンプレートを一つのフォームセットに関連付けることができます。それから、フォームセットを使用して、ユーザーが最初にフォームに入力した値やプロフィールを基に、必要な情報のみを含む XDP ファイルを生成できます。

AEM Forms ユーザーインターフェイスを使用して、すべてのフォームやフォームセット、および関連アセットを一元的に管理できます。

フォームセットの作成

フォームセットを作成するには、次の手順を実行します。

  1. フォーム/フォームとドキュメントを選択します。

  2. 作成/フォームセットを選択します。

  3. プロパティの追加ページで、次の詳細を追加して「次へ」をクリックします。

    • タイトル:ドキュメントのタイトルを指定します。タイトルを指定すると、AEM Forms ユーザーインターフェイス内のフォームセットを特定しやすくなります。
    • 説明:ドキュメントに関する詳細情報を入力します。
    • タグ:フォームセットを識別するための固有タグを指定します。タグを指定するとフォームセットを検索しやすくなります。タグを作成するには、「タグ」ボックスに新しいタグ名を入力します。
    • 送信 URL:フォームセットのスタンドアロン表示時に送信したデータが公開される URLを指定します。(AEM Forms アプリを使用しない場合)。データはマルチパートデータまたはフォームデータとして次のリクエストパラメーターとともにこのエンドポイントに送信されます。
    • dataXML:送信したフォームセットデータの XML 表現を含むパラメータです。フォームセットのすべてのフォームが共通のスキーマを使用している場合、スキーマごとに XML が生成されます。それ以外の場合、XML のルートタグには添付ファイルを含むフォームセットの入力済みの各フォームの子タグが含まれます。
    • formsetPath:送信された CRXDE 内のフォームセットのパス。
    • HTML レンダリングプロファイル:フローティングフィールド、添付ファイル、下書きのサポート(スタンドアロンのフォームセットレンダリング用)などの特定のオプションを構成して、フォームセットの表示方法や動作、操作性などをカスタマイズできます。既存のプロファイルをカスタマイズまたは拡張して、HTML フォームのプロファイル設定を変更することができます。

    フォームセット:プロパティの追加

  4. フォームを選択画面には使用可能な XDP フォームまたは XDP ファイルが表示されます。フォームセットに追加するフォームを検索して選択し、「フォームセットに追加」をクリックします。必要に応じて、追加するフォームを再度検索します。フォームセットに全てのフォームを追加し、「次へ」をクリックします。

    メモ

    XDP フォーム内のフィールド名にはドット(.)文字を含めないでください。ドット文字が含まれていた場合、スクリプトがそのフィールドを解決できなくなります。

  5. フォームを設定のページで、次の操作を実行できます。

    • Form Order:フォームをドラッグ&ドロップして順番を並べ替えます。このフォームの順番により、AEM Forms アプリと Stand Alone Rendition でエンドユーザーに表示されるフォームの順番が決定します。
    • Form Identifier:適格性の式で使用するための一意の ID をフォームに設定します。
    • Data root:フォームセットの各フォームに対して、作成者は送信済みの XML でも特定フォームのデータが配置される XPATH を設定できます。デフォルトでは、この値は / です。フォームセットにあるすべてのフォームがスキーマバインドされており、同じ XML スキーマを共有している場合、作成者はこの値を変更できます。フォーム内の各フィールドが XDP で指定された適切なデータバインディングを持っている場合にお勧めします。2 つの異なるフォームの 2 つのフィールドが共通のデータバインディングを共有している場合、2 番目のフォームのフィールドは、1 番目のフォームで取り込んだ値を事前入力した状態で表示されます。同じ内部コンテンツを持つ 2 つのサブフォームを同じ XML ノードに結合しないでください。XML の構造についての詳細は、「フォームセットに対する XML の事前入力」を参照してください。
    • Eligibility expression:フォームセット内のフォームが入力用に適格であるか否かを示すブール値を評価する JavaScript 式を設定します。この結果が「false」の場合、ユーザーは入力を要求されない、もしくはフォームの表示すら行われません。通常、この式はこのフォームの前に取り込まれるフィールドの値に基づいています。これらの式にはフォームセット API fs.valueOf に対する呼び出しも含まれており、フォームセットにあるフォームのフィールドにユーザーが入力した値を抽出します。

    fs.valueOf(<Form Identifier>, <fieldSom expression>) > <value>

    例えば、フォームセットに「仕事の経費」と「旅費」という 2 つのフォームがある場合、これらの両方のフォームの Eligibility expression フィールドに Javascript スニペットを追加して、フォームで出費のタイプにユーザーが入力した内容を確認できます。ユーザーが仕事の経費を選択した場合、仕事の経費フォームがエンドユーザーに表示されます。逆に、ユーザーが旅費を選択した場合、エンドユーザーには別のフォームが表示されます。詳しくは、「適格性式」を参照してください。

    これ以外にも、各行の右隅にある削除アイコンを使用してフォームセットからフォームを削除するか、ツールバーにある + アイコンを使用して別のフォームセットを追加することこともできます。この + アイコンを押すと、フォームを選択するために使用したウィザードの前の手順に戻ります。既存の選択内容は保持され、追加の選択内容については、そのページにある「フォームセットに追加」アイコンを使用してフォームセットに追加する必要があります。

    フォームセット:フォームの設定

    メモ

    フォームセットで使用するすべてのフォームは AEM Forms ユーザーインターフェイスで管理されます。

フォームセットの管理

フォームセットを作成すると、作成したフォームセットでは以下の操作を実行できます。

  • シングルクリック:フォームセットを作成してメインアセットページで一覧表示した場合、フォームセットをシングルクリックして表示することができます。フォームセットが開き、そのフォームセットにあるすべてのフォームテンプレート(XDP)が表示されます。
  • 編集:フォームセットを選択後に「編集」をクリックすると、上記の「フォームセットの作成手順」で示した「フォームを設定」画面が開きます。フォームを設定画面で記載されたすべての機能を使用することができます。
  • コピー&ペースト:フォームセット全体をある場所からコピーして同じ場所、別の場所、別のフォルダーにペーストできます。
  • ダウンロード:フォームをその依存関係すべてとともにダウンロードできます。
  • レビューの開始 / 管理:フォームセットの作成が完了すると、「レビューを開始」をクリックしてレビューを設定できます。フォームセットのレビューが始まると、レビューの管理オプションが表示されます。レビューの管理画面でレビューを更新または終了できます。追加したレビューについて、必要に応じてレビューを確認したりコメントを追加したりできます。
  • 削除:フォームセットをすべて削除します。削除したフォームセットにあるフォームはリポジトリに保持されます。
  • 公開/非公開:フォームセットに含まれるすべてのフォームおよびこれらのフォームの関連アセットも含めて公開または非公開にします。
  • プレビュー:プレビューでは、HTML でプレビュー(データなし)とサンプルデータが付いたカスタムプレビューの 2 つのオプションを使用できます。
  • プロパティの表示 / 編集:選択したフォームセットのメタデータプロパティを表示または編集できます。

createformset3

フォームセットの編集

フォームセットを編集するには、次の手順を実行します。

  1. フォーム/フォームとドキュメントを選択します。

  2. 編集するフォームセットを見つけます。その上にカーソルを置いて、「編集」(editicon)を選択してください。

  3. フォームを設定ページで、以下の内容を編集できます。

    • フォームの順番
    • フォーム識別子
    • データルート
    • 適格性の式

    また「削除」アイコンを押すことで、そのフォームをフォームセットから削除することができます。

Process Management におけるフォームセット

一度 AEM Forms Management ユーザーインターフェイスを使用してフォームセットを作成すると、Workbench を使用してそのフォームセットを「始点」または「タスクの割り当て」アクティビティで使用できます。

タスクまたは始点でのフォームセットの使用

  1. 処理を設計する際、タスクの割り当て / 始点の Presentation & Data セクションの下で、「CRX アセットを使用」を選択します。CRX アセットブラウザーが表示されます。

    処理の設計:CRX アセットの使用

  2. フォームセットを選択して、AEM リポジトリ(CRX)のフォームセットをフィルタリングします。

    処理の設計:フォームアセットの選択ダイアログ

  3. フォームセットを選択してから「OK」をクリックしてください。

適格性の式

フォームセットにおける適格性の式は、ユーザーに表示されるフォームを定義し動的に制御するために使用されます。例えば、ユーザーが特定の年齢のグループに属している場合にのみ特定のフォームを表示する場合などに使用できます。Forms manager を使用して、適格性の式を指定または編集します。

適格性の式には、ブール値を返す任意の有効な Javascript ステートメントを使用できます。JavaScript コード スニペットの最後のステートメントは boolean 値として扱われ、他の部分(それまでの行)で処理中のJavaScript コード スニペットを基にフォームの適格性を決定します。式の値が true の場合、そのフォームはユーザーへの表示に適切であると見なされます。このようなフォームは有効な対象フォームとして知られています。

メモ

フォームセットの最初のフォームの適格性の式は実行されません。適格性の式によらず、最初のフォームは常に表示されます。

通常の JavaScript 関数に加えて、フォームセットでは fs.valueOf API も公開しているため、フォームセット内のフォームのフィールドの値にアクセスできます。フォームセットの中のフォームフィールドの値にアクセスするには、この API を使用します。API 構文は fs.valueOf(formUid、fieldSOM)で、ここでは、

  • formUid (string):フォームセット内のフォームの固有 ID です。Forms Manager ユーザーインターフェイスでフォームセットを作成中に指定できます。デフォルトでは、フォーム名です。
  • fieldSOM (string):formUid によって指定されたフォーム内のフィールドの SOM 式。SOM 式または Scripting Object Model 式とは、特定の Document Object Model(DOM)内の値、プロパティ、メソッドを参照するときに使う式です。フィールドを選択しているときにスクリプトタブの下にある Form Designer で表示できます。
メモ

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);

フォームセットに対する XML の事前入力

フォームセットは、共通または異なるスキーマを持つ複数の HTML5 フォームのまとまりです。XML ファイルを使用して、フォームフィールドへの事前入力を行うこともできます。XML ファイルをフォームセットに関連付けることで、フォームセットの中のフォームを開いたときに、いくつかのフィールドは事前入力されます。

事前入力XML ファイルは、フォームセットの URL の、dataRef パラメータを使用して指定します。dataRef パラメーターは、フォームセットと結合される XML データファイルの絶対パスを指定します。

例えば、次の構造を持つフォームセット内に 3 つのフォーム(form1、form2、form3)があるとします。

form1

field form1field

form2

field form2field

form3

field form3field

各フォームには「field」という共通の名前が付いたフィールドと、「form<i>Field」という一意の名前を持ったフィールドがあります。

次の構造を持った 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 にはより多くの wrapper タグとフォームセットのコンテキストデータタグが終了部分に追加されています。

事前入力 XML の要素の説明

事前入力 XML ファイルを作成する際の構文ルール

  • 親要素:親になることのできる要素。ここで Null は、要素が XML のルートに指定できることを示します。
  • 基数:親要素内で要素を使用できる回数を示します。
  • submitXML:送信 XML において、要素が常に存在する(P)か、またはオプション(O)であるかを示します。
  • prefillXML:事前入力 XML で要素が必要とされる(R)か、またはオプション(O)であるかを示します。
  • 子:どの要素が要素の子になれるかを示します。

FORMSET

parent elements:

null

cardinality: [0,1]

submitXML: P

prefillXML: O

children: fs_data

フォームセット XML のルート要素。フォームセット内のフォームの rootSubform の名前として使用しないようお勧めします。

FS_DATA

parent elements:

formset

基数:[1]

submitXML:P

prefillXML:O

children: xdp:xdp/rootElement

サブツリーはフォームセット内のフォームのデータを示します。フォームセットの要素がない場合に限り、要素は事前入力 XML においてオプションです。

XDP:XDP

parent elements: fs_data/null

cardinality: [0,1]

submitXML: O

prefillXML: O

children: xfa:datasets

このタグは HTML5 フォームの XML の開始を示します。事前入力 XML にこのタグがある場合、または事前入力 XML がない場合、このタグが送信 XML に追加されます。このタグは事前入力 XML から削除できます。

XFA:DATASETS

parent elements: xdp:xdp

cardinality: [1]

submitXML: O

prefillXML: O

children: xfa:data

XFA:DATA

parent elements: xfa:datasets

cardinality: [1]

submitXML: O

prefillXML: O

children: rootElement

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 がない場合、「/」に設定された dataRoot プロパティを持っているフォームセット内の最初のフォームのルートサブフォーム名が rootElement の名前になります。そのようなフォームがない場合は、予約されたキーワードである fs_dummy_root が rootElement 名になります。

AEM Forms アプリにおけるフォームセット

AEM Forms アプリを使用すると、フィールドワーカーはモバイルデバイスを AEM Forms サーバーと同期し、タスクを実行できます。アプリケーションはデバイスのローカルにデータを保存することで、デバイスがオフラインの場合でも動作します。フィールドワーカーは、写真などの注釈機能を使用して、ビジネスプロセスに統合する正確な情報を提供します。

既知の制限事項 - フォームセットでは、パターンは完全にはサポートされていません。

フォームセットでは、以下のデータパターンは完全にはサポートされていません。

フォームセットで完全にはサポートされていないパターン
入力サイズやパターンサイズの不一致

When pattern= num{z,zzz}

And input=

12,345 または

1,23

括弧「( )」のついたパターン形式文字列 num{(zz,zzz)}
複数のデータパターン num{zz,zzz} | num{z,zzz,zzz}
略記法パターン

num.integer{},

num.decimal{},

num.percent{} または

num.currency{}

このページ