Flowable中的新驳回方式:使用ChangeActivityStateBuilder实现多实例、并行网关和普通节点的驳回
2024.04.01 10:37浏览量:192简介:本文介绍了Flowable工作流引擎中,通过ChangeActivityStateBuilder实现新的驳回方式,包括多实例、并行网关和普通节点的驳回操作。我们将通过源码、图表、实例和生动的语言来解释这些复杂的技术概念,并提供实际应用的建议。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
在Flowable工作流引擎中,驳回是一个常见的业务流程操作,它允许任务在执行过程中被退回给之前的执行者,以便进行修改或重新评估。Flowable提供了多种驳回方式,其中一种新的方式是通过ChangeActivityStateBuilder
来实现。
1. 多实例驳回
多实例活动允许一个任务被复制多次,每个实例都可以由不同的执行者处理。当需要驳回多实例活动时,ChangeActivityStateBuilder
可以帮助我们一次性地撤销所有实例的状态,使它们回到可编辑的状态。
// 获取多实例活动的ID
String multiInstanceId = ...;
// 创建ChangeActivityStateBuilder
ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
// 设置多实例活动状态为ACTIVE,表示可以重新处理
changeActivityStateBuilder
.activityId(multiInstanceId)
.executionId(executionId)
.newState(ActivityState.ACTIVE)
.changeActivityState();
2. 并行网关驳回
并行网关用于将流程拆分为多个并行分支,并在所有分支完成后合并。当需要驳回并行网关时,ChangeActivityStateBuilder
可以确保所有并行分支的状态都被正确重置。
// 获取并行网关的ID
String gatewayId = ...;
// 创建ChangeActivityStateBuilder
ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
// 设置并行网关状态为ACTIVE,以便重新进入
changeActivityStateBuilder
.activityId(gatewayId)
.executionId(executionId)
.newState(ActivityState.ACTIVE)
.changeActivityState();
3. 普通节点驳回
对于普通的流程节点(如用户任务、服务任务等),ChangeActivityStateBuilder
同样适用。通过指定节点的ID和执行ID,可以轻松地将节点状态重置为可编辑状态。
// 获取普通节点的ID
String taskId = ...;
// 创建ChangeActivityStateBuilder
ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
// 设置普通节点状态为ACTIVE
changeActivityStateBuilder
.activityId(taskId)
.executionId(executionId)
.newState(ActivityState.ACTIVE)
.changeActivityState();
实际应用建议
确保流程定义正确:在使用
ChangeActivityStateBuilder
之前,请确保流程定义中的活动ID和执行ID是准确的。记录驳回历史:在驳回操作时,建议记录驳回的历史信息,以便后续审计和追踪。
考虑事务性:驳回操作可能会涉及多个数据库事务,确保在适当的隔离级别下执行这些操作,以防止数据不一致。
测试:在实际部署之前,在测试环境中充分测试驳回逻辑,确保它的正确性和稳定性。
结论
ChangeActivityStateBuilder
为Flowable工作流引擎的驳回操作提供了灵活且强大的支持,使得多实例、并行网关和普通节点的驳回变得简单直观。通过遵循上述建议,您可以轻松地在您的业务流程中实现驳回功能,提高流程的灵活性和适应性。

发表评论
登录后可评论,请前往 登录 或 注册