10.2.5. タスクのエスカレーションと通知
タスクのエスカレーションが場合によっては必要になります。例えば、タスクに割り当てられたユーザーが一定の時間以内にそのタスクを完了できない場合などです。このような場合、タスクは別のアクターかグループに再割当てされます。以下のステータスにあるタスクに対して、エスカレーションを定義することができます。
エスカレーションが発生するたびに、タスクは、以前に割り当てられていたユーザーから、エスカレーション定義のあるユーザーやグループに potential owners として割り当て直されます。Actual Owner がタスクに割り当てられると、エスカレーションがリセットされタスクが READY のステータスに入ります。
- 開始されていない (READY または RESERVED)
- 完了されていない (IN_PROGRESS)

以下は、エスカレーションプロセスの際に指定した属性一覧です。
- Users。この属性は、エスカレーション時にタスクを割り当てるべき、コンマ区切りのユーザー一覧です。この属性の許容値は、文字列の値と #{user-id} 式です。
- Groups。この属性は、エスカレーション時にタスクを割り当てるべき、コンマ区切りのユーザー一覧です。この属性の許容値は、文字列の値と #{group-id} 式です。
- Expires At。この属性は、エスカレーションを行うべき時間を定義します。タイマーと同様に時間の規格 (2m, 4h, 6d, など) で定義する必要があります。この属性の許容値は、文字列の値と #{expiresAt} 式です。
- Type。この属性は、エスカレーションを行うべきタスクのステータスのタイプを特定します (not-started | not-completed)。
E-メール通知は「Notification」タブから送信されます。定義としてはエスカレーションと非常に似ています。E-メール通知は、以下のステータスのタスクに対して送信可能です。
E-メール通知には以下のプロパティがあります。
- 開始されていない (READY または RESERVED)
- 完了されていない (IN_PROGRESS)

- Type。この属性は、エスカレーションを行うべきタスクのステータスのタイプを特定します (not-started | not-completed)。
- Expires At。この時間定義のプロパティは、エスカレーションを行うべき時間を特定します。タイマーと同様に時間の規格 (2m, 4h, 6d, など) で定義する必要があります。このプロパティの許容値は、文字列の値と #{expiresAt} 式です。
- From。E-メールメッセージの From フィールドで使用する、任意のユーザーまたはグループ ID、許容値は文字列と式です。
- To Users。通知の受信者となるユーザーの ID (コンマ区切りのリスト)。
- To Groups。通知の受信者となるグループの ID (コンマ区切りのリスト)。
- Reply To、通知の返信を受け取るべき任意のユーザーまたはグループ ID。
- Subject。通知の件名。許容値は文字列と式となっています。
- Body。通知の内容。許容値は文字列と式となっています。
通知は #{processVariable} でプロセス変数を、${taskVariable} でタスク変数を参照します。このように、プロセス変数はタスクの作成時に、タスク変数は通知時間に解決されます。以下のリストには、通知を行う際に使用するタスク変数が複数含まれています。
- taskId: タスクインスタンスの内部 ID
- processInstanceId: タスクが所属するプロセスインスタンスの内部 ID
- workItemId: このタスクを作成する作業アイテムの内部 ID
- processSessionId: ランタイムエンジンのセッション内部 ID
- owners: タスクの Potential Owner となるユーザー/グループの一覧
- doc: 定期的なタスクの変数を含むマップ
以下はメッセージの通知例で、様々な変数がどのようにアクセスされるか例示しています。
<html><body><b>${owners[0].id} you have been assigned to a task (task-id ${taskId})</b><br> You can access it in your task <a href="http://localhost:8080/jbpm-console/app.html#errai_ToolSet_Tasks;Group_Tasks.3">inbox</a><br/> Important technical information that can be of use when working on it<br/> - process instance id - ${processInstanceId}<br/> - work item id - ${workItemId}<br/><hr/> Here are some task variables available: <ul><li>ActorId = ${doc['ActorId']}</li><li>GroupId = ${doc['GroupId']}</li><li>Comment = ${doc['Comment']}</li></ul><hr/> Here are all potential owners for this task: <ul> $foreach{orgEntity : owners} <li>Potential owner = ${orgEntity.id}</li> $end{} </ul><i>Regards</i></body></html>