flowable 怎么实现回退
时间: 2023-05-30 07:07:58 浏览: 1400
在Flowable中,回退(rollback)可以通过以下方式实现:
1. 使用历史记录(history):Flowable提供了历史记录API,可以查询流程实例的所有历史记录,包括任务、变量、流程实例等。可以通过查询历史记录来找到之前的任务,并将其重新激活,从而实现回退。
2. 使用子流程(subprocess)和跳过(skip):在子流程中可以设置跳过(skip)属性,当子流程结束时,如果跳过属性为true,则子流程中所有未完成的任务将被跳过。因此,可以将回退任务放到子流程中,在回退时将子流程重新启动并设置跳过属性为true,从而实现回退。
3. 使用事件网关(event gateway):事件网关可以根据特定的事件触发不同的流程分支。可以使用事件网关来实现回退,当事件触发时,选择回退分支,重新启动回退分支中的任务。
4. 使用Java API:Flowable还提供了Java API,可以通过Java代码来实现回退。可以查询流程实例的任务列表,找到之前的任务,并将其重新激活,从而实现回退。
需要注意的是,回退操作可能会破坏流程的完整性和一致性,因此需要仔细考虑和测试回退操作的影响。
相关问题
flowable如何回退
Flowable支持回退功能,它可以让你在流程实例执行过程中,将流程回退到之前的步骤或节点,以便重新执行或修改流程。回退的方式可以是通过调用API来实现,也可以通过在流程设计器中配置回退路径来实现。下面是通过API实现回退的步骤:
1. 获取当前流程实例的历史记录信息,包括流程实例ID、当前所在节点等信息。
2. 根据当前所在节点,查找该节点的前驱节点,即可以回退到哪个节点。
3. 构造回退任务,并将其插入到流程实例的待办任务列表中。
4. 将当前任务完成,即将当前任务的状态设置为已完成。
5. 通过API启动新的任务来执行回退任务。
6. 流程实例会回退到指定的节点,重新执行该节点后的所有任务。
需要注意的是,回退功能在实际应用中要慎用,因为回退可能会造成流程实例状态的异常,对流程执行的完整性和正确性产生影响。
flowable并行任务回退
并行任务回退是指在流程中存在多个并行分支时,某个分支中的任务需要回退到之前的节点,而不影响其他分支的正常流转。下面是实现并行任务回退的方法:
1.对于同一条分支内部的任务回退,只需要将该分支中的任务节点依次回退即可,不会影响其他分支的正常流转。
2.对于不同分支之间的任务回退,需要将回退操作同步到同级分支中,即同级分支中的任务节点也需要回退。如果回退到上一级分支,则同级分支也需要回退。
3.对于并行分支节点的后续节点退回至并行分支节点,只需要将任务节点退回至指定节点即可,其余分支不受影响。
需要注意的是,为了实现并行任务回退,需要对业务逻辑进行抽象归纳,并采用分层架构,以便满足层层式退回的需求。
阅读全文