
ワークフローアプリを作成するとき、タスクの発生日時や処理締切日時を設定できます。例えば出張申請・報告アプリを考えると、出張申請が承認された後、すぐに「出張の内容を報告してください」というタスクが届いても少し困りますね。
「まだ出張まで日があるのに、それまでずっと「内容報告」タスクの通知が『マイタスク』に居座るのか……」
それに、出張報告に提出締切がほしいという場合もあるでしょう。チャットやメール、あるいは口頭で「◯月×日までに提出!」と出張者に伝えることもできますが、あまりスマートではありません。タスク自体に締切を設定すれば、Questetra BPM Suite が自動で締切の管理をしてくれます。このチュートリアルでは、タイマー中間イベントとデータ更新・ヒューマンタスクの締切設定を活用して、出張にまつわる一連の業務フローを扱うアプリを作成します。これらの機能を効果的に使ってアプリを設計することで、スケジュールに合わせたタスクの作成・締切の制御を実現できます。
ただし、今回は「トークンの停止・進行を日時によって制御する方法」に焦点を絞って説明するため、出張申請・報告アプリとしては最低限の構成で作成します。実際に業務で使用する場合にはワークフロー図上での条件分岐や、スイムレーン・処理担当者設定を工夫する必要があるでしょう。
事前準備
アプリを作成するには「はじめての Questetra BPM Suite」の出張申請アプリを参考にしてください。Chpt.2 から Chpt.3 の「入力値に関する設定」までの内容に沿って新規にアプリを作成してください。Chpt.1 と Chpt.2 は内容的にほぼ独立していますが、Chpt.1 で準備したユーザ・組織の登録情報が Chpt.2 以降でも使用されています。ユーザ・組織については環境に合わせて適宜読み替えるか、Chpt.1 を読んで新しく用意してください。
ワークフロー図
作成したアプリをさらに編集して下図の状態まで設定してください。「出張開始」と書かれた円形のアイコンがタイマー中間イベントです。タイマー中間イベントは、中間イベントタスクのパレットに入っています。
目標のワークフロー図にするには一部でヒューマンタスクの設定が必要なので、ひとまずこの状態まで設定してください。「内容確認」タスクの分岐については後で触れます。
データ項目
次の 7 つになるように設定してください。既に設定されているデータ項目を流用しましょう。
データ項目名 | データ型 | フィールド名 | 備考 |
件名 | 文字型・単一行 | ||
出張開始日 | 日付型・年月日 | q_trip_start | 「はじめての〜」での「開始日」 |
出張終了日 | 日付型・年月日 | q_trip_end | 「はじめての〜」での「終了日」 |
申請者 | ユーザ型・検索セレクトボックス | q_trip_user | |
申請内容 | 文字型・複数行 | q_purpose | 「はじめての〜」での「内容」 |
金額 | 数値型 | q_budget | |
報告締切 | 日付型・年月日 | q_report_deadline | |
報告内容 | 文字型・複数行 | q_report |
データ編集許可
次のように設定してください。
出張申請 | 申請確認 | 内容報告 | 内容確認 | |
件名 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
出張開始日 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
出張終了日 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
申請者 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
申請内容 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
金額 | 編集可 | 表示のみ | 表示のみ | 表示のみ |
報告締切 | 表示なし | 表示なし | 表示なし | 表示なし |
報告内容 | 表示なし | 表示なし | 編集可 | 表示のみ |
「出張開始」設定
タイマー中間イベントは流れてきたトークンを指定された日時まで留めるオブジェクトです。ワークフロー図の途中に挟むことで、プロセスの進行を一時止めることができます。
今回は「タイマー中間イベント」を使って、出張が始まるまで「内容報告」タスクが発生しないようにします。設定ダイアログでタイマーをデータ項目「出張開始日」に設定すると、「出張申請」タスクで入力された出張開始日まで、トークンは「出張開始」に留まることになります。
「出張開始日」を過ぎると、トークンは「出張開始」の次の「内容報告」タスクに進みます。これで出張が始まる前から出張者のマイタスクに「内容報告」タスクが入ることを防ぐことができます。
タイマーをデータ項目で指定する場合、日時型・日付型が使用できます。今回のように日付型を使用した場合、タイマーが作動する時刻は 00:00 になります。
「締切計算」設定
データ更新を用いて「内容報告」タスクに設定する締切日時を計算します。「データ更新」では数値や文字、日時の計算を行えます。例えば「内容報告」タスクを「出張終了日」から7日以内に完了させてほしい場合、後述のヒューマンタスクへの締切設定のために、「出張終了日」 + 7日の日付を計算しておく必要があります。式は以下のようになります。
#q_trip_end.addDays(7)
計算した日付は日付型データ項目の「報告締切」に保存しましょう。

日付型・日時型データ項目の計算に使用できる関数については、以下のページを参照してください。
「内容報告」締切設定
ヒューマンタスクの設定ダイアログで締切の設定を行うと、指定の日時を過ぎたときにタスクを異常終了させたり、処理担当者に通知を送ったりすることができます。今回は先ほど計算した「出張終了日」から 7 日後の日付を締切として設定し、締切を過ぎたら通知を送ることにしましょう。
ヒューマンタスクの「締め切り日時」をデータ項目で指定する場合、日時型・日付型が使用できます。今回のように日付型を使用した場合、締め切りの時刻は 23:59 になります。
締め切り到達時の処理を「何もしない」にすると、締切を過ぎたときに「締め切りを過ぎています」という通知が届きますが、タスクの処理は締切を過ぎても行うことができます。
締切超過の通知とともに「マイタスク」の当該タスクの締切欄が赤字で表示されるようになるが、タスクは削除されない
ここまでの設定で、出張申請から報告まで一通りの業務をワークフローアプリに実装することができました。
「内容確認」の通知を 3 日で消すには?
ところで、業務の種類によっては「絶対に内容を確認しなければいけない、という程でもない」という報告になる場合もあるでしょう。そういったタスクを放置すると、アプリの方で対処していない限り、「マイタスク」がどんどん溜まっていってしまいます。
このようなケースに対応するために、ヒューマンタスクの締切設定を用いて「工程開始日」 から 3 日でタスクが終了するようにしましょう。「内容確認」の締切設定を次のように設定してください。
締め切り到達時の処理を「タスクを異常終了させる」にすると、ヒューマンタスクアイコンにタイマー境界イベントが追加されます。期限切れの場合はこちらにトークンが進みます。
このように設定することで、上司がタスクを完了した場合/3 日間放置して異常終了した場合のいずれでも、トークンは「結合ゲートウェイ」に進んで終了イベントにたどり着きます。タスクが異常終了した場合は当該タスクの通知は消えるので、「内容確認」タスクは作成から 3 日で上司の「マイタスク」から消えるというわけです。
この記事では「タイマー中間イベント」や締切設定の使い方のアイデアをわかりやすく紹介するために、サンプルアプリ自体は簡潔なものとしました。トークンの流れる日時を制御したいとき、この記事の内容を応用してみてください。