1. 本人之前未用过jbpm 2. 此时采用4.2版本
问题描述: 节点2向节点3提交一任务,在节点3尚未处理前,怎么将任务撤回(回到节点2).
考虑:
当前的活动节点已经是节点3;
方式1:删除当前的任务(3的),更改已完成节点的任务状态为open
首先删除需要撤销的任务实例及其与此任务实例相关的所有工作流实例. 其次修改当前任务实例的状态,即将张三的已经办理完毕的节点2对应的TaskInstance的状态更改为待办状态.
但此时,删除任务老出异常,本人对此种操作的方法不甚明了.
a 、
commandService.execute(new DeleteTaskCmd(taskId, true));
b、
task.setState(task.STATE_OPEN);
taskService.saveTask(task);
方式2:采用动态路由机制(动态加转移--Transition)
此种方法当我是创建转移,然后完成节点3任务,转到节点2.
source.createOutgoingTransition();
... ...
ts.completeTask(t.getId(),outcome);--此处调用完成了,但未触发目标节点的任务数据生成
没用过就是麻烦,调试N次,终于按方式2实现功能;(百度里发一下,竟然也没人回)
*******取执行实例executionImpl时,应该需要先open"环境" **,不然没办法以此再来获取当前的活动。如果在执行过程中,调用自己
的方法(比如自己写sql查询任务),有可能会影响事务的提交。所以我尽量采用他们自己的service。利用此方法2去撤回到原节点后,可以针对
此任务赋权限(将之前的操作人赋给它)。
总觉得方式1的实现才是正统的,应该api帮助我们去处理相关的细节。而且用方法2的话,当遇到会签时,撤回逻辑还要进一步的完善,相当
的麻烦。如果方法1能够实现,估计会比较通用。
在实现流程的强制完成功能时,我还是用的动态路由的原理,创建当前节点到结束结点的转移(活动节点可以通过流程定义去find出来)。
java邮件撤回
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:linx NFS实验
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
git撤回本地commit,切换分支再提交
git回退commit
git 暂存区 工作区 -
AI如何识别并过滤垃圾邮件和钓鱼邮件
AI如何识别并过滤垃圾邮件和钓鱼邮件
垃圾邮件 数据 深度学习 -
outlook邮件撤回方法
必须双击打开该邮件
Kafka系列 zabbix系列