jBPMでタスクを途中で削除する

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終了();
    }

これで夏休み中のくさなぎ氏が回覧者から外れました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です