`
小开ye
  • 浏览: 121599 次
  • 性别: 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.3 会签的实现

    本文将深入探讨jbpm4.3如何实现会签功能,并分享相关的源码和工具使用。 1. jbpm4.3概述: jbpm4.3是jbpm的一个较旧版本,但仍然包含许多工作流管理的核心特性,如流程定义、任务分配、事件处理等。它基于Java平台...

    JBPM4.3 Spring会签 实例

    解压并运行这个示例,可以更深入地理解JBPM4.3和Spring如何协同工作以实现会签功能。 总之,这个JBPM4.3与Spring的会签实例展示了如何在企业级应用中有效地管理和控制业务流程。通过学习和实践这样的实例,开发者...

    JBPM4.4会签实例

    在JBPM4.4中,实现会签功能通常需要以下几个步骤: 1. **设计流程模型**:使用BPMN(Business Process Modeling Notation)语言或JBPM提供的图形化工具(如jBPM Designer)设计流程模型,定义会签节点。在这个节点...

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

    在实现会签时,我们可以创建一个custom节点,然后在其中编写Java代码或者使用脚本来处理会签逻辑,包括分配任务给审批人、处理审批结果以及根据需要进行加签或减签操作。 加签功能是在流程运行过程中,根据业务需求...

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

    本文将深入探讨如何在jbPM中实现会签以及加签、减签功能,并提供相关实践指导。 1. **会签概念与实现** 会签是指在流程中设置一个环节,需要多个参与者依次或同时进行审批。jbPM通过定义工作流模型,利用task节点...

    jbpm-3_2_2-Api

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

    jbpm工作流(会签,串签)

    在本教程中,我们将深入探讨jbpm中的会签和串签功能,以及如何进行流程部署、启动流程、任务提交、查询已办和待办任务。 首先,让我们了解流程部署的概念。在jbpm中,流程部署是将一个流程定义文件(通常是.bpmn或....

    jbpm4.4 会签 测试( fork & join)

    在jbpm中,"fork & join"机制是实现并行处理和流程控制的关键概念,尤其在处理会签(多个审批人同时参与审批)等场景时显得尤为重要。 "fork"在jbpm中指的是流程分支,当流程到达一个fork节点时,流程会分裂为多个...

    jbpm4案例源码

    开发者可以通过查看和运行这些源代码,学习如何创建用户交互界面、与jbpm4服务交互以及如何实现流程的生命周期管理。 jbpm4还支持扩展和定制,例如,你可以通过编写自定义的工作流监听器、任务监听器和事件处理器来...

    jbpm会签.zip

    在jbpm中实现会签,主要涉及到以下几个关键知识点: 1. **工作流模型**:jbpm使用BPMN(Business Process Model and Notation)标准来定义流程模型。BPMN提供了一套图形化的符号,用于描绘业务流程,其中包括并行...

    jBPM4入门基础环境配置

    此外,jBPM4还支持与规则引擎(如Drools)的无缝集成,实现了业务规则与流程的统一管理。 ### 2. 安装与环境配置 要开始使用jBPM4,首先需要安装以下基础环境: - **Java Development Kit (JDK)**:确保你的系统上...

    huiqian.rar_jbpm4

    1. **流程定义**:代码可能会定义一个流程实例,其中包含并行网关来实现会签。并行网关将任务分支到不同的参与者,每个参与者完成自己的签署后,所有分支必须汇合,流程才能继续。 2. **任务监听器**:为了跟踪各个...

    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

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

    本主题聚焦于"工作流开发会签两套方案(Java源代码实现)",我们将深入探讨两种Java实现会签功能的方法,并结合JBPM(Java Business Process Management)框架,为你揭示如何高效地构建这样的系统。 首先,我们需要...

    jbpm4.4流程图

    3. **网关**:用于控制流程的分支和合并,如并行网关实现任务并行执行,决策网关根据条件决定流程走向。 4. **连接线**:指示流程的流转路径,可能带有条件表达式,决定何时从一个活动转移到另一个。 5. **结束事件*...

    jbpm4.4 简单请假流程

    4. **jbpm4.4工具**: - **jbpm Designer**:图形化流程设计器,用于创建和编辑流程定义。 - **jbpm Console**:Web管理界面,用于监控流程实例、任务管理和日志查看。 - **jbpm Workbench**:集成了Designer和...

Global site tag (gtag.js) - Google Analytics