任务泳道的概念:在实际的业务应用中,经常会遇到这样一种场景:流程定义中的多个任务需要被分配或候选给同一个群用户。那么我们可以统一将这个“同一群用户”定义为“一个泳道”。同一流程定义中的任何一个任务都可以应用泳道。属于同一个泳道的任务将会被分配或候选给这个泳道中的所有用户。
泳道的概念也可以理解为流程定义的“全局用户组”。在某些情况下,泳道可能与后面提到的身份认证组件中的权限角色相似,但是实际上他们并不是同一个东西。
先来熟悉一下简单的例子,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>
-
-
- <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");
-
- 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");
- System.out.println("tasks.size(): " + tasks.size());
- task = tasks.get(0);
-
- assertEquals("repeatCheckOrder", task.getName());
- assertEquals("afei", task.getAssignee());
-
- taskService.completeTask(task.getId());
注意:假如此时takeTask也是不对的,因为已经被afei给take了。
分享到:
相关推荐
通过JBPM学习杂记,我们可以了解如何创建和配置这些元素,以及如何将它们连接起来形成一个完整的业务流程。 接着,我们需要了解jbpm的数据模型,包括实体类和持久化。jbpm的核心实体如ProcessInstance、Task、Job等...
在本文档中,主要讨论的是jbpm 4.4 版本的学习笔记。作者通过实践学习并整理了关于jbpm的一些关键概念和操作。 首先,流程图是jbpm设计流程的核心,它包含了一系列的流程元素。在提到的订购流程中,主要包括以下...
通过阅读《jBPM-jPDL学习笔记.pdf》,你可以深入了解这些概念,并学会如何使用jPDL编写和部署流程定义,从而在实际项目中实现灵活、可扩展的业务流程管理。这份资料对于初学者来说是一份很好的入门指南,能够帮助...
#### 三、JBPM学习笔记系列 **1.1 Ant构建与数据库环境配置** - 重点介绍了如何使用Ant进行构建和部署,以及如何配置数据库环境,为后续的流程定义和执行打下基础。 **1.2 MyEclipse整合JBPM配置** - 讲述了...
**JBPM研究笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。这个系统的核心是基于模型驱动的架构,允许开发者通过图形化的方式设计、...
"family168.txt"可能是课程笔记或者示例代码,帮助学习者深入理解和实践jBPM。 通过学习和实践jBPM,企业能够更好地管理和优化其业务流程,提升业务效率,同时确保流程的合规性和透明度。无论是初学者还是经验丰富...
在JBPM中,工作流的定义通常包含了一系列相互衔接、自动进行的业务活动或任务。这些任务可以是手工节点(如State),需要外部参与者介入才能继续执行,也可以是自动节点(如Node),能够在不需人工干预的情况下继续...