フォームから送信されたデータの処理

このクイックスタートでは、「Forms」サービスを使用してプロセスを作成し、描画された PDF フォームから送信された XDP データを使用する方法について説明します。XDP データはデータベースに保存したり、別のサービスに送信して処理したり、後で処理できるように操作して保存することが可能です。AEM forms サービスの詳細は、『 サービスリファレンス』を参照してください。

Forms サービスを使用すると、データは XDP データとして送信されます。結果のデータは XML データ(XDP データなし)に変換されます。フォームデザインで、送信されるデータの種類を設定できます(Designer ヘルプを参照)。例えばある組織で、ローン申請を送信できるように、北米の申込者に対して共通の PDF フォームがレンダリングされるプロセスを使用しているとします。その組織の別のグループは、次のように国に基づいてローン申請を処理します。

  • 米国在住のローンの申込者はグループ A が処理します。

  • カナダ在住のローンの申込者はグループ B が処理します。

申込者は Web ブラウザーで、Forms サービスによってレンダリングされた PDF フォームに入力します。申込者の居住国は Country フィールドによって判断されます。ユーザーはドロップダウンリストから居住国を選択します。ドロップダウンリストでは、「 Canada 」および「 United States 」の値を選択できます。

この組織では、 handleSubmissionApp というアプリケーションがこのサービスを実装しています。ユーザーが PDF フォームの「Submit」ボタンをクリックすると、XDP データが Java サーブレットに送信されます。サーブレットは handleSubmissionApp サービスを呼び出します。サービスは Forms を使用して XDP データを処理して、別のステップでデータを XML ファイルに保存します。米国の申込者からの XDP データは、ネットワーク上の場所 ¥¥GroupA_US¥loan.xml に保存されます。カナダの申込者からの XDP データは、ネットワーク上の場所 ¥¥GROUP_B_CAN¥loan.xml に保存されます。ローン申請のデータファイルを一意にするには、ファイル名の最後に一意の数値文字列を付加します。例えば、loan.xml ファイルがネットワーク上の場所に存在する場合は loan1.xml を作成します。

handleSubmissionApp アプリケーションには、次の項目を含む handleFormSubmission というプロセスがあります。

  • 「Submit」ボタンがクリックされたときにサーブレットから送信された XDP データを保存する、 xdpXML という入力 document 変数。

  • XML データを保存する、 outputXML という出力 document 変数。

  • PDF フォームから送信されたデータを処理する「processFormSubmission」操作(Forms サービス)。

  • XML データを document 値として保存する 2 つの「Write Document」操作(File Utilities サービス)。XML の保存先は、申込者がドロップダウンリストで「Canada」と「United States」のどちらを選んだかによって異なります。

  • 実行する次の操作を決定する条件付きルート。Country フィールドの値が「United States」の場合、「Write Document」操作を実行し、それ以外の場合は「Write Document2」操作を実行します。

次に、handleFormSubmission プロセスのプロセスダイアグラムを示します。

注意: このプロセスダイアグラムで、条件付きルートは点線で表されています。
「generatePrintedOutput」操作と「sendtoPrinter」操作

わかりやすいように、次に XDP データの関連部分を示します。データは <xfa:datasets> 要素に保存され、XML ツリー内の各要素はプロセス内でアクセスできます。次の例では、申込者は米国在住です。

<?xml version="1.0" encoding="UTF-8"?>  
    <?xfa generator="XFA2_4" APIVersion="3.0.8262.0"?>  
    <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2009-11-27T19:16:38Z" uuid="1fe71528-34a5-43df-8ad1-7f08126b3698"> 
    ...  
    <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> 
        <xfa:data> 
            <LoanApp> 
                <Name>Akira Tanaka</Name> 
                <LoanAmount>100000</LoanAmount>  
                <PhoneOrEmail>atanaka@sampleorganization.com</PhoneOrEmail>  
                <Country>United States</Country> 
                <ApprovalStatus>PENDING APPROVAL</ApprovalStatus> 
            </LoanApp> 
        ...  
        <xfa:data> 
        ... 
</xdp:xdp>

設定

「processForm 送信」操作では、送信されたデータから情報を取得するために次のプロパティが設定されます。

ルートの評価

「processFormSubmission」操作から、「Write Document」操作と「Write Document2」操作へのルートがあります。XPath 式を使用して、「Write Document」操作へのルートに条件が追加されています。XPath 式は、データの <xfa:data> 要素から Country フィールドの値を評価します。次の条件は、Country フィールドが「United States」に設定されている場合に「Write Document」操作を実行します。

  • /process_data/formData/xdp/datasets/data/LoanApp/Country = "United States"

    注意: XPath 式を使用すると、XML データ構造のデータにアクセスできます( XPath 式の作成 を参照)。

入力

  • Submitted Form Data: 操作に送信される XDP データを指定する xdpXML 変数。

  • Environment Variables: Variable Name が CONTEXT_TYPE 、Value が application/vnd.adobe.xdp+xml のエントリが追加されます。このエントリは、送信されるファイルの種類を指定します。

フォーム送信のオプション

  • Export Data Format: XML データ項目はリストから選択されます。この項目は、 <Xfa:datasets> パッケージなしで XML データを書き出すように指定しています。

出力

  • Result Document: 操作に送信される XDP データを含む outputXML 変数。XDP データは XML として保存されます。

    「Write Document」操作では、XML データをネットワーク上の場所に保存するように次のプロパティが設定されます。

入力

  • Pathname Pattern: ¥¥GroupA_US¥loan.xml を指定します。この値は PDF ドキュメントの場所と名前を指定します。

  • Document: ファイルとして保存するコンテンツを指定する outputPDF 変数。

  • Make Unique :ファイル名に使用するオプションが選択されている場合、ファイル名に接尾辞を追加して一意にします。このオプションは、ファイル名の最後に数値文字列を追加し、ファイル名を一意にします。

「Write Document2」操作では、XML データをネットワーク上の場所に保存するように次のプロパティが設定されます。

入力

  • Pathname Pattern: ¥¥GroupB_CAN¥loan.xml を指定します。この値は PDF ドキュメントの場所と名前を指定します。

  • Document: ファイルとして保存するコンテンツを指定する outputPDF 変数。

  • Make Unique :ファイル名に使用するオプションが選択されている場合、ファイル名に接尾辞を追加して一意にします。このオプションは、ファイル名の最後に数値文字列を追加します。数値を付加することでファイル名が一意になります。

その他の考慮事項

データの送信に使用されるフォームは、Forms サービスを使用してレンダリングする必要があります。例えば「Render PDF Form」操作を使用して、送信する PDF フォームをレンダリングできます。Acrobat で作成した PDF フォームを使用して Forms サービスにフォームを送信することはできません。Web ベースのシステムの場合、Java サーブレットを使用することをお勧めします(『 AEM forms におけるプログラミング 』の「 フォームをレンダリングする Web アプリケーションの作成 」を参照)。Java サーブレットは、Web ブラウザーからサービスを使用するユーザー向けに PDF フォームのレンダリングと送信を処理できます。

Java サーブレットを使用してサービスを呼び出す代わりに、Web サービスを使用してサービスを呼び出す方法も検討してください。例えば、JavaScript を「Submit」ボタンに追加してプロセスを呼び出すことができます(『 Designer ヘルプ 』の「 データソースへの接続 」を参照)。

このクイックスタートでは、Java サーブレットから XDP データを渡してサービスを呼び出す方法については説明しません(「 AEM forms におけるプログラミング 」の「 Java API を使用した、AEM forms へのデータの引き渡し 」を参照)。