任务泳道的概念:在实际的业务应用中,经常会遇到这样一种场景:流程定义中的多个任务需要被分配或候选给同一个群用户。那么我们可以统一将这个“同一群用户”定义为“一个泳道”。同一流程定义中的任何一个任务都可以应用泳道。属于同一个泳道的任务将会被分配或候选给这个泳道中的所有用户。
泳道的概念也可以理解为流程定义的“全局用户组”。在某些情况下,泳道可能与后面提到的身份认证组件中的权限角色相似,但是实际上他们并不是同一个东西。
先来熟悉一下简单的例子,jpdl如下:
<?xml version="1.0" encoding="UTF-8"?>
<process name="taskSwimlane" xmlns="http://jbpm.org/4.4/jpdl">
<!-- 在这里定义泳道,泳道是为流程定义的子元素 -->
<swimlane name="checkManagers" candidate-groups="order_managers" />
<start>
<transition to="checkOrder" />
</start>
<!-- 以下2个任务的分配工作,都交给上面定义的泳道完成 -->
<task name="checkOrder" swimlane="checkManagers">
<transition to="repeatCheckOrder" />
</task>
<task name="repeatCheckOrder" swimlane="checkManagers">
<transition to="end" />
</task>
<end name="end" />
</process>
上面定义的泳道“check”引用了一个用户组 managers。在流程运行前,这个用户组需要被创建出来,利用身份认证服务 IdentityService:
identityService.createGroup("order_managers");
// 创建用户 afei并加入managers组
identityService.createUser("afei", "du", "yunfei");
identityService.createMembership("afei", "order_managers");
在发起流程实例后,用户afei将成为任务 checkOrder的唯一候选者。首先,让afei接受这个任务:
注意,使用findGroupTasks才能看到task,用findPersonalTasks是出不来的。
taskService.takeTask(taskId,”afei”);
接受这个任务将使afei成为任务的分配者,同时泳道“check”也会发生变化,afei在这个流程实例中会被固化为分配者。
接下来,afei可以完成任务了:
taskService.completeTask(taskId);
完成此任务后流程实例将会流转到下一个任务“repeatCheckOrder”。这个任务也引用了之前的泳道。因此,任务会直接分配给afei。可以通过如下代码验证:
tasks = taskService.findPersonalTasks("afei"); // 断言afei直接拿到了任务
System.out.println("tasks.size(): " + tasks.size());
task = tasks.get(0);
// 断言是否为预期的任务和分配者
assertEquals("repeatCheckOrder", task.getName());
assertEquals("afei", task.getAssignee());
// taskService.takeTask(task.getId(), "afei");
taskService.completeTask(task.getId());
注意:假如此时takeTask也是不对的,因为已经被afei给take了。
下一张,任务变量!
分享到:
相关推荐
jbpm学习笔记:安装插件、配置环境、发布流程定义、查看流程定义
主要关于如何使用jbpm,使用jbpm里的方法,如定义流程,流程实例如何与公文绑定,如何让公文流转到下一步,查看我手上有多少公文等,以及如何把jbpm集成到其它项目里面。
jpdl描述工作流《jBPM学习笔记_框架设计简介》
jbpm学习日记,我在学习中的体会有很大帮助
个人学习jbpm的文档,其中包括一些bug的修改。主要以《jbpm流程》一书为参考
这是我在吉林大学学习时的笔记,Java,工作流,JBPM,学习笔记
JBPM工作流实战_使用泳道为多个任务指定相同的参与者视频
最近通过使用jbpm,学习了一下,自己整理的一份jbpm的学习笔记,,希望对你们有帮助
入门材料 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记 jbpm-jpdl 学习笔记
1 工作流的概念 5 2 工作流的过程 7 3 Jbpm4.4介绍 7 3.1工作流引擎 8 3.2jpdl 8 3.3数据库 8 3.3.1资源库和运行时表结构 8 3.3.2历史数据库表 9 3.3.3身份认证表 9 3.4jbpm.cfg.xml 9 3.5 jbpm.hibernate.cfg.xml ...
jbpm学习资料,jBPM-jPDL学习笔记,很详细。。。。。。。。。。。jbpm教程
火龙果软件工程技术中心 相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(流程设计与控制)》概述:jBPM(JBossBusinessProcessManagement业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域...
JBPM新手学习笔记(强烈推荐)
jbpm-human-task-5.1.0.Final.jar jbpm5
NULL 博文链接:https://wjt276.iteye.com/blog/690307
工作流学习,在系统开发当中占有十分重要的作用
jbpm-human-task-5.1.0.Final-sources.jar jbpm5 源码
jbpm是一款免费开源的工作流引擎,虽然现在还不完善,但是用起来还是不错的..... 我学习jbpm的一些笔记心得
jbpm3.1.4的学习教程,里面有jbpm开发指南,学完这个教程你就能够看懂jbpm的项目了。然后我还做了个小的例子,把详细的不走都记录下来了。