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終了(); }
これで夏休み中のくさなぎ氏が回覧者から外れました。