jBPM如何实现发起人撤回要求,或者是修改提交的内容
gglu
2011-12-12
修改或取消(任务),以下用任务A简称。
当申请人取消时,这个应该好办点。可以用任务A的execution获取去parent(Exectuion),end掉; 当申请人修改时,先获取parent(Execution),结束掉未审批的任务,任何end掉出本身execution的其余execution;最后设置parent(execution状态:active-root). 然后构建一个虚拟的transition(destination指向fork); 让parent take这个transition。这样应该就好了。 |
|
luoyu-ds
2011-12-12
本身JBPM在设计时就没有考虑到具有中国特色的工作流,所以对于回退这种中国特色的工作流节点,JBPM本身并没有公布API来处理,但是我们可以在需要回退的节点NEW一个task指向要回退的目的地,或者在设计流程图时可以显示的给具有回退功能的节点指定一个外向转移,然后在完成任务时指定外向转移为回退目的地即可,同时做好业务数据的回滚。
但是问题在于如果流程已经流转到很多级以后,那么设计人员得考虑如果回退的话,大量的业务数据回滚将是一件很麻烦的事,这时就得考虑是否值得再做回退。。。 个人意见,仅供参考。。 |
|
alexandrae2008
2011-12-13
zybing 写道 alexandrae2008 写道 另外一个想法就是你可以给组长、经理一个reject权限,他们选择这个,
系统会把流程再跑回creator身上 如此你就可以rework了。 如此流程不会重启。 现在是这样: 如果组长同意了,这样组长这个工作环节已经结束了,到join了 经理这一步还没完成, 此时的工作task是: 1. 重填 2. 经理批准 经理还没批准,所以jion这个环节还没进入到工作流程中; 如果此时重填,需要把组长已经提交的任务回退回来,给组长再次一个任务: 做法有2种: 1. 把组长已经结束的任务回退回来: 现在就是在研究这个,不知道怎么处理; 2. 采用大任务下,再重新给组长开启一个SubTask:这个应该是好处理的; 我觉得还是从流程图上改比较好, 给后面的经理和PM一个return或rework的选项。 比如经理选:rework, 流程会跑到一个与creator一样的节点,这个节点的owner就是creator, 我们命名为rework节点吧(这个节点包括你给的图里面的第一、第二2个),在执行这一步的同时程序验证组长是否已经签过,如果未签就把组长的当前task 取消掉, 经理的也类似。 签过了则直接继续。 creator rework完成后提交, 同第一次创建一样, to 审批流程。 如此可以支持你随便多少次的rework。 |
|
alexandrae2008
2011-12-13
JBPM只粗略看了下,对PTC的Windchill还算熟悉。 我给的建议是Windchill上面可实现的方式
|
|
comsci
2011-12-14
可以参考下我在JWFD流程引擎设计中的关于节点单步回退的设计思路
http://comsci.iteye.com/blog/800371 |
|
jh890308
2011-12-14
应用Activiti5可以实现,并行两个分支使组长与经理会签。开始流程的员工可以有权限取消删除流程。当员工想在流程结束前修改休假日期或其他信息,可以在后台用Java实现流程结束同时重新开启另一流程并把修改的时间或其他信息作为流程变量传入新开启的流程。。。
|
|
www88485400
2011-12-19
可以在一个TaskNode里面添加3个Task ,条件是 审核的两个节点都通过就向下走。否则,如果是修改的话,结束其他任务,再回到自身即可。
|
|
java_user
2011-12-20
使用虚拟的transation可以直接指向起始节点,但如果当前在fork中就不行了,可以创建一个虚拟的join,先将所有分支用虚拟join关闭,再使用虚拟的transation回到起始节点。大概思路就是这样,感觉比较麻烦。
|
|
ixujieyun
2012-01-04
可以采用节点回撤的方法将申请人的节点退回去。
|
|
zybing
2012-01-19
最终采用的方式:
最终采用的方式是定义一个Task,在这个Task创建的时候,定义了3个SubTask, 3个SubTask针对组员(请假的人),组长和经理; 这一个节点根据不同的用户身份权限完成不同的工作: 组员:可以修改单据以及撤销: 一旦撤销,该Task结束(类似一票否决) 如果修改了单据,如果组长和经理的SubTask已经完成,需要重新开起来; 组长和经理: 如果否决,就一票否决,否决请假; 如果同意,看同意的票数是否达到阀值(就是2),如果达到阀值,这个Task结束进行跳转,这样组员也不可以再修改或者撤销请假单了; --------- 其实最干净的就是层层审批,但是各家领导有各家的想法,能实现就Ok了,其他不去多想了 |