`
小开ye
  • 浏览: 118073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jbpm4实现会签

阅读更多
说实话,之前对会签是没有具体概念的,查过jbpm3实现会签的例子,没有太大的体会。
这次有个系统一定要用到会签,用大家的话说,工作流要支持串行和并行;所以准备写一个demo实现一下简单的会签例子。

思路是这样的,流程有两个节点:申请和会签。在会签节点任务创建后,通过程序按会签人数创建出对应的会签子任务,对应到具体的审批人上。

这里有3种情况退回流程:1) 会签中某一个人不同意,就马上退回节点到申请;2) 全部会签结束后,如果有不同意的,则退回节点到申请;3) 全部会签结束后,超过半数不同意的,退回节点到申请。

关键点在于什么时候去创建子任务。
1)我试用了<on event="start">,这个时候task还没有创建出来。
2)使用了<assignment-handler>,可能成功,有两种不同的结果:
  2.1) 如果jbpm的所有事务,都是有spring来管理,即jbpm.cfg.xml中是<spring-transaction-interceptor current="true" /><hibernate-session current="true" />这样的设置话,在AssignmentHandler的assign中,是可以创建出subtask的。这里注意不要申明式调用saveTask,让hibernate判读是否去保存。
2.2) 如果jbpm自己管理事务,即去掉current="true"属性,那么就无法保存创建出的subtask,因为在保存的时候,要用到parent task的historytask,而historytask这个时候还没有创建。
当然,针对2.2,我在想,是否可以使用另一个线程来处理创建subtask。类似于会签task全部创建结束后,再触发监听,去创建subtask。所以继续尝试下面的实现方法。
3) 使用<on event="timeout">好像也不行,至少我使用job后,调试遇到了一点问题。

突然回过头来一想,我想这么多方法,无非就是想要实现在恰当的时候去createtask,那么我在“申请”提交后,得到“会签”task,这个时候去create sub task,不就可以了?
不接管jbpm的事务,我还是搞不定。
接下来只能通过接管事务再来试试了。

接管事务,在AssignmentHandler的assign中实现subtask,测试通过。

demo暂时不上传了,如果确实有需要的,再说了。
分享到:
评论
11 楼 田文杰 2015-06-29  
能不能给你那个demo给我看看,我想看看代码集体怎么实现,邮箱:873345230@qq.com
10 楼 小开ye 2009-08-05  
当然想办法避免最后两个人同时触发了。哈。
9 楼 小开ye 2009-08-05  
很简单呀,每次子任务完成的时候,去看一下兄弟是不是都完成了。

当然,如果会签要求某一个人不同意的话就退回流程,这个就更好处理了。
8 楼 hwlchina 2009-08-05  
小开ye 写道
hwlchina 写道
没有什么好的方法。如果是硬要实现的方法到是有。但是问题是如何好的包装起来,可以在不同的流程之间复用或是改变不大。
现在的最大问题是创建的子任务里怎么能触发事件,值可以从父类中copy过来,但是Event怎么处理呢?


可能还没用到你说的那么深入,我的设计中,子任务只是去完成一个审批的动作,把审批意见放到var中,记录审批的时间即可。

那最后的子任务信息怎么汇总并让流程流转下去?
7 楼 小开ye 2009-08-05  
hwlchina 写道
没有什么好的方法。如果是硬要实现的方法到是有。但是问题是如何好的包装起来,可以在不同的流程之间复用或是改变不大。
现在的最大问题是创建的子任务里怎么能触发事件,值可以从父类中copy过来,但是Event怎么处理呢?


可能还没用到你说的那么深入,我的设计中,子任务只是去完成一个审批的动作,把审批意见放到var中,记录审批的时间即可。
6 楼 hwlchina 2009-08-05  
没有什么好的方法。如果是硬要实现的方法到是有。但是问题是如何好的包装起来,可以在不同的流程之间复用或是改变不大。
现在的最大问题是创建的子任务里怎么能触发事件,值可以从父类中copy过来,但是Event怎么处理呢?
5 楼 小开ye 2009-08-05  
hwlchina 写道
我用过你提到的方法,但是在创建出来的子任务,没有父任务的信息并且当父任务处理完毕后,子任务就全部结束了。这样的做法对流程历史查询带来了问题


子任务没完成的情况下,肯定不能让父任务提交掉呀,除非有要求的。
至于任务信息,在创建的时候copy一下了。

不知道你是否有更好的方法实现了会签?谢谢。
4 楼 hwlchina 2009-08-05  
我用过你提到的方法,但是在创建出来的子任务,没有父任务的信息并且当父任务处理完毕后,子任务就全部结束了。这样的做法对流程历史查询带来了问题
3 楼 小开ye 2009-08-05  
经过一个晚上的思考,还是想只用jbpm的事务管理来实现,刚才尝试了一个小时,还是没搞定。原因如文中提到的,一些逻辑关系还是没理顺。

我这个实现的方法,可能还是有取巧的性质了。
2 楼 小开ye 2009-08-05  
hwlchina 写道
能不能给我个demo,我想知道具体的代码实现。谢谢


其实思路很清楚了,task元素指定一个AssignmentHandler,在assign方法中,获取到当前的taskImpl,调用taskImpl.createSubTask方法就可以了。

demo中包含了太多的其他信息,不方便,等我清理一下再放来吧。
1 楼 hwlchina 2009-08-05  
能不能给我个demo,我想知道具体的代码实现。谢谢

相关推荐

    JBPM4.4会签实例

    内含jbpm4.4的会签实例,使用customactivity实现,并且内含有使用的丰富工具类,有兴趣的朋友下载学习~

    jbpm4.3 会签的实现

    会签源文件 博文链接:https://yy666.iteye.com/blog/660701

    jBPM4.4 会签,用custom实现(带加签、减签功能)

    jBPM4.4 会签(带加签、减签功能),通过查找资料,个人摸索,利用custom节点实现了会签功能,加签、减签功能是我自己摸索出来的,是不是能满足大家的需求,仅供参考。

    jbpm-3_2_2-Api

    jbpm-3_2_2-Api jbpm 著名工作流引擎

    jBPM4.4 会签(带加签、减签功能)

    jBPM4.4 会签(带加签、减签功能),通过查找资料,个人摸索,利用task节点实现了会签功能,加签、减签功能是我自己摸索出来的,是不是能满足大家的需求,仅供参考。

    jbpm工作流(会签,串签)

    jbpm的流程部署 流程开始 任务提交 查询已办,待办

    JBPM4工作流应用开始指南.rar

    BPM4工作流应用开发指南 《jBPM4工作流应用开发指南》是2010...306 第20章 中国特色工作流的jBPM实现 307 20.1 退回 308 20.2 取回 313 20.3 会签 318 20.4 委派 326 20.5 自由流 331 20.6 小结 332 附录A jBPM术语 334

    jbpm4.4学习笔记

    4 准备环境 10 4.1jbpm4.4软件环境 10 4.2相关资源下载 10 4.3安装流程设计器(MyEclipse插件) 11 4.4在MyEclipse中添加jpdl4.4 xsd文件 11 4.5准备jbpm4.4开发环境 13 4.5.1添加jbpm4.4的jar包 13 4.5.2添加并制定...

    基于JBPM 的特殊工作流研究与实现

    在开源工作流JBPM 的基础上,利用其特有的事件处理机制,提出了实现任务 回退,任务催办和会签任务等特殊工作流的方法,提高了开发效率并具有良好的灵活性,满 足了实际项目开发的需要。

    深入浅出jBPM完整版part1

    4 章 任务.....................................................112 4.1 任务实例.................................................113 4.2 任务分配.................................................114 ...

    工作流开发会签两套方案(Java源代码实现)

    工作流开发会签两套方案(Java源代码实现)

    深入浅出jBPM完整版part2

    4 章 任务.....................................................112 4.1 任务实例.................................................113 4.2 任务分配.................................................114 ...

    基于jbpm与activiti的工作流平台技术架构介绍

    BPMX3提供了基于BPMN2标准的流程管理,包括流程版本变量,流程节点表单设置,表单的权限设置,流程任务通知,催办,代办,转化,并行会签、串行会签、补签,子流程,同步任务,多实例任务,人工任务、消息任务、邮件...

    工作流系统源码,5人Team1年的心血结晶

    流程支持会签、并签、自由指派、自由回退、取回、代理等,并在每个审批节点都可以植入Java代码,实现任何业务需求,提供多种报表实时监控。 技术实现非常适合与研究GWT的人,有GWT的自定义控件、GWT与Spring集成、...

Global site tag (gtag.js) - Google Analytics