送信アクションは、ユーザーがアダプティブフォームの「送信」ボタンをクリックしたときにトリガーされます。アダプティブフォームの送信アクションを設定することができます。アダプティブフォームには、追加設定なしで使用できる送信アクションがあります。デフォルトの送信アクションをコピーし、拡張することにより、独自の送信アクションを作成することができます。ただし、要件に基づき、送信されたフォームのデータを処理するための独自の送信アクションを書いて登録することができます。
フォームが事前入力または送信された場合、送信データはAEM経由で送信され、中間形式へのデータマッサージが行われます。 アダプティブフォームがAdobe Sign、検証、フォームポータルのドラフト、送信、またはAEMワークフローを使用する場合を除き、AEMインスタンスではデータは保存されません
サイドバーにある「アダプティブフォームコンテナ」プロパティの「送信」セクションで、送信アクションを設定できます。
送信アクションの 設定
アダプティブフォームで使用可能なデフォルトの送信アクションは次のとおりです。
電子メールで PDF を送信アクションは、XFA テンプレートをフォームモデルとして使用しているアダプティブフォームにのみ使用することができます。
[AEM_Installation_Directory]\crx-quickstart\temp\datamanager\ASM folder existsがあることを確認します。 ディレクトリは、添付ファイルを一時的に保存するために必要になります。ディレクトリが存在しない場合は作成します。
データに<afData>、<afBoundData>、</afBoundData>タグを含まないスキーマ(XMLスキーマ、JSONスキーマ、フォームテンプレート、またはフォームデータモデル)に、XMLまたはJSONデータを使用して、フォームテンプレート、フォームデータモデル、またはスキーマベースのアダプティブフォームを事前入力するその場合、アダプティブフォームの境界なしフィールド(境界なしフィールドはアダプティブフォームフィールドで、bindrefプロパティがないアダプティブフォームフィールドです)のデータは失われます。
アダプティブフォームがユースケースを実現するように、カスタム送信アクションを作成できます。詳しくは、「アダプティブフォームのカスタム送信アクションの作成」を参照してください。
REST エンドポイントへの送信 オプションでは、フォームに記入されたデータが、HTTP GET リクエストの一環として設定済みの確認ページに渡されます。フィールド名をリクエストに追加することができます。リクエストのフォーマットは次のとおりです。
{fieldName}={request parameter name}
以下の画像に示されているとおり、param1
および param2
が、textbox フィールドおよびnumericbox フィールドからコピーされた値を持つパラメーターとして次のアクションに向けて渡されます。
POST リクエストを有効にすることで、リクエストを POST するURL を入力することもできます。フォームをホストする AEM サーバーにデータを送信するには、AEM サーバーのルートパスに対応する相対パスを使用します。例えば、/content/forms/af/SampleForm.html のようにします。他のサーバーにデータを送信するには、絶対パスを使用します。
REST エンドポイントへの送信の設定
フィールドを REST URL 内のパラメーターとして渡すためには、すべてのフィールドが異なる要素名を持っている必要があります。これは、異なるパネルに置かれているフィールドにも適用されます。
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データと添付ファイルのポストに使用するパラメーターは、dataXml
とattachments
です。
例えば、この 2 つのパラメーターをスクリプト中で使用して、REST エンドポイントに送信されたデータを解析できます。データを保存および解析するための構文は、次のとおりです。
String data=request.getParameter("dataXml");
String att=request.getParameter("attachments");
この例では、data
が XML データを格納し、att
が添付ファイルデータを格納します。
電子メール送信アクションは、フォームの送信が成功したときに、1つ以上の受信者に電子メールを送信します。 生成される電子メールには、事前に定義された形式のフォームデータを含めることができます。
フォームデータを電子メールに含めるには、異なるパネルに配置されているフォームフィールドを含め、すべてのフォームフィールドが異なる要素名を持っている必要があります。
「電子メールで PDF を送信」送信アクションでは、フォームの送信が完了すると同時に、1 人または複数の受信者にフォームデータを含む PDF が添付された電子メールが送信されます。
**注意:**この送信アクションは、レコードのドキュメントテンプレートを持つ XFA ベースのアダプティブフォームおよび XSD ベースのアダプティブフォームに使用することができます。
「フォームワークフローへの送信」送信オプションでは、データ XML および添付ファイル(存在する場合に)が既存の Adobe LiveCycle プロセスまたは JEE での AEM Forms プロセスに送信されます。
送信アクション「フォームワークフローへの送信」の設定方法について詳しくは、「フォームワークフローを利用したフォームデータの送信および処理」参照してください。
フォームデータモデルを使用した送信送信アクションは、フォームデータモデル内の指定したデータモデルオブジェクト用に送信されたアダプティブフォームデータを、そのデータソースに書き込みます。 送信アクションの設定時に、データソースに書き戻す送信済みデータを持つデータモデルオブジェクトを選択できます。
さらに、添付されたフォームをフォームデータモデルやレコードのドキュメント(DOR)を使用してデータソースに送信できます。
フォームデータモデルについて詳しくは、「AEM Forms のデータ統合機能」を参照してください。
Formsポータル送信アクションオプションは、フォームデータをAEM Formsポータル経由で使用できるようにします。
フォームポータルと送信アクションについて詳しくは、「ドラフトと送信コンポーネント」を参照してください。
「AEM ワークフローを起動」送信アクションは、アダプティブフォームと AEM ワークフローを関連付けます。フォームが送信されると、関連するワークフローは処理ノードで自動的に起動します。さらに、ワークフローのペイロードの場所に、データファイル、添付ファイル、レコードのドキュメントを配置します(該当の場合)。
「AEM ワークフローを起動」送信アクションを使用する前に、AEM DS の設定を行います。AEMワークフローの作成について詳しくは、OSGiでのフォーム中心のワークフローを参照してください。
通常、どのオンラインデータキャプチャシステムでも、開発者はいくつかのビジネスルールを適用するために、クライアント側にJavaScriptの検証をいくつか配置します。 しかし、最新のブラウザでは、エンドユーザーが Web Browser DevTools Console などのさまざまな手法を使ってこれらの検証を回避し、手動で送信を行える方法が存在します。このような方法は、アダプティブフォームにも有効です。 フォーム開発者は、多様な検証ロジックを作成することができますが、エンドユーザーは、これらの検証ロジックを回避し、無効なデータをサーバーに送信することができます。無効なデータは、フォーム製作者が適用したビジネスルールを破ることになります。
サーバー側の再検証機能は、アダプティブフォームの製作者がアダプティブフォームのデザイン中に指定した検証を、サーバー上でも実行するための機能です。これは、フォームの検証で表されるデータ送信の漏洩やビジネスルール違反の可能性を阻止します。
アダプティブフォームの追加設定なし(OOTB)のフィールド検証で、サーバーで再実行されるものは次のとおりです。
サイドバーのアダプティブフォームコンテナの下にあるサーバーで再検証を使用して、現在のフォームのサーバー側検証を有効または無効にします。
検証の有効化図:サーバー側検証の 有効化
エンドユーザーがこれらの検証を回避してフォームを送信した場合、サーバーが再度検証を行います。サーバー側での検証が失敗した場合、送信処理が中止されます。エンドユーザーには、元のフォームが再度表示されます。取得されたデータおよび送信されたデータは、エラーとしてユーザーに表示されます。
複雑な検証ルールの場合、正確な検証スクリプトはカスタム関数の中に存在し、作成者はこれらのカスタム関数をフィールド検証式から呼び出すことがあります。サーバー側の検証の実行中に、このカスタム機能ライブラリを既知で使用可能にするために、フォーム作成者は、以下に示すように、アダプティブフォームコンテナのプロパティの基本タブでAEMクライアントライブラリの名前を設定できます。
式でのサポートカスタム関数図:検証式での サポートカスタム関数
作成者は、アダプティブフォームごとにカスタム Javascript ライブラリを設定することができます。ライブラリには、jQuery および underscore.js に依存する再利用可能な関数のみを保存してください。
AEM セキュリティおよび堅牢化ガイドラインの一部として、404.jsp や 500.jsp などのカスタムエラーページを設定してください。これらのハンドラーは、フォーム送信時に 404 または 500 エラーが表示されるときに呼び出されます。また、これらのハンドラーは、発行ノードでこれらのエラーコードがトリガーされるときにも呼び出されます。
詳しくは、エラーハンドラーによって表示されるページのカスタマイズを参照してください。