读书人

JBPM4学习小结之8Task之任务泳道和

发布时间: 2012-10-28 09:54:44 作者: rapoo

JBPM4学习总结之8——Task之任务泳道和Task任务变量

这里的泳道类似于UML中的泳道的概念,类似于组(Group)的概念,当一个业务流程需要很多种角色来共同、分时才能走完时,就需要泳道的概念引入其中。这种操作和分组操作十分相似。

流程图如下:
JBPM4学习小结之8——Task之任务泳道和Task任务变量

?

?

?

?

?

?

?

?

Xml流程图如下:

<?xml version="1.0" encoding="UTF-8"?><process name="TaskSwimlane" xmlns="http://jbpm.org/4.4/jpdl"><swimlane name="myswimlane" candidate-groups="tibco"></swimlane><start name="start1" g="57,44,48,48"><transition name="to task1" to="task1" g="242,67:-52,-22" /></start><task name="task1" g="197,172,92,52" swimlane="myswimlane"><transition name="to state1" to="state1" g="242,339:-56,-22" /></task><state name="state1" g="52,311,92,52" /></process>

?

?

?

测试代码如下,和Group测试代码类似

/** * 使用身份验证接口建立不同的用户、组、组成员 */public void test02CreateGroup() {identityService.createGroup("tibco");identityService.createUser("liuyan", "liuyan", "素还真");identityService.createMembership("liuyan", "tibco");}/** * 发起流程 */public void test03StartTask() {// 开始process流程ProcessInstance processInstance = executionService.startProcessInstanceByKey("TaskSwimlane");// 流程实例的IDString pid = processInstance.getId();System.out.println(pid);// TaskSwimlane.20001}/** * 获得指定人的任务列表 */public void test04GetAssigneeGroupTask() {List<Task> taskList1 = taskService.findPersonalTasks("liuyan");for (Task task : taskList1) {System.out.println(task.getAssignee());}List<Task> taskList2 = taskService.findGroupTasks("liuyan");for (Task task : taskList2) {System.out.println(task.getId());//20002}}/** * 争抢获取任务 */public void test05ExeTask(){taskService.takeTask("20002", "liuyan");}/** * 完成任务 */public void test06(){taskService.completeTask("20002");}

?

?这样将liuyan给了tibco组,凡是tibco组的会员都可以争抢、处理这个task。

?

任务变量和流程变量的概念差不多,不过任务变量比流程变量更微观、更具体。通过

?

Map<String,Object> vars = taskService.getVariables(tasked,varName);

?

获得任务变量Map;

通过

?

taskService.setVariables(tasked,new HashMap<String,Object>());

对任务变量进行赋值。

?

?


读书人网 >编程

热点推荐