フラグメントに基づくFormsのレンダリング

フラグメントに基づくFormsのレンダリング

Formsサービスでは、Designer を使用して作成したフラグメントに基づくフォームをレンダリングできます。 A フラグメント はフォームの再利用可能な部分で、複数のフォームデザインに挿入できる個別の XDP ファイルとして保存されます。 例えば、フラグメントには住所ブロックや法律文を含めることができます。

フラグメントの使用により、大量のフォームの作成とメンテナンスを簡単に、短時間で実行できます。新しいフォームを作成する際に、必要なフラグメントへの参照を挿入すると、そのフラグメントがフォームに表示されます。 フラグメント参照には、物理 XDP ファイルを指すサブフォームが含まれます。フラグメントを基にしたフォームデザインの作成について詳しくは、 Forms Designer

フラグメントには、選択サブフォームセットに含める複数のサブフォームを含めることができます。 選択サブフォームセットは、データ接続からのデータのフローに基づいてサブフォームの表示を制御します。 条件ステートメントを使用して、配信するフォームに表示するサブフォームをそのセットから指定します。例えば、セット内の各サブフォームには、特定の地理的な場所に関する情報を含めることができ、表示されるサブフォームは、ユーザーの場所に基づいて決定できます。

A スクリプトフラグメント には、日付パーサーや Web サービス呼び出しなど、特定のオブジェクトとは別に保存される再利用可能な JavaScript 関数や値が含まれています。 このようなフラグメントには、階層パレットに変数の子として表示される単独のスクリプトオブジェクトがあります。フラグメントは、他のオブジェクトのプロパティとなっているスクリプトからは作成できません。このようなスクリプトとして、検証、計算、初期化などのイベントスクリプトがあります。

フラグメントを使用する利点は次のとおりです。

  • コンテンツの再利用:フラグメントを使用すると、複数のフォームデザインでコンテンツを再利用できます。 複数のフォームで同じコンテンツの一部を使用する必要がある場合は、コンテンツをコピーまたは再作成するよりも、フラグメントを使用する方が速くて簡単です。 フラグメントを使用し、それをフォームで参照することで、フォームデザインの中で頻繁に使用する部分を一貫性のあるコンテンツと外観ですべてのフォームに表示できます。
  • グローバル更新:フラグメントを使用すると、1 つのファイルで 1 回だけ複数のフォームにグローバルな変更を加えることができます。 フラグメント内のコンテンツ、スクリプトオブジェクト、データバインディング、レイアウトまたはスタイルを変更すると、その変更がフラグメントを参照するすべての XDP フォームに反映されます。
  • 例えば、多くのフォームで共通する要素は、国のコンボボックスオブジェクトを含む住所ブロックです。 コンボボックスオブジェクトの値を更新する必要がある場合は、多数のフォームを開いて変更を加える必要があります。 フラグメントにアドレスブロックを含める場合は、1 つのフラグメントファイルを開くだけで変更を加えることができます。
  • PDFフォーム内のフラグメントを更新するには、Designer でそのフォームを再保存する必要があります。
  • 共有フォームの作成:フラグメントを使用して、複数のリソースでフォームの作成を共有できます。 スクリプトまたは Designer のその他の高度な機能に精通しているフォーム開発者は、スクリプトまたは動的プロパティを活用するフラグメントを作成、共有することができます。フォーム作成者がこれらのフラグメントを使用してフォームデザインをレイアウトすれば、複数の担当者が作成した複数のフォームの各部分で一貫性のある外観と機能を実現できます。

フラグメントを使用してアセンブリされたフォームデザインのアセンブリ

複数のフラグメントに基づいてFormsサービスに渡すフォームデザインを組み立てることができます。 複数のフラグメントをアセンブリするには、Assembler サービスを使用します。 Assemble サービスを使用して別のFormsサービス(Output サービス)で使用されるフォームデザインを作成する例については、 フラグメントを使用したPDFドキュメントの作成. Output サービスを使用する代わりに、Formsサービスを使用して同じワークフローを実行できます。

Assembler サービスを使用する場合、フラグメントを使用してアセンブルされたフォームデザインを渡します。 作成されたフォームデザインは、他のフラグメントを参照していません。 これに対し、このトピックでは、他のフラグメントを参照するフォームデザインをFormsサービスに渡す方法について説明します。 ただし、フォームデザインは Assembler によってアセンブルされていません。 Designer で作成されました。

メモ

Formsサービスについて詳しくは、 AEM Formsのサービスリファレンス.

メモ

フラグメントに基づいてフォームをレンダリングする Web ベースのアプリケーションの作成について詳しくは、 Formsをレンダリングする Web アプリケーションの作成.

手順の概要

フラグメントに基づいてフォームをレンダリングするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. Forms Client API オブジェクトを作成します。
  3. URI 値を指定します。
  4. フォームをレンダリングします。
  5. フォームデータストリームをクライアントの Web ブラウザーに書き込みます。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。 Web サービスを使用している場合は、プロキシファイルを必ず含めてください。

Forms Client API オブジェクトの作成

Forms Service Client API 操作をプログラムで実行する前に、Formsサービスクライアントを作成する必要があります。

URI 値の指定

フラグメントに基づいてフォームを正常にレンダリングするには、Formsサービスで、フォームデザインが参照するフォームとフラグメント(XDP ファイル)の両方を検索できるようにする必要があります。 例えば、フォームの名前が PO.xdp で、このフォームが FooterUS.xdp および FooterCanada.xdp という 2 つのフラグメントを使用しているとします。 このような状況では、Formsサービスは 3 つの XDP ファイルをすべて見つけることができる必要があります。

フォームとそのフラグメントは、ある場所に配置し、別の場所に配置することで整理できます。また、すべての XDP ファイルを同じ場所に配置することもできます。 この節の目的では、すべての XDP ファイルがAEM Formsリポジトリ内にあると仮定します。 XDP ファイルをAEM Formsリポジトリに配置する方法について詳しくは、 リソースの書き込み.

フラグメントに基づいてフォームをレンダリングする場合は、フォーム自体のみを参照し、フラグメントは参照しないでください。 例えば、FooterUS.xdp や FooterCanada.xdp ではなく、PO.xdp を参照する必要があります。 フラグメントは、Formsサービスで見つけられる場所に配置してください。

フォームをレンダリング

フラグメントに基づくフォームは、フラグメント化されていないフォームと同じ方法でレンダリングできます。 つまり、フォームをPDF、HTML、またはフォームガイド(非推奨)としてレンダリングできます。 この節の例では、フラグメントに基づいたフォームをインタラクティブなPDFフォームとしてレンダリングします。 ( インタラクティブPDF formsのレンダリング.)

フォームデータストリームをクライアント Web ブラウザーに書き込む

Formsサービスがフォームをレンダリングすると、クライアントの Web ブラウザーに書き込む必要があるフォームデータストリームが返されます。 クライアント Web ブラウザーに書き込まれると、フォームはユーザーに対して表示されます。

関連トピック

Java API を使用してフラグメントに基づいてフォームをレンダリングする

Web サービス API を使用してフラグメントに基づいてフォームをレンダリングする

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

Forms Service API クイックスタート

インタラクティブPDF formsのレンダリング

Formsをレンダリングする Web アプリケーションの作成

Java API を使用してフラグメントに基づいてフォームをレンダリングする

Forms API(Java) を使用して、フラグメントに基づいてフォームをレンダリングします。

  1. プロジェクトファイルを含める

    Java プロジェクトのクラスパスに、adobe-forms-client.jar などのクライアント JAR ファイルを含めます。

  2. Forms Client API オブジェクトの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • の作成 FormsServiceClient オブジェクトのコンストラクタを使用し、 ServiceClientFactory オブジェクト。
  3. URI 値の指定

    • の作成 URLSpec コンストラクターを使用して URI 値を格納するオブジェクト。
    • を呼び出す URLSpec オブジェクトの setApplicationWebRoot メソッドを使用して、アプリケーションの Web ルートを表す string 値を渡します。
    • を呼び出す URLSpec オブジェクトの setContentRootURI メソッドを使用して、コンテンツルート URI 値を指定する string 値を渡します。 フォームデザインとフラグメントがコンテンツルート URI に配置されていることを確認します。 そうでない場合、Formsサービスは例外をスローします。 リポジトリを参照するには、次を指定します。 repository://.
    • を呼び出す URLSpec オブジェクトの setTargetURL メソッドを使用してターゲット URL 値を指定し、フォームデータの投稿先となる文字列値を渡します。 フォームデザインでターゲット URL を定義する場合、空の文字列を渡すことができます。 また、計算を実行するためのフォームの送信先の URL を指定することもできます。
  4. フォームをレンダリング

    を呼び出す FormsServiceClient オブジェクトの renderPDFForm メソッドを使用して、次の値を渡します。

    • ファイル名拡張子を含むフォームデザイン名を指定する string 値。 Formsアプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A com.adobe.idp.Document フォームに結合するデータを含むオブジェクト。 データを結合しない場合は、空の com.adobe.idp.Document オブジェクト。
    • A PDFFormRenderSpec 実行時オプションを保存するオブジェクト。
    • A URLSpec フラグメントに基づいてフォームをレンダリングするためにFormsサービスで必要な URI 値を含むオブジェクト。
    • A java.util.HashMap 添付ファイルを保存するオブジェクト。 これはオプションのパラメーターで、 null フォームにファイルを添付しない場合。

    この renderPDFForm メソッドは、 FormsResult クライアントの Web ブラウザーに書き込む必要があるフォームデータストリームを含むオブジェクト。

  5. フォームデータストリームをクライアント Web ブラウザーに書き込む

    • の作成 com.adobe.idp.Document を呼び出すことによってオブジェクトを取得 FormsResult オブジェクト getOutputContent メソッド。
    • のコンテンツタイプを取得する com.adobe.idp.Document オブジェクトを呼び出す getContentType メソッド。
    • javax.servlet.http.HttpServletResponse を呼び出すことによるオブジェクトのコンテンツタイプ setContentType メソッドを使用して、 com.adobe.idp.Document オブジェクト。
    • の作成 javax.servlet.ServletOutputStream オブジェクトを使用します。オブジェクトは、 javax.servlet.http.HttpServletResponse オブジェクトの getOutputStream メソッド。
    • の作成 java.io.InputStream を呼び出すことによってオブジェクトを取得 com.adobe.idp.Document オブジェクトの getInputStream メソッド。
    • バイト配列を作成し、 InputStream オブジェクトの readメソッドを使用し、バイト配列を引数として渡す。
    • を呼び出す javax.servlet.ServletOutputStream オブジェクトの write メソッドを使用して、フォームデータストリームをクライアント Web ブラウザーに送信します。 バイト配列を write メソッド。

関連トピック

フラグメントに基づくFormsのレンダリング

クイックスタート(SOAP モード):Java API を使用したフラグメントに基づくフォームのレンダリング

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

Web サービス API を使用してフラグメントに基づいてフォームをレンダリングする

Forms API(Web サービス)を使用して、フラグメントに基づいてフォームをレンダリングします。

  1. プロジェクトファイルを含める

    • Forms Service WSDL を使用する Java プロキシクラスを作成します。
    • Java プロキシクラスをクラスパスに含めます。
  2. Forms Client API オブジェクトの作成

    の作成 FormsService オブジェクトを選択し、認証値を設定します。

  3. URI 値の指定

    • の作成 URLSpec コンストラクターを使用して URI 値を格納するオブジェクト。
    • を呼び出す URLSpec オブジェクトの setApplicationWebRoot メソッドを使用して、アプリケーションの Web ルートを表す string 値を渡します。
    • を呼び出す URLSpec オブジェクトの setContentRootURI メソッドを使用して、コンテンツルート URI 値を指定する string 値を渡します。 フォームデザインがコンテンツルート URI に配置されていることを確認します。 そうでない場合、Formsサービスは例外をスローします。 リポジトリを参照するには、次を指定します。 repository://.
    • を呼び出す URLSpec オブジェクトの setTargetURL メソッドを使用してターゲット URL 値を指定し、フォームデータの投稿先となる文字列値を渡します。 フォームデザインでターゲット URL を定義する場合、空の文字列を渡すことができます。 また、計算を実行するためのフォームの送信先の URL を指定することもできます。
  4. フォームをレンダリング

    を呼び出す FormsService オブジェクトの renderPDFForm メソッドを使用して、次の値を渡します。

    • ファイル名拡張子を含むフォームデザイン名を指定する string 値。 Formsアプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。 Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • A BLOB フォームに結合するデータを含むオブジェクト。 データを結合しない場合は、 null.
    • A PDFFormRenderSpec 実行時オプションを保存するオブジェクト。 入力ドキュメントがPDFドキュメントの場合、「タグ付きPDF」オプションは設定できません。 入力ファイルが XDP ファイルの場合は、タグ付きPDFオプションを設定できます。
    • A URLSpec Formsサービスで必要な URI 値を含むオブジェクト。
    • A java.util.HashMap 添付ファイルを保存するオブジェクト。 これはオプションのパラメーターで、 null フォームにファイルを添付しない場合。
    • com.adobe.idp.services.holders.BLOBHolder メソッドによって設定されるオブジェクト。 このパラメーターは、レンダリングされたフォームを保存するために使用されます。
    • javax.xml.rpc.holders.LongHolder メソッドによって設定されるオブジェクト。 この引数は、フォームのページ数を保存します。
    • javax.xml.rpc.holders.StringHolder メソッドによって設定されるオブジェクト。 この引数はロケール値を格納します。
    • com.adobe.idp.services.holders.FormsResultHolder この操作の結果を格納するオブジェクト。

    この renderPDFForm メソッドによって com.adobe.idp.services.holders.FormsResultHolder オブジェクト。クライアント Web ブラウザーに書き込む必要があるフォームデータストリームを含む最後の引数値として渡されます。

  5. フォームデータストリームをクライアント Web ブラウザーに書き込む

    • の作成 FormResult オブジェクトを作成するには、 com.adobe.idp.services.holders.FormsResultHolder オブジェクトの value データメンバー。
    • の作成 BLOB を呼び出してフォームデータを含むオブジェクト FormsResult オブジェクトの getOutputContent メソッド。
    • のコンテンツタイプを取得する BLOB オブジェクトを呼び出す getContentType メソッド。
    • javax.servlet.http.HttpServletResponse を呼び出すことによるオブジェクトのコンテンツタイプ setContentType メソッドを使用して、 BLOB オブジェクト。
    • の作成 javax.servlet.ServletOutputStream オブジェクトを使用します。オブジェクトは、 javax.servlet.http.HttpServletResponse オブジェクトの getOutputStream メソッド。
    • バイト配列を作成し、 BLOB オブジェクトの getBinaryData メソッド。 このタスクは、 FormsResult オブジェクトをバイト配列に変換します。
    • を呼び出す javax.servlet.http.HttpServletResponse オブジェクトの write メソッドを使用して、フォームデータストリームをクライアント Web ブラウザーに送信します。 バイト配列を write メソッド。

関連トピック

フラグメントに基づくFormsのレンダリング

Base64 エンコーディングを使用したAEM Formsの呼び出し

このページ