jBPMでタスクを途中で追加する

またまた平田です。

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

これにて、もり君も回覧できるようになりました。

コメントを残す

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