19:30ともなると、そろそろ会社に一人ぼっちになりそうな平田です。
連投最後のネタは、フロー実行中にタスクを削除する方法です。
例えば、書類作成者が「そろそろ皆さん見終わったかなぁ。あれ?この人って夏休み中だったよな。じゃあ回覧者から外すか。あ~、夏休み取りて~。」と不在者に気づき、回覧者を削除するケースです。
JPDLのプロセス定義は前回と同じです。Javaの実装は次の様になります。
/**
* 開始
* ↓
* 作成 ... 5人に回覧する
* ↓
* 回覧 ... くさなぎ氏のタスクを削除する
* 4人が確認する
* ↓
* 終了
*/
public void test回覧中に_回覧する_タスクを削除できる() {
do開始();
do作成(stakeholders);
{
assertNode("回覧");
{// 回覧中に回覧者を削除する
Collection confirms = unfinishedTasks();
for (TaskInstance each : confirms) {
if (each.getActorId().equals("くさなぎ"))
each.cancel();
}
assertEquals("くさなぎ氏のタスクを削除したので4件残のはず",
4, unfinishedTasks().size());
}
// 残り4件のタスクを消化する
endTasks(4);
Collection confirms = allTasks("確認する");
for (TaskInstance each : confirms) {
assertTrue("「確認する」タスクは全て完了しているはず", each.hasEnded());
}
}
do終了();
}これで夏休み中のくさなぎ氏が回覧者から外れました。