送信アクションの設定

送信アクションの概要

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

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

送信アクションの設定

送信アクションの設定

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

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

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

メモ

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

注意

🔗事前入力したデータが、<afData>、<afBoundData>、</afUnboundData>の各タグを含まないスキーマ(XMLスキーマ、JSONスキーマ、フォームテンプレート、またはフォームデータモデル)に対してXMLまたはJSONデータを適用した場合、アダプティブフォームの無限のフィールド(無限のフィールドは、bindrefプロパティのないアダプティブフォームフィールドです)は失われます。

使用事例を満たすためにアダプティブフォームのカスタム送信アクションを作成することができます。 詳しくは、「アダプティブフォームのカスタム送信アクションの作成」を参照してください。

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

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

{fieldName}={request parameter name}

次の画像に示すように、param1param2は、次のアクションの​textbox​および​数値ボックス​フィールドからコピーされた値を持つパラメーターとして渡されます。

POST リクエストを有効にする​ことで、リクエストを 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と添付ファイル(存在する場合)が既存のAdobeLiveCycleまたはJEE上のAEM Formsプロセスに送信されます。

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

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

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

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

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

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

Forms Portalの送信アクション​オプションを使用すると、フォームデータがAEM Forms Portal経由で使用できるようになります。

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

AEM ワークフローを起動

AEM ワークフローを起動」送信アクションは、アダプティブフォームと AEM ワークフローを関連付けます。フォームが送信されると、関連するワークフローは処理ノードで自動的に起動します。さらに、ワークフローのペイロードの場所に、データファイル、添付ファイル、レコードのドキュメントを配置します(該当の場合)。

AEM Workflow​送信アクションを呼び出す前に、Experience ManagerDSの設定を設定します。 AEMワークフローの作成について詳しくは、OSGi上のフォーム中心のワークフローを参照してください。

アダプティブフォームでのサーバーサイドの再検証

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

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

サーバーサイドでの検証対象

サーバーで再実行されるアダプティブフォームの標準(OOTB)フィールド検証は、次のとおりです。

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

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

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

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

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

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

メモ

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

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

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

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

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

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

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

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

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

このページ