公開フォームを作成しよう(入力チェック編)

前: 基本編

前回の記事で、フォームに入力されたメールアドレスが存在するか確認するアプリを作成しました。送信されてきたメールアドレス宛に次の「受信タスク(フォーム)」の URL を送信して、タスクが処理されれば OK、という内容でした。これだけでもきちんと動作しますが、もう少し設定を工夫していきましょう。

  • 受信タスク(フォーム)の処理に期限を設定する
  • メッセージ開始イベント(フォーム)でメールアドレスをバリデーションする

受信タスク(フォーム)の処理に期限を設定する

今の設定では「受信タスク(フォーム)」が処理されない限り、いつまでもプロセスは終了しません。メールアドレスの存在確認などのケースでは、あまり長く処理待ちをする必要はないでしょう。それに、「受信タスク(フォーム)」のフォーム URL はランダム決定されているとはいえ、時間が経てば経つほど URL が他者に知られる危険性は高くなります。

「受信タスク(フォーム)」のプロパティでは、タスク処理の締切を設定できます。例としてプロセス開始から 7 日間という設定にしてみましょう。

まずは締切の日時を格納するデータ項目を作成します。

項目名 データタイプ 備考
申込締切 日時型 初期値:
processInstanceStartDatetime.addDays(7)
開始 受信 確認
申込締切 表示なし 表示なし 表示なし

「申込締切」の初期値を processInstanceStartDatetime.addDays(7) とすることで、プロセス開始の 7 日後の日時を「申込締切」に持たせることができます。

この「申込締切」を「受信タスク(フォーム)」の「締め切り」タブに入力することで、公開フォームへの入力の期限を設定できます。


メッセージ送信中間イベント(メール)のようにデータ埋込ができる

「受信タスク(フォーム)」に締切りを設定すると、ワークフローに期限切れの場合の分岐が表示されます。終了イベントを追加して、期限切れの場合はプロセスが自動で終了するようにしましょう。

また、URL に期限が設定されていることを知らせるため、「メッセージ送信中間イベント(メール)」より送信するメールの本文末尾に以下の一文を付け加えましょう。

この URL は ${[申込締切:3]} を過ぎると無効になります。

メッセージ開始イベント(フォーム)でメールアドレスをバリデーションする

メールアドレスの文字列にはある程度決まりがあるため、明らかにおかしい文字列を入力された場合には、その時点で確認して弾きたいですね。データ項目「メールアドレス」に満たすべき正規表現を設定することで、入力文字列に制限をかけることができます。想定されるメールアドレス文字列を表す正規表現として、次のものをおすすめします。

[-!#-‘*+/-9=?A-Z^-~]+(?:\.[-!#-‘*+/-9=?A-Z^-~]+)*@[-!#-‘*+/-9=?A-Z^-~]+(?:\.[-!#-‘*+/-9=?A-Z^-~]+)*

これは Questetra BPM Suite の内部で実際に使われている正規表現です。つまり、Questetra BPM Suite で使用を許可しているメールアドレスの書式ということになります。なお、この正規表現は RFC 5322 の Address Specification から

  • コメント
  • 空白文字
  • 制御文字
  • IP アドレス
  • RFC 2822 で obsolete (時代遅れ) とされた形式
  • quoted-string を含む形式

を除いたものを表しています。

また、バリデーションを行っていることを公開フォームの入力者に伝えるために、プレースホルダテキスト説明を設定しましょう。プレースホルダには入力例を表示するということで、「support@questetra.com」のように適当なメールアドレス例などを設定するのがよいでしょう。入力を始めると表示されなくなるものなので、重要事項は書かずに入力例程度に留めておくのが適切です。説明には「入力文字列は半角英数・記号のみにしてください。」など、入力文字列へかかる制限を簡潔に書いておきましょう。


データ項目「メールアドレス」にプレースホルダテキストと説明を設定
フォームでこのように表示されます

これで入力締切とメールアドレスのバリデーションを実装できました。ぜひ Questetra BPM Suite の Web フォームを業務で活用してください!

%d人のブロガーが「いいね」をつけました。