wwwlike 发表于 2013-1-29 22:38:57

JBPM 任务

任务:流程中的任务是流程与操作者的交互的一种手段 是JBPM的核心 在jbpm中任务主要定义在Task Node节点上。
任务保存在jbpm_taskinstrance
 
一个任务对应一个任务实例
 
任务实例的生命周期:创建(create)-开始处理(start)-完成(end)  这3步骤是一般情况下的,实际开发中 还有
取消(cancel) 挂起(suspend) 
 
 
在任务实例结束的时候 也可以像流程发出向下流转的型号(signal) 如果一个Task node里面只定义了一个task 那么这个任务实例借宿的时候就会想流程实例发出向下流转信号。
 
 
任务分配
任务可以分配给一个或多个参与者
在Assignment 分配参与者 有以下几种分配方式
1:Handler 方式  实现AssignmentHandler 接口的任务分配类
package assignment;import org.jbpm.graph.exe.ExecutionContext;import org.jbpm.taskmgmt.def.AssignmentHandler;import org.jbpm.taskmgmt.exe.Assignable;/** * 对TaskNode节点进行任务分配 * @author wwwlike*/public class TestAssignment implements AssignmentHandler {public void assign(Assignable assignable, ExecutionContext executionContext)throws Exception {assignable.setActorId("zhongjian");}}因为TaskInstrance 实现了Assignable  对象 所以assignable 也相当于是TaskInstrance的实例
 
2 Expression 方式
以后补充
3 swimlance 方式
就是为多个任务分配相同的执行者  在配置文件下 定义 <swimlane name="name"></swimlane>
 
4Pool Actors方式
这个可以是静态的在XMl标签上 定义任务的参与者,也可以用JPDL表达式动态的从上下文中取得任务的参与者
<task-node name="" ><task ><assignment pooled-actors=""></assignment></task></task-node> 
任务事件
一般有四种事件 :task-create.task-assign(进行任务实例和参与者分配的事件),task-start,task-end 配置文件如下:
<?xml version="1.0" encoding="UTF-8"?><process-definitionxmlns="urn:jbpm.org:jpdl-3.2"name="taskeventtest"><start-state name="start-state1"><transition to="task-node1"></transition></start-state><task-node name="task-node1"><task name="test event task"><assignment actor-id="zhongjian"></assignment><controller></controller></task><event type="task-create"><script>print("触发了task-create事件");</script></event><event type="task-start"><script>print("触发了task-start事件");</script></event><event type="task-assign"><script>print("触发了task-assign事件");</script></event><event type="task-end"><script>print("触发了task-end事件");</script></event><transition to="end-state1"></transition></task-node><end-state name="end-state1"></end-state></process-definition> 
任务控制器
简单的介绍 任务控制器就是对流程上下文中的变量进行读写操作
<task-node name="task-node1"><task name="test notify task" notify="true"><controller><varible access="" name="" mapped-name=""></variable></controller></task><transition to="end-state1"></transition></task-node> access  :指出读写属性: read.write,required
(read表示任务实例化完毕后 从上下文中去读name
write 表示任务完成后 写入name的新值回到流程上下文中
required 和write 配对 如没有回写 者抛出异常)
name:指的是变量名称 相当于key 从map 为key的中间读取,写入值value
 mapped-name 非必填属性(当定义了这个值后 进行写入的key 不是name 而是mapeed-name这个)
页: [1]
查看完整版本: JBPM 任务