Flowable中的新驳回方式:使用ChangeActivityStateBuilder实现多实例、并行网关和普通节点的驳回

作者:十万个为什么2024.04.01 10:37浏览量:192

简介:本文介绍了Flowable工作流引擎中,通过ChangeActivityStateBuilder实现新的驳回方式,包括多实例、并行网关和普通节点的驳回操作。我们将通过源码、图表、实例和生动的语言来解释这些复杂的技术概念,并提供实际应用的建议。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在Flowable工作流引擎中,驳回是一个常见的业务流程操作,它允许任务在执行过程中被退回给之前的执行者,以便进行修改或重新评估。Flowable提供了多种驳回方式,其中一种新的方式是通过ChangeActivityStateBuilder来实现。

1. 多实例驳回

多实例活动允许一个任务被复制多次,每个实例都可以由不同的执行者处理。当需要驳回多实例活动时,ChangeActivityStateBuilder可以帮助我们一次性地撤销所有实例的状态,使它们回到可编辑的状态。

  1. // 获取多实例活动的ID
  2. String multiInstanceId = ...;
  3. // 创建ChangeActivityStateBuilder
  4. ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
  5. // 设置多实例活动状态为ACTIVE,表示可以重新处理
  6. changeActivityStateBuilder
  7. .activityId(multiInstanceId)
  8. .executionId(executionId)
  9. .newState(ActivityState.ACTIVE)
  10. .changeActivityState();

2. 并行网关驳回

并行网关用于将流程拆分为多个并行分支,并在所有分支完成后合并。当需要驳回并行网关时,ChangeActivityStateBuilder可以确保所有并行分支的状态都被正确重置。

  1. // 获取并行网关的ID
  2. String gatewayId = ...;
  3. // 创建ChangeActivityStateBuilder
  4. ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
  5. // 设置并行网关状态为ACTIVE,以便重新进入
  6. changeActivityStateBuilder
  7. .activityId(gatewayId)
  8. .executionId(executionId)
  9. .newState(ActivityState.ACTIVE)
  10. .changeActivityState();

3. 普通节点驳回

对于普通的流程节点(如用户任务、服务任务等),ChangeActivityStateBuilder同样适用。通过指定节点的ID和执行ID,可以轻松地将节点状态重置为可编辑状态。

  1. // 获取普通节点的ID
  2. String taskId = ...;
  3. // 创建ChangeActivityStateBuilder
  4. ChangeActivityStateBuilder changeActivityStateBuilder = commandContext.getChangeActivityStateBuilder();
  5. // 设置普通节点状态为ACTIVE
  6. changeActivityStateBuilder
  7. .activityId(taskId)
  8. .executionId(executionId)
  9. .newState(ActivityState.ACTIVE)
  10. .changeActivityState();

实际应用建议

  1. 确保流程定义正确:在使用ChangeActivityStateBuilder之前,请确保流程定义中的活动ID和执行ID是准确的。

  2. 记录驳回历史:在驳回操作时,建议记录驳回的历史信息,以便后续审计和追踪。

  3. 考虑事务性:驳回操作可能会涉及多个数据库事务,确保在适当的隔离级别下执行这些操作,以防止数据不一致。

  4. 测试:在实际部署之前,在测试环境中充分测试驳回逻辑,确保它的正确性和稳定性。

结论

ChangeActivityStateBuilder为Flowable工作流引擎的驳回操作提供了灵活且强大的支持,使得多实例、并行网关和普通节点的驳回变得简单直观。通过遵循上述建议,您可以轻松地在您的业务流程中实现驳回功能,提高流程的灵活性和适应性。

article bottom image

相关文章推荐

发表评论