赞
踩
按照业务流程要求,定义完BPM流程,在其他节点任务都审批完成后,当进入到最后一个节点任务前,流程就直接终止了(act_ru_task表中的数据没有了,流程判断已结束),导致终审始终无法进入。
1、开始主要怀疑对象是指定的assignee值错误,但经过代码调试跟踪,以及数据表中字段值确认,排出这个原因
2、找其他使用过activiti框架的技术人员帮忙看看,对照过定义的BPM流程,发现几个关键信息都是没有问题的,如:category、assignee、priority
3、后来我怀疑是框架的complete方法(ProcessEngine.getTaskService().complete)执行有什么问题,但由于是封装后的看不到源码,始终举足无措
4、最后由其他开发对于以往的代码才发现是因为BPM流程定义中,关于flow的定义里,condition的定义值,在代码中执行complete的参数值必须相同,不然就无法通过这个flow执行下一个节点任务:
如:
我在连接终审的flow中定义了${msg=='批准'},在下面complete参数nextParams中的msg键值就必须是“批准”,否则无法执行
nextParams.put(BpmConstants.MSG_FLAG, BpmConstants.Y);
taskService.complete(taskId,nextParams);
当按照业务特性,修改msg值使BPM定义中和代码中的保持一致后,流程运行正常。
前面说得很啰嗦(实际也是折腾了两三天),说到底就是一句话:
Activiti工作流中的flow连接线上定义的condition的值,在流程执行中相当于ID作用,并非一个随便填写的值。
小小经历,由于网上很难查到这种问题,所以分享只为让和我类似水平的人有个借鉴,减少苦恼、提高效率、节约时间成本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。