Jbpm流程如何实现“会签”的问题

转载 2007年09月18日 19:33:00

昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签”的问题,最后得出了两种方案。今天就这两种思想中的一种:通过Aciton动态创建TaskInstance来实现“会签”,自己实现了一把,成功了!

1. 创建processDefinition.xml流程定义文件,如下:

代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="webPay">  
  3.     <swimlane name="PooledActors">  
  4.         <assignment class="com.sky.plugin.jbpm.ActorHandel"></assignment>  
  5.     </swimlane>  
  6.     <start-state name="网上支付审批流程">  
  7.         <transition name="开始" to="财务人员录入"></transition>  
  8.     </start-state>  
  9.     <task-node name="财务人员录入">  
  10.         <task name="财务人员录入申报数据" swimlane="PooledActors"></task>  
  11.         <transition name="主管会计复核" to="主管会计复核"></transition>  
  12.     </task-node>  
  13.     <task-node name="主管会计复核" signal="last-wait" create-tasks="false">  
  14.         <task name="主管会计复核" swimlane="PooledActors"></task>  
  15.         <event type="node-enter">  
  16.             <action name="createInstance"  
  17.         class="com.sky.plugin.jbpm.CreateTaskInstance">  
  18.             </action>  
  19.         </event>  
  20.         <transition name="复核通过" to="领导审批"></transition>  
  21.         <transition name="复核不通过" to="异常结束"></transition>  
  22.     </task-node>  
  23.     <task-node name="领导审批">  
  24.         <task name="领导审批" swimlane="PooledActors"></task>  
  25.         <transition name="同意" to="结束"></transition>  
  26.         <transition name="不同意" to="异常结束"></transition>  
  27.     </task-node>  
  28.     <end-state name="结束"></end-state>  
  29.     <end-state name="异常结束"></end-state>  
  30. </process-definition>  

task-node"主管会计复核"则是我们需要进行会签的节点。在这个节点我们设置了几个重要的属性:

1) signal="last-wait",这个属性决定了该节点将在完成该节点内的所有Task的TaskInstance以后才会进入下一个节点。)


2) create-tasks="false",这个属性决定了在进入该节点的时候,不会自动为该节点的任何Task创建任何的TaskInstance。因为我们需要根据会签的人员来自己创建TaskInstance。


3) action,action的设定是为了,在Action中根据实际的情况来创建TaskInstance

2. 编写Action代码

代码
  1. import org.jbpm.graph.def.ActionHandler;   
  2. import org.jbpm.graph.exe.ExecutionContext;   
  3. import org.jbpm.graph.exe.Token;   
  4. import org.jbpm.graph.node.TaskNode;   
  5. import org.jbpm.taskmgmt.def.Task;   
  6. import org.jbpm.taskmgmt.exe.TaskMgmtInstance;   
  7.   
  8. public class CreateTaskInstance implements ActionHandler {   
  9.   
  10.     private static final long serialVersionUID = 1L;   
  11.   
  12.     public void execute(ExecutionContext executionContext) throws Exception {   
  13.         Token token = executionContext.getToken();   
  14.         TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   
  15.   
  16.         TaskNode taskNode = (TaskNode) executionContext.getNode();   
  17.         Task task= taskNode.getTask("主管会计复核");   
  18.         tmi.createTaskInstance(task, token)   
  19.                       .setPooledActors(new String[]{"1000"});   
  20.         tmi.createTaskInstance(task, token)   
  21.                       .setPooledActors(new String[]{"1001"});   
  22.   
  23.     }   
  24.   
  25. }   

当然,在实际情况中.setPooledActors(new String[]{"100"})中设置的actor应该是动态指定的,这里为了简单方便就直接写入的固定值。

3.部署运行,OK!

注意:如果在给TaskInstance指定Actor的时候是使用.setActor()方法的话,那么在获取用户任务列表的时候用.findTaskInstances();如果是用.setPooledActors(),则需要使用.findPolledTaskInstance()方法。[list][/list]

【代码篇】JBPM4.4开发流程节点(动态代理实现流程管理业务)

继之前的博客,【思想篇】工作流技术JBPM4.4开发入门(四),【思想篇】工作流技术JBPM4.4开发入门(五)本篇博客来结合代码简单说说,如何让流程来管理业务:   先来看看我们抽出来的代理类:  ...
  • hejingyuan6
  • hejingyuan6
  • 2015年01月16日 08:37
  • 3868

JBPM4.4节点详解(常用)

启动节点start 每个流程里面至少有一个开始节点(到目前为止一个流程只能有一个开始节点),开始节点必须有一个向外的流向,这个流向会在流程启动时执行。 状态节点state State是一个等...
  • qianmodanshang
  • qianmodanshang
  • 2016年07月05日 14:41
  • 2554

JBPM学习(一):实现一个简单的工作流例子全过程

test.png
  • v123411739
  • v123411739
  • 2014年05月02日 17:32
  • 42817

JBPM流程通过Aciton动态创建TaskInstance来实现“会签”

JBPM流程通过Aciton动态创建TaskInstance来实现“会签”      昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签...
  • gaoqiao1988
  • gaoqiao1988
  • 2014年03月05日 13:43
  • 777

《JBPM流程通过Aciton动态创建TaskInstance来实现“会签”》2

前面写过一篇文章《JBPM流程通过Aciton动态创建TaskInstance来实现“会签”》,不过那篇文章可以说是一个大体思路的简单实现,并不完整,也有不少朋友提出了不少的问题。因为做事要善始善终,...
  • wangxiaojing123
  • wangxiaojing123
  • 2011年12月14日 10:19
  • 663

jbpm3.2 Aciton动态创建TaskInstance来实现“会签”

昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签”的问题,最后得出了两种方案。今天就这两种思想中的一种:通过Aciton动态创建TaskInstance来实现“会签”,自...
  • ynztpwl
  • ynztpwl
  • 2012年07月06日 11:33
  • 1897

Jbpm4中的会签设计及实现

博客分类: JBPM JBPMBBSFlash脚本     会签任务是工作流里一个比较觉见的任务方式,意思是一个处理任务需要多个人同时处理,然后汇总多个人的意见,决定流程下一步该如何执行...
  • nyuxia
  • nyuxia
  • 2013年04月16日 08:42
  • 893

JBPM4.4 实现并发(fork -join)和事件监听(event-Listenner) 实现会签功能

想验证一下 JBPM 中的并发和事件监听,于是想了一个实现员工申请购买物品的会签功能。需要员工所在部门manager,HR_manager,Planning_manager,Purchasing_ma...
  • veverrr
  • veverrr
  • 2011年01月19日 14:54
  • 4442

WF是什么系列之 [ 使用WF 实现会签业务流程 ]

我在 WF是什么系列之[基于WF与WCF构建数据逻辑层] 一文提到WF并不是面向企业业务流程应用的产品,   可是我为什么又用WF开发企业业务流程应用呢,这是因为WF的特点是处现流程,企业...
  • heshengfen123
  • heshengfen123
  • 2013年10月14日 00:11
  • 1086

jbpm4 回退、会签、撤销、自由流

http://blog.csdn.net/xiaozhang0731/article/details/8699558
  • bluejoe2000
  • bluejoe2000
  • 2014年09月15日 21:51
  • 3374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jbpm流程如何实现“会签”的问题
举报原因:
原因补充:

(最多只允许输入30个字)