
クエステトラユーザのみなさん、こんにちは。開発責任者の畠中です。
今日は、バージョン 11.7 の新機能「受信タスク(フォーム)」の使い方について、前回の話の続きになります。
申込フォームで、メールの存在確認をはさむ — 受信タスク (フォーム) の使い方 —
前回作成したワークフローアプリは以下の通りです。
- 開始イベント(フォーム)でメールアドレスを入力してもらう。
- 1 で入力されたメールアドレスにメール送信。3 の URL を伝える。
- 受信タスク (フォーム) で続きの情報を入力してもらう。
- ヒューマンタスクはおまけ。
これの 3 ステップ目に「締め切り」がありませんでした。
3 ステップ目の URL は類推が難しいとは言え、無期限だと攻撃されるリスクも高まります。
申し込みを受け付ける側の業務の観点でも、締め切りを設定したほうが良いでしょう。
そこで先ほどのワークフローアプリを改良します。まず締め切りを表すデータ項目を追加しました。
初期値で締め切りを「7日後」に設定しています。
データ項目名 | データ型 | 必須 | 開始イベント (フォーム) |
受信タスク (フォーム) |
ヒューマン タスク |
---|---|---|---|---|---|
件名 | – | – | – | – | 表示のみ |
メールアドレス | 文字型 単一行 |
〇 | 編集可 | 表示のみ | 表示のみ |
名前 | 文字型 単一行 |
〇 | – | 編集可 | 表示のみ |
フォームキー | 文字型 単一行 |
– | – | – | 表示のみ |
初期値
#{#randomString(20)} |
|||||
申し込み締め切り | 日時型 | – | – | – | 表示のみ |
初期値
processInstanceStartDatetime.addDays(7) |
メール本文も変更しています。締め切りを伝えてあげないと、解らないので。
宛先 |
${[メールアドレス:0]} |
---|---|
標題 | 申込ありがとうございました。 |
本文 | |
以下の URL にアクセスして、続きの入力をお願いします。 ${var[applicationRoot]}System/ReceiveTask/Form/1760/2/${[プロセスID]}/${[フォームキー:2]}/view 締め切り日時は以下の通りです。 ${[申し込み締め切り:3]} |
その上で、ワークフロー図を変更します。1 と 2 のステップの間に、「AND ゲートウェイ」をはさみます。これは分岐先全てにトークンを流すもので、以降の処理が並列に動作するようになります。
並列に動作するもう1つの処理には、タイマー中間イベントを使用します。もちろんタイマー中間イベントで指定する時刻は、先に追加したデータ項目「申し込み締め切り」です。
その後に全終了イベントを使い、締め切りが来た場合には、プロセス全体を強制終了させてしまうようにします。つまり並列で流れている、もう1つのトークンについても、強制的に終了するようにします。
ただこのやり方だと、受信タスク(フォーム)が完了していても、締め切りが来たらプロセス全体が強制終了してしまいます。この簡単なワークフローアプリでは「確認」だけですが、この先の手続きが長い場合には、強制終了しないようにしたいです。そこで、ワークフローアプリを再改良します。
タイマー中間イベント後、XOR ゲートウェイをはさみ、受信タスク未終了の場合のみ、全終了イベントにトークンが流れる(プロセスが強制終了される)ようにします。受信タスクが終了済みの場合は、通常の終了イベントにトークンが流れ、プロセスの処理はそのまま続くようにします。
受信タスクが未終了か終了済みかどうかの判定は、受信タスクで初めて入力される必須データ項目 「名前」を活用します。「名前」が空であれば、受信タスク(フォーム)は未終了と判断し、全終了イベントにトークンを流します。空でなければ、受信タスク(フォーム)は終了済みと判定し、終了イベントにトークンを流します。終了イベントの場合、並列で流れているもう1つのトークンは終了しません。そのままワークフロー図上を、流れていきます。
条件名 | 条件式 | 遷移先 |
---|---|---|
受信タスク未終了 | 名前(値が入力されていない) | 全終了 |
デフォルトフロー | 無条件に遷移 | 終了 |
今回は以上です。11.7.0 のリリース (2018-06-11) まであと少しです。
Ver.11.7 ワークフロー途中で入力を受け付ける公開フォームに対応 (2018年6月11日)
ピンバック: 申込フォームで、電話番号の存在確認をはさむ – Questetra Support
ピンバック: 申し込みフォームに期限を設定する (改訂版) — 受信タスク (フォーム) の使い方 — – Questetra Support