jbpm的任务管理实现

原创 2006年05月18日 10:44:00
一个Task instance(任务实例)可以被分配给一个actorId (java.lang.String)。所有的Task instance都被保存在数据库中的表jbpm_taskinstance里。当你想得到特定用户的任务清单时,你就可以通过一个与用户关联的actorId来查询这张表。

一个流程定义有一个TaskMgmtDefinition;一个TaskMgmtDefinition对应多个swimlane,同时对应多个task;一个swimlane有多个task,可以从TaskMgmtDefinition中通过task的名称直接获取相应的task;

swimlane对象有四个属性,分别是name(名字)、assignmentDelegation(分配代理类)、taskMgmtDefinition、tasks(Set 对应多个task),可以增加task

task对象主要的属性:taskMgmtDefinition、swimlane、assignmentDelegation、taskNode,需要注意的是swimlane和assignmentDelegation中间只是可以一个属性有值,因为它们都和任务的分配有关系。

一个流程实例有一个TaskMgmtInstance;一个TaskMgmtInstance对应多个swimlaneInstance,同时对应多个taskInstance;一个swimlaneInstance有多个taskInstance,可以从TaskMgmtInstance中直接获取相应的taskInstance;

swimlaneInstance对象主要有五个属性,分别是name、actorId、pooledActors(Set)、swimlane、taskMgmtInstance。
taskInstance对象的主要属性:name、actorId、task、swimlaneInstance、taskMgmtInstance、pooledActors。

当对任务进行分配时,一般需要实现AssignmentHandler这个接口,这个接口的方法只有一个:
void assign( Assignable assignable, ExecutionContext executionContext ) throws Exception;
一个典型的实现(把名字是'change nappy'的任务交给NappyAssignmentHandler这个类来分配)



NappyAssignmentHandler类:
public void assign(Assignable assignable, ExecutionContext executionContext) {
assignable.setActorId("papa");
}
同样,Assignable只是一个接口,它有两个方法:setActorId()和setPooledActors(),Assignable的具体实现类也是两个
swimlaneInstancehe和taskInstance。这样就不不难理解整个任务分配流程了:
1、流程进入TaskNode节点,执行TaskNode类的execute()方法,该方法首先获得TaskMgmtInstance实例,然后通过它来创建TaskInstance。taskMgmtInstance.createTaskInstance(task, executionContext);
2、在上面的createTaskInstance(task, executionContext)里,该方法调用了taskInstance.assign(executionContext)对taskInstance进行分配。
3、在assign(executionContext)方法里,首先会判断task属性里是否存在swimlane,如果有的话,这个taskInstance就会分配给swimlane指定的ActorId或 PooledActors;如果不存在,再去找task属性里 assignmentDelegation(分配代理类)通过代理类(即我们自己写的实现AssignmentHandler这个接口的类)指定ActorId或 PooledActors。

jbpm的任务管理实现

一个流程定义有一个TaskMgmtDefinition;一个TaskMgmtDefinition对应多个Actor,同时对应多个Task;一个Actor有多个Task,可以从TaskMgmtDef...
  • techcrunch
  • techcrunch
  • 2008年04月09日 01:28
  • 188

jbpm的任务管理实现

一个Task instance(任务实例)可以被分配给一个actorId (java.lang.String)。所有的Task instance都被...
  • hxmcGu
  • hxmcGu
  • 2007年04月19日 09:06
  • 813

jbpm的任务管理实现

一个Task instance(任务实例)可以被分配给一个actorId (java.lang.String)。所有的Task instance都被保存在数据库中的表jbpm_taskinstance...
  • dust_bug
  • dust_bug
  • 2006年10月27日 16:26
  • 1894

jbpm 任务管理

一个流程定义有一个TaskMgmtDefinition;一个TaskMgmtDefinition对应多个Actor,同时对应多个Task;一个Actor有多个Task,可以从TaskMgmtDefin...
  • yun15291li
  • yun15291li
  • 2005年06月13日 01:55
  • 1092

jbpm任务管理

1 分配任务流程定义时,分配任务有多种方法:1. 直接分配给成员:assignee="user1" 可以同时分配多人:candidate-users("user1","user2","user3")2...
  • bingmeng
  • bingmeng
  • 2010年06月18日 10:37
  • 594

工作流--JBPM任务管理

之前已经介绍了JBPM的部署对象,以及部署后对流程的一些管理。现在就开始介绍任务的执行以及流转问题   一、启动流程实例         通过调用流程执行接口来获取启动流程的方法,核心代码如下: ...
  • u013036278
  • u013036278
  • 2016年12月18日 21:53
  • 548

JBPM4基础篇07-监听事件EventListener

 在JBPM中配置监听,可以拦截某个任务节点的开始或者结束。 event.jpdl.xml在设计器中的示意图: 再来看看Source代码: [html] view ...
  • whb123andy
  • whb123andy
  • 2014年05月11日 21:11
  • 1005

JBPM工作流demo--websale的开发 (1)

   本文是通过JBPM自带的websale这个demo来向大家演示jbpm工作流的开发过程.第一部分:开发前的准备工作:  1.下载JBPM开发包:这里需要两个jar包,到jboss的官方网站上去下...
  • mylifecool
  • mylifecool
  • 2006年08月16日 17:05
  • 2434

JBPM图形化流程监控

已经可以比较好的运行JBPM了,但是如果能以图形化的方式显示工作流,并且把当前节点高亮显示,这样可用性就更好了,用户可以很轻松的看到当前流程到哪个节点了。       我发现JBPM的starters...
  • lansky07
  • lansky07
  • 2008年04月16日 19:26
  • 1515

jbpm4.3自由流程(动态路由)的实现

      jbpm是老外开发的,更是和国外的工作流需求,但是要想真正适用于咱中国,可能需要我们自己去探索一些东西,比如任意回退、会签(包括加、减签,补签)、撤销(又叫回退)、自由流(又叫动态路由)。...
  • haoren_e
  • haoren_e
  • 2010年07月02日 09:32
  • 4553
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jbpm的任务管理实现
举报原因:
原因补充:

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