またまた平田です。
前回はjBPMでタスクを動的に生成しましたが、今回はフロー実行中にタスクを追加する方法です。
例えば、書類を回覧中に回覧者の一人が「この誤植、マジでウケるんですけど。奴にも見せとこ。」と思いたち、回覧者を追加するケースです。
JPDLのプロセス定義は前回と同じです。Javaの実装は次の通りです。
/** * 開始 * ↓ * 作成 ... 5人に回覧する * ↓ * 回覧 ... 3人が確認する * 更に1人に回覧する * 3人が確認する * ↓ * 終了 */ public void test回覧中に_回覧する_タスクを追加できる() { do開始(); do作成(stakeholders); { assertNode("回覧"); // 5件のうち3件のタスクを消化する endTasks(3); {// 回覧中に回覧者を追加する Task confirmTask = ((TaskNode) token.getNode()).getTask("確認する"); TaskInstance confirm = proc.getTaskMgmtInstance().createTaskInstance(confirmTask, token); confirm.setActorId("もり"); assertEquals("5件のうち3件のタスクを消化し、1件追加したから3件残のはず", 3, unfinishedTasks().size()); } // 残り3件のタスクを消化する endTasks(3); Collection confirms = allTasks("確認する"); for (TaskInstance each : confirms) { assertTrue("「確認する」タスクは全て完了しているはず", each.hasEnded()); } } do終了(); }
これにて、もり君も回覧できるようになりました。