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。

相关文章推荐

用信号量实现实时多任务管理(三)

附上简单的源码1,头文件/******************************************************************* 文件名 : HttpRT_pro...

java定时任务管理实现-quartz

java定时任务管理实现 博客分类:  Java 定时任务管理  Java代码   代码清单:    =========================...

android任务管理实现方案+关键代码

4.4.1 获取正在运行的程序:     ActivityManager对象向系统取得ACTIVITY_SERVICE: am = (ActivityManager) getSystemS...

asp.net 计划任务管理程序实现,多线程

b/s模式下用程序实现计划任务,一直是个不太好解决和管理的问题,当然可以采用ajax 计时器的方法模拟form端的timer事件。 asp.net下实现可以将计划任务的方法放在global里,使用一...

Spring整合quartz配置【一】基于MethodInvokingJobDetailFactoryBean实现任务管理

# #[一] quartz Jar包 quartz-all-1.8.6.jar 在官网可以下载,不知道的请百度下下。 # #[二] Spring配置文件 [htm...
  • liuzx32
  • liuzx32
  • 2015年04月08日 14:17
  • 447

Spring中整合Quartz插件【一】基于MethodInvokingJobDetailFactoryBean实现任务管理

1.引入除spring.jar外的Quartz的jar包quartz-all-1.8.6.jar 2.任务类 QuartzJob ? 1 2 3 4 5 6 7 8 ...
  • liuzx32
  • liuzx32
  • 2015年04月08日 14:21
  • 472

jQueryUI+jqGrid实现后台管理系统,包括权限管理,用户管理,任务管理

jQueryUI+jqGrid实现后台管理系统,包括权限管理,用户管理,任务管理 源代码下载地址:http://www.zuidaima.com/share/1896998441667584.htm...

QC项目任务管理

  • 2017年02月27日 15:42
  • 34.89MB
  • 下载

Android抽象任务管理框架QTaskManager及其使用方式介绍

QTaskManager是一个对抽象任务进行调度、分配及管理的简化管理框架,支持并行执行任务、顺序执行任务、按时执行任务、串行执行任务等基本任务操作。本文是对框架使用方式的介绍。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jbpm的任务管理实现
举报原因:
原因补充:

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