送信アクションの設定

送信アクションの概要

送信アクションは、ユーザーがアダプティブフォームの「送信」ボタンをクリックしたときにトリガーされます。アダプティブフォームの送信アクションを設定することができます。アダプティブフォームには、追加設定なしで使用できる送信アクションがあります。デフォルトの送信アクションをコピーし、拡張することにより、独自の送信アクションを作成できます。ただし、要件に応じて、送信したフォームのデータを処理する独自の送信アクションを書いて登録できます。送信アクションは、同期または非同期の送信を使用できます。

サイドバーにある「アダプティブフォームコンテナ」プロパティの「送信」セクションで、送信アクションを設定できます。

送信アクションの設定

送信アクションの設定

アダプティブフォームで使用可能なデフォルトの送信アクションは次のとおりです。

  • REST エンドポイントへの送信
  • 電子メールを送信
  • 電子メールで PDF を送信
  • Forms ワークフローを起動
  • フォームデータモデルを使用して送信
  • フォームポータル送信アクション
  • AEM ワークフローを起動
メモ

電子メールで PDF を送信アクションは、XFA テンプレートをフォームモデルとして使用しているアダプティブフォームにのみ使用できます。

メモ

[AEM_Installation_Directory]\crx-quickstart\temp\datamanager\ASM フォルダー
が存在することを確認します。ディレクトリは、添付ファイルを一時的に保存するために必要になります。ディレクトリが存在しない場合は作成します。

注意

フォームテンプレート、フォームデータモデル、スキーマベースのアダプティブフォームのいずれかを、スキーマ(XML スキーマ、JSON スキーマ、フォームテンプレート、フォームデータモデルのいずれか)に準拠した XML データや JSON データを使用して事前入力する、つまりデータが <afData>、<afBoundData>、</afUnboundData> のタグを含まない場合、アダプティブフォームの連結されていないフィールド(連結されていないフィールドとは、bindref プロパティのないアダプティブフォームフィールドのこと)のデータは失われます。

アダプティブフォームがユースケースを実現するように、カスタム送信アクションを作成できます。詳しくは、「アダプティブフォーム向けのカスタム送信アクションの作成」を参照してください。

REST エンドポイントへの送信

REST エンドポイントへの送信 オプションでは、フォームに記入されたデータが、HTTP GET リクエストの一環として設定済みの確認ページに渡されます。リクエストにフィールド名を追加できます。リクエストのフォーマットを以下に示します。

{fieldName}={request parameter name}

以下の画像に示すとおり、param1param2 が、textbox フィールドと numericbox フィールドからコピーした値を持つパラメーターとして次のアクションに向けて渡されます。

また、POST リクエストを有効にする​ことで、リクエストを投稿するための URL を指定することもできます。フォームをホストする Experience Manager サーバーにデータを送信するには、Experience Manager サーバーのルートパスに対応する相対パスを使用します。例えば、/content/forms/af/SampleForm.html のようにします。他のサーバーにデータを送信するには、絶対パスを使用します。

REST エンドポイント送信アクションの設定

REST エンドポイント送信アクションの設定

メモ

フィールドを REST URL 内のパラメーターとして渡すには、すべてのフィールドが異なる要素名を持っている必要があります。これは、異なるパネルに置かれているフィールドにも適用されます。

リソースまたは外部の REST エンドポイントへの送信されたデータの POST

REST エンドポイントへの送信​アクションを使用して、送信されたデータを REST URL に POST できます。URL は、内部(フォームがレンダリングされるサーバー)または外部サーバーのどちらのものでも使用できます。

内部サーバーにデータを POST 送信するには、リソースのパスを指定します。データは、リソースのパスに POST されます。例えば、/content/restEndPoint です。このような POST リクエストには、送信リクエストの認証情報が使用されます。

外部サーバーにデータを POST 送信するには、URL を指定します。URL の形式は、https://host:port/path_to_rest_end_point です。POST リクエストを匿名で処理するためのパスを設定してください。

「ありがとうございます」ページのパラメーターとして渡されたフィールド値のマッピング

上の例で、ユーザーが textbox に入力した情報は、パラメーター param1 を使用して取得されます。param1 を使用して取得されるデータを POST するための構文を以下に示します。

String data=request.getParameter("param1");

同様に、XML データと添付ファイルの POST に使用するパラメーターは、dataXml および attachments です。

例えば、この 2 つのパラメーターをスクリプト中で使用して、REST エンドポイントに送信されたデータを解析できます。データを格納および解析するための構文を以下に示します。

String data=request.getParameter("dataXml");
String att=request.getParameter("attachments");

この例では、data が XML データを格納し、att が添付ファイルデータを格納します。

電子メールを送信

電子メールを送信」送信アクションでは、フォームの送信が完了すると同時に、1 人または複数の受信者に電子メールが送信されます。生成される電子メールには、事前に定義された形式のフォームデータを含めることができます。

メモ

フォームデータを電子メールに含めるには、異なるパネルに配置されているフォームフィールドを含め、すべてのフォームフィールドが異なる要素名を持っている必要があります。

電子メールで PDF を送信

電子メールで PDF を送信」送信アクションでは、フォームの送信が完了すると同時に、1 人または複数の受信者にフォームデータを含む PDF が添付された電子メールが送信されます。

メモ

この送信アクションは、レコードのドキュメントテンプレートを持つ XFA ベースのアダプティブフォームと XSD ベースのアダプティブフォームに使用できます。

Forms ワークフローを起動

Forms Workflow への送信」送信オプションでは、データ XML および添付ファイル(存在する場合に)が既存の Adobe LiveCycle プロセスまたは JEE での AEM Forms プロセスに送信されます。

送信アクション「Forms Workflow への送信」の設定方法について詳しくは、「フォームワークフローを使用したフォームデータの送信および処理」参照してください。

フォームデータモデルを使用して送信

フォームデータモデルを使用して送信」送信アクションでは、フォームデータモデルの特定のデータモデルオブジェクトで送信したアダプティブフォームデータをデータソースに書き込みます。送信アクションの設定時に、データソースに書き戻す送信済みデータを持つデータモデルオブジェクトを選択できます。

さらに、添付されたフォームをフォームデータモデルやレコードのドキュメント(DOR)を使用してデータソースに送信できます。

フォームデータモデルについて詳しくは、「AEM Forms のデータ統合機能」を参照してください。

フォームポータル送信アクション

フォームポータル送信アクション」オプションでは、フォームデータが AEM Forms ポータルで使用できるようになります。

フォームポータルと送信アクションについて詳しくは、「ドラフトと送信コンポーネント」を参照してください。

AEM ワークフローを起動

AEM ワークフローを起動」送信アクションは、アダプティブフォームを AEM ワークフローと関連付けます。フォームが送信されると、関連するワークフローがオーサーインスタンスで自動的に起動します。データファイル、添付ファイル、レコードのドキュメントは、ワークフローの関連フォルダー、またはペイロードの下、変数に保存できます。 ワークフローが外部データストレージ用にマークされている場合、ペイロードオプションではなく変数オプションが使用可能になります。 ワークフローモデルで使用できる変数のリストから選択できます。ワークフローの作成時ではなく、後の段階で外部データストレージの対象としてワークフローがマークされている場合は、必要な変数設定が適切に行われていることを確認します。

AEM ワークフローを起動」送信アクションを使用する前に、Experience Manager DS の設定を行います。AEM ワークフローの作成について詳しくは、「OSGi 上の Forms 中心のワークフロー」を参照してください。

送信アクションは、ワークフローのペイロードの場所に以下を配置します。 ただし、ワークフローモデルが外部データストレージ用にマークされている場合は「変数」オプションのみが表示され、ペイロードオプションは表示されないことに注意してください。

  • データファイル:アダプティブフォームに送信されたデータを含みます。「データファイルパス」オプションを使用して、ファイル名とペイロードを基準とするファイルのパスを指定できます。例えば、/addresschange/data.xml パスは、addresschange という名前のフォルダーを作成し、ペイロードを基準に配置します。フォルダー階層を作成せずに、data.xml のみを指定して、送信されたデータのみを送信することもできます。「変数」オプションを使用し、ワークフローモデルで使用可能な変数のリストから変数を選択します。
メモ

変数は、ワークフローモデルが外部データストレージ用にマークされているかどうかに関係なく使用できます。

  • 添付ファイル:「添付ファイルのパス」オプションを使用して、アダプティブフォームにアップロードされた添付ファイルの保存先となるフォルダー名を指定できます。フォルダーがペイロードを基準に作成されます。ワークフローが外部データストレージ用にマークされている場合は、「変数」オプションを使用し、ワークフローモデルで使用可能な変数のリストから変数を選択します。

  • レコードのドキュメント:アダプティブフォーム用に生成されたレコードのドキュメントを含みます。「レコードのドキュメントパス」オプションを使用して、レコードのドキュメントファイル名と、ペイロードを基準にファイルのパスを指定できます。例えば、/addresschange/DoR.pdf パスは、ペイロードを基準に addresschange という名前のフォルダーを作成し、ペイロードを基準に DoR.pdf を配置します。DoR.pdf のみを指定して、フォルダー階層を作成せずに、レコードのドキュメントのみを保存することもできます。ワークフローが外部データストレージ用にマークされている場合は、「変数」オプションを使用し、ワークフローモデルで使用可能な変数のリストから変数を選択します。

アダプティブフォームにおけるサーバー側の再検証

通常、どのようなオンラインデータ取得システムでも、ビジネスルールを適用するために、開発者はクライアントサイドに何らかの JavaScript 検証を配置します。しかし、最新のブラウザーでは、エンドユーザーが Web Browser DevTools Console などの様々な手法を使用してこれらの検証を回避し、手動で送信を行える方法が存在します。このような手法は、アダプティブフォームにも有効です。フォーム開発者は、多様な検証ロジックを作成できますが、エンドユーザーは、これらの検証ロジックを回避し、無効なデータをサーバーに送信できます。無効なデータは、フォーム作成者が適用したビジネスルールを破ることになります。

サーバー側の再検証機能は、アダプティブフォームの製作者がアダプティブフォームのデザイン中に指定した検証を、サーバー上でも実行するための機能です。これは、フォームの検証で表されるデータ送信の漏洩やビジネスルール違反の可能性を阻止します。

サーバー側で検証されるもの

アダプティブフォームの追加設定なし(OOTB)のフィールド検証で、サーバーで再実行されるものは次のとおりです。

  • 必須
  • 検証パターン形式文字列
  • 検証式

サーバー側検証の有効化

サイドバーにある「アダプティブフォームコンテナ」の「サーバー側で再検証」を使用して、現在のフォームのサーバーサイド検証を有効または無効にします。

サーバーサイド検証の有効化

サーバーサイド検証の有効化

エンドユーザーがこれらの検証を回避してフォームを送信した場合、サーバーが再度検証を行います。サーバーサイドでの検証が失敗した場合、送信処理が中止されます。エンドユーザーには、元のフォームが再度表示されます。取得されたデータおよび送信されたデータは、エラーとしてユーザーに表示されます。

メモ

サーバーサイド検証により、フォームモデルが検証されます。検証のために別個のクライアントライブラリを作成し、1 つのクライアントライブラリに HTML のスタイルや DOM 操作を混在させないことをお勧めします。

検証式でのカスタム関数のサポート

複雑な検証ルールがある場合、正確な検証スクリプトがカスタム関数の中に存在し、作成者がこれらのカスタム関数をフィールド検証式から呼び出すことがあります。このカスタム関数ライブラリをサーバーサイド検証中に認識させ、利用可能にするために、フォーム作成者は、「アダプティブフォームコンテナ」プロパティの「基本」タブで、AEM クライアントライブラリの名前を設定できます(下記画像を参照)。

検証式でのカスタム関数のサポート

検証式でのカスタム関数のサポート

作成者は、アダプティブフォームごとにカスタム JavaScript ライブラリを設定できます。ライブラリには、jQuery および underscore.js サードパーティライブラリに依存する、再利用可能な関数のみを保持します。

送信アクションに対するエラー処理

Experience Manager セキュリティおよび堅牢化ガイドラインの一部として、404.jsp や 500.jsp などのカスタムエラーページを設定してください。これらのハンドラーは、フォーム送信時に 404 または 500 エラーが表示されるときに呼び出されます。また、これらのハンドラーは、パブリッシュノードでこれらのエラーコードがトリガーされるときにも呼び出されます。

詳しくは、「エラーハンドラーによって表示されるページのカスタマイズ」を参照してください。

このページ