需求背景

接《流程回退》篇,是通过修改流程实例API实现的,这不太“流程”

此篇,通过更加符合“流程”的方式,实现流程回退

配置

Untitled

在“节点2”中,配置了边界信号事件,说明允许在这个节点,回退到“节点1”

代码

public void withdraw() {
    // 找到对应的Task
    Task task = taskService.createTaskQuery()
            .taskId("6294bdc5-d0f6-11ec-b609-822f69271b40")
            .singleResult();
    // 给Task对应的Execution发送信号事件
    runtimeService.createSignalEvent("Signal-Withdraw")
            .executionId(task.getExecutionId())
            .send();
}

找到Task,给Task对应的Execution发送信号事件

演示效果

发起演示流程,3个用户完成节点1的操作,停留在节点2上

Untitled

执行代码后,查看流程情况

Untitled

其中一个流程,退回到“节点1”,其他流程尚停留在“节点2”