在jBPM中,分配任务可以有几种方式:
按照分配对象,可以分为:
从分配的方式看,可以有以下几种:
- 在流程设计的时候,就直接指定用户/用户组:
- 在流程设计的时候,可以通过assignee方式,直接分配给用户
- 明确的分配给某用户/用户组:
<task name="task1" assignee="username" > 这样直接把工作分配给该用户,这里只能是用户
- 从环境变量来
<task name="task1" assignee="#{order.saler}" > 这样直接把工作环境变量order对象的saler属性值所代表的用户
- 在流程设计的时候,分配给一群用户 candidate-users
<task name="task1" candidate-users="usernameA,usernameB,usernameC" >
- 在流程设计的时候,分配给一群用户组 candidate-groups
<task name="task1" candidate-groups="groupA,groupB,groupC" >
- 在上述的2种方式:candidate-users、candidate-groups的方式,接收任务的人需要首先接收任务,才能进行处理,接收方式:taskService.takeTask
- 在程序执行的时候,动态确定:
这个在流程的xml中,也需要配置,到底哪个程序来确定。在Task节点中,需要配置任务分配器:
<assignment-handler class="className">
这个class是一个继承AssignmentHandler的类,只有一个方法:
void assign(Assignable assignable, OpenExecution execution) throws Exception;
Assignable是任务和泳道的通用接口。 所以任务分配处理器可以使用在任务, 也可以用在泳道中
assignable:可以完成上述的3种添加完成任务用户的方法:assignee、candidate-users、candidate-groups,
还有根据泳道(swimlane)进行分配用户
流程确定的情况下,有时候完成一个步骤人数不确定,在任务发布的时候有领导确定参与完成的人员。
为了完成这样的情况,可以到了这一步,通过配置动态的生成一些subTask,通过subTask给每个人进行分派工作。
其实还可以通过jBPM4.4中的foreach的方式进行完成(注意:这个功能还在孵化器中)。
如:完成一个审核工作,有些工作需要2个人完成,有些工作需要3个人完成,在开启流程的时候,由生成流程的人员进行指定对应的工作人员。
拿jBPM4.4开发指南中的例子来解释:
<process name="ForEach" xmlns="http://jbpm.org/4.4/jpdl">
<start g="28,61,48,48" name="start1">
<transition to="foreach1"/>
</start>
<foreach var="department" in="#{departments}" g="111,60,48,48" name="foreach1">
<transition to="Collect reports"/>
</foreach>
<task candidate-groups="#{department}" g="201,58,92,52" name="Collect reports">
<transition to="join1"/>
</task>
<join g="343,59,48,48" multiplicity="#{quorum}" name="join1">
<transition to="end1"/>
</join>
<end g="433,60,48,48" name="end1"/>
</process>
1. 启动流程后,到达foreach节点:
<foreach var="department" in="#{departments}" g="111,60,48,48" name="foreach1">
<transition to="Collect reports"/>
</foreach>
参数:
in:表示从外面传入的参数,foreach会读取这个参数,这个参数可以是string数组,也可以是通过逗号分隔的字符串
var:这个变量是foreach将in中的内容按照规则进行拆分,拆分的结果放在var定义的变量中,传递给下一步(每一步接收一个值)
进入到foreach,解析完这些参数,会根据join中的multiplicity参数的值,生成task(multiplicity定义为几,就生成几个Executiuon,几个task),这些Task的assignee都是空的
2. 进入到task
<task candidate-groups="#{department}" g="201,58,92,52" name="Collect reports">
<transition to="join1"/>
</task>
进入到task,其实现在有多个task,是根据join中的multiplicity来确定的。
这些task任务安排的人员在candidate-groups(或者是candidate-users等)中定义。这个例子#{department},就是在foreach节点中,定义的var="department"中的变量名字;
这些任务不是直接分派到用户的,而是需要用户自己进行take的
(通过TaskService.createTaskQuery().candidate(userId).list 可以获得有哪些任务自己是候选者
或者通过TaskService.findGroupTasks(userId)获取有哪些任务是自己加入的组需要完成的,
或者在流程xml文件中,直接用assignee,分配给任务完成的人员
)。
3. foreach自动生成的这些Task都完成了,则流程进入到下一步;
如果有部分人员完成,部分人员没有完成,还是可以查到foreach自动生成的所有Execution(通过processInstance.getExecutions()),不过根据任务完成的情况有不同的状态:
如果任务已经完成,则在Task表中已经删除,得到的execution状态是:inactive-join
没有完成的任务,在task中依旧存在,得到的execution状态是 active-concurrent
分享到:
相关推荐
《jBPM4.4开发指南》与《jBPM4.4中文用户手册》是深入理解jBPM4.4这一开源工作流管理系统的重要参考资料。jBPM,全称Java Business Process Management,是一个用于执行业务流程的轻量级、灵活的开源框架,它为业务...
- **任务工作流**:jbpm4.4支持任务分配给用户组,而不是单个用户,使得任务可以在组内成员之间灵活流转。 - **权限管理**:通过角色和权限设置,可以控制哪些组或用户可以接收、处理和完成特定任务,实现更精细的...
在这个入门开发实例中,我们将探讨如何利用jBPM4.4进行业务流程的建模、部署和执行。 **一、jBPM4.4核心概念** 1. **流程定义(Process Definition)**:使用jBPM的流程定义语言(BPML或BPMN)来描述业务流程。...
在深入探讨jBPM 4.4的相关知识点之前,我们首先需要理解jBPM是什么以及它在企业级应用中的重要性。jBPM是“Java Business Process Model”的缩写,是一个开源的工作流引擎,用于执行业务流程管理(BPM)。它提供了...
6. **规则集成**: jbpm4.4可以与Drools规则引擎结合,实现业务规则在流程执行过程中的动态应用,提升决策的灵活性。 7. **监控和报表**: 提供了监控工具,允许管理员查看流程实例的状态、跟踪任务执行情况,并生成...
jbpm4.4是JBoss企业级业务流程管理(Business Process Management)平台的一个重要版本,它为开发者提供了全面的工作流和业务流程管理解决方案。本文将深入解析jbpm4.4的相关知识点,帮助那些寻找优质学习资源的朋友...
在JBPM4.4版本中,开发者可以利用其提供的API和工具来设计、部署和执行复杂的业务流程。 首先,让我们深入了解一下JBPM4.4的核心特性: 1. **流程建模**:JBPM4.4支持BPMN(Business Process Modeling Notation)...
在jBPM 4.4中,一旦流程模型被定义,它们就可以被实例化并执行。每个流程实例都有自己的生命周期,可以被启动、暂停、恢复或终止。系统还支持并发任务处理,允许多个任务同时进行,适应现代企业的高并发需求。 **四...
这份文档主要面向开发者,详细阐述了如何在项目中集成和使用jBPM 4.4进行流程设计和开发。它涵盖了以下关键知识点: 1. **环境配置**:介绍如何设置开发环境,包括JDK、Maven以及Eclipse等开发工具的安装和配置。 ...
2. **BPMN 2.0支持**:jbpm 4.4完全支持Business Process Modeling Notation(BPMN)2.0标准,这是一种图形化语言,用于建模和描述业务流程。这使得流程设计更加直观,易于理解和维护。 3. **持久化**:jbpm使用JPA...
- **流程定义语言 (BPMN 2.0)**:jbpm4.4支持Business Process Modeling Notation 2.0,这是一种标准的流程建模语言,提供了图形化的方式来描述业务流程。 - **流程引擎**:执行流程实例的中心组件,负责解析流程...
【jbpm4.4用户手册中文版】是针对企业级工作流管理系统的详细介绍,主要针对jbpm 4.4版本。这个手册旨在帮助开发者、系统管理员以及业务分析师理解和使用jbpm来实现工作流程自动化。jbpm是一个开源的业务流程管理...
JBPM4.4 是一款强大的工作流管理系统,用于构建和管理业务流程。在这个系统中,有几个核心的对象和服务,它们构成了JBPM的核心功能。 1. **ProcessEngine对象**:ProcessEngine 是整个jbpm的核心,它是从 ...
- jbpm4.4提供了工作流引擎,用于执行流程实例,还包含了任务服务、事件服务和规则服务等功能。 2. **Struts2**: - Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java Web开发。 - 它处理HTTP请求,...
### jBPM4.4 API 详解:工作流自动化的核心技术 #### 一、工作流基础知识 工作流,作为业务过程的部分或整体自动化,旨在通过计算机应用环境实现文档、信息或任务在多个参与者间的自动传递,以达到预期的业务目标...
1. **流程建模**:jbpm4.4支持BPMN 2.0标准,这是一种图形化的建模语言,使得业务流程能够以易于理解的方式进行描述。通过Eclipse插件,开发者可以直观地创建流程图,包括开始事件、结束事件、任务、网关、事件等...
【jbpm-4.4.zip part03】这个压缩文件是关于jbpm 4.4版本的组成部分,jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了业务流程建模、部署、执行和监控的功能。jbpm 4.4是该系统的一...
JBPM4.4是该系统的一个特定版本,它提供了全面的工作流支持,包括流程设计、执行、监控和优化。本篇文章将详细探讨JBPM4.4的基础知识,以及如何通过jsp和servlet来实现入门级的应用。 **1. 工作流管理系统介绍** ...
JBPM4.4是JBoss Business Process Management (BPM)平台的一个特定版本,它提供了用于设计、执行和管理业务流程的工具和框架。在JBPM4.4中,数据库是存储流程实例、流程定义以及相关元数据的关键部分。以下是关于...