
前回の記事で、フォームに入力されたメールアドレスが存在するか確認するアプリを作成しました。送信されてきたメールアドレス宛に次の「受信タスク(フォーム)」の URL を送信して、タスクが処理されれば OK、という内容でした。これだけでもきちんと動作しますが、もう少し設定を工夫していきましょう。
- 受信タスク(フォーム)の処理に期限を設定する
- メッセージ開始イベント(フォーム)でメールアドレスをバリデーションする
受信タスク(フォーム)の処理に期限を設定する
今の設定では「受信タスク(フォーム)」が処理されない限り、いつまでもプロセスは終了しません。メールアドレスの存在確認などのケースでは、あまり長く処理待ちをする必要はないでしょう。それに、「受信タスク(フォーム)」のフォーム URL はランダム決定されているとはいえ、時間が経てば経つほど URL が他者に知られる危険性は高くなります。
「受信タスク(フォーム)」のプロパティでは、タスク処理の締切を設定できます。例としてプロセス開始から 7 日間という設定にしてみましょう。
まずは締切の日時を格納するデータ項目を作成します。
データ項目名 | データ型 | 備考 |
---|---|---|
申込締切 | 日時型 | 初期値: processInstanceStartDatetime.addDays(7) |
開始 | 受信 | 確認 | |
---|---|---|---|
申込締切 | (表示なし) | (表示なし) | (表示なし) |
「申込締切」の初期値を processInstanceStartDatetime.addDays(7) とすることで、プロセス開始の 7 日後の日時を「申込締切」に持たせることができます。
この「申込締切」を「受信タスク(フォーム)」の「締め切り」タブに入力することで、公開フォームへの入力の期限を設定できます。

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

また、URL に期限が設定されていることを知らせるため、「メッセージ送信中間イベント(メール)」より送信するメールの本文末尾に以下の一文を付け加えましょう。
メッセージ開始イベント(フォーム)でメールアドレスをバリデーションする
メールアドレスの文字列にはある程度決まりがあるため、明らかにおかしい文字列を入力された場合には、その時点で確認して弾きたいですね。データ項目「メールアドレス」に満たすべき正規表現を設定することで、入力文字列に制限をかけることができます。想定されるメールアドレス文字列を表す正規表現として、次のものをおすすめします。
これは Questetra BPM Suite の内部で実際に使われている正規表現です。つまり、Questetra BPM Suite で使用を許可しているメールアドレスの書式ということになります。なお、この正規表現は RFC 5322 の Address Specification から
- コメント
- 空白文字
- 制御文字
- IP アドレス
- RFC 2822 で obsolete (時代遅れ) とされた形式
- quoted-string を含む形式
を除いたものを表しています。
また、バリデーションを行っていることを公開フォームの入力者に伝えるために、プレースホルダテキストと説明を設定しましょう。プレースホルダには入力例を表示するということで、「support@questetra.com」のように適当なメールアドレス例などを設定するのがよいでしょう。入力を始めると表示されなくなるものなので、重要事項は書かずに入力例程度に留めておくのが適切です。説明には「入力文字列は半角英数・記号のみにしてください。」など、入力文字列へかかる制限を簡潔に書いておきましょう。

データ項目「メールアドレス」にプレースホルダテキストと説明を設定

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