扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回

这篇博客介绍了如何在Activiti-5.12中灵活处理流程节点间的跳转和驳回操作。通过设置流程变量,实现了会签任务从并行到串行模式的动态切换,并详细展示了在不同任务状态下的任务领取、完成及模式调整过程。同时,定义了UserInfoMap接口用于获取用户信息,增强了流程的灵活性。
摘要由CSDN通过智能技术生成
由于项目需要,最近对开源工作流引擎Activiti-5.12的功能做了一下扩展,实现了以下功能:
1.自由流(流程节点间自由跳转和任意驳回/撤回)
2.流程会签任务串并行模式切换

一、自由流
在已有流程模型的的基础上,每个流程实例当前任务可以任意驳回/撤回或者向后续节点任意跳转而无需在相关的两个节点之间显示地画跳转路径(也就是所谓的“中国式”自由流),通过在Activiti的流程组件TaskService接口中增加以下两个方法来达到上述目的:
public void complateTask(String taskid,String destTaskKey)
public void complateTask(String taskid,Map<String,Object> vars,String destTaskKey)

这两个方法和以下原始方法相比较就是多了一个destTaskKey参数:
public void complateTask(String taskid)
public void complateTask(String taskid,Map<String,Object> vars)

destTaskKey参数告诉流程引擎在结束taskID任务后直接跳转到destTaskKey对应的任务节点,目前可以实现简单人工任务和会签人工任务的驳回/撤回或者向后连跳n个节点,暂不支持子流程任务和流程调用任务。

注意:我们只是对activiti进行了功能扩展,因此activiti原来所有功能没有受到任何影响,该怎么用还是怎么用,只是如果流程中临时有任意驳回/撤回需求或者任意跳转需求时(为了避免在流程图中画N X N条路径,同时也不想修改流程模型),就可以通过上述两个扩展接口轻松搞定。

另外在TaskService接口中增加了驳回到上个环节的默认接口:
/**
   * 将当前任务驳回到上一个任务处理人处,并更新流程变量参数
   * @param taskId
   * @param variables
   */
  void rejecttoPreTask(String taskId, Map<String, Object> variables);
 
  /**
   * 将当前任务驳回到上一个任务处理人处
   * @param taskId
   */
  void rejecttoPreTask(String taskId);

2.流程会签任务串并行模式切换
如果流程中存在多实例任务(会签任务),那么可以通过流程变量在处理任务时或者在发起流程实例的时候设置多实例任务执行的方式为串行还是并行。
切换方式一 在发起流程时设置对应的会签任务的是串行还是并行模式:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值