流程中任务的分配:
JBPM中任何一个task都必须指定一个任务的接收者,这个接收者可以是一个用户,也可以是一个用户组。如果指定给一个用户那么可以用这个用户的ID得到当前的task。如果是一个用户组那么这个组的任何一个用户都可以看到这个task,当这个组中的任何一个用户处理该任务后那么这个task对这个组中的其它用户就不再可见。
JBPM中任务的分配方式有两种:一种是为task指定一个assignment-handler,既一个实现了AssignmentHandler接口的类;另外一种是为task指定一个swimlane(泳道),swimlane可以在流程中定义好,一个流程中可以定义若干个swimlane,在定义一个swimlane时同样也是指定了个实现了AssignmentHandler接口的类,当我们的task指定了一个swimlane后,其效果同我们指定一个assignment-handler效果是一样的,只不过可以简化我们任务的分配工作。一个典型的实现了AssignmentHandler接口的类如下:
java 代码
- import org.jbpm.graph.exe.ExecutionContext;
- import org.jbpm.taskmgmt.def.AssignmentHandler;
- import org.jbpm.taskmgmt.exe.Assignable;
-
- public class ManagerAssignment implements AssignmentHandler {
-
- public void assign(Assignable arg0, ExecutionContext arg1) throws Exception {
- String[] s = new String[5];
- for (int i = 0; i < 5; i++) {
- s[i] = "manager" + i;
- }
-
- arg0.setPooledActors(s);
- }
-
- }
assignment-handler方式的任务分配:
在JBPM中可以在start-node中添加一个task,在一个task-node中添加若干个task。每一个task我们都必须为其指定一个assignment-handler或一个swimlane,二者只能选其一。
xml 代码
- <start-state name="start">
- <task name="start task">
- <controller>
- <variable name="dayCount" access="read,write,required" mapped-name="请假天数">variable>
- controller>
- <assignment class="test.assignment.IssuePersonAssignment">assignment>
- task>
- <transition name="to manager approve" to="manager approve task">transition>
- start-state>
上面的代码中start节点中我们添加了一个start task的task,同时为其指定了一个assignment,所对应的class为test.assignment.IssuePersonAssignment ,该类的代码如下:在该类中,我们从整个流程中的取出一个名为Constants.ISSUE_PERSON的流程变量,并将其赋给当前的task,这里采用的是Assignable的setActorId的方法。这样当用户登录时就可以用
java 代码
- JbpmContext context=JbpmConfiguration.getInstance().createJbpmContext();
- List ls=context.getTaskList(session.getAttribute("username").toString());
方法来取出对应的任务列表。
swimlane方式的任务分配:
该种方式的任务分配实际上是对assignment-handler方式任务分配的简化。首先用户需要在流程中定义好若干个swimlane,接下来只需要在task中指定一个swimlane就可以完成任务的分配工作。
- <swimlane name="manager">
- <assignment class="test.assignment.ManagerAssignment">assignment>
- swimlane>
- <task-node name="manager approve task">
- <task name="manager approve" swimlane="manager">
- <controller>
- <variable name="dayCount" access="read" mapped-name="员工请假天数">variable>
- <variable name="managerApprove" access="read,write,required" mapped-name="经理意见">variable>
- controller>
- task>
- <transition name="to user try" to="user try">transition>
- <transition name="to fork" to="fork1">transition>
- task-node>
上面的代码中我们指定了一个叫manager的swimlane,然后我们在一个名为manager approve的task里将该task指定给该swimlane,这样就完成了任务的分配。从这里我们可以看到与assignment-handler方式分配最大不同之处是该种分配任务的方式简单、明了。我们只需要预先定义好若干个swimlane之后就可以在task里重复使用了。test.assignment.ManagerAssignment类的代码如java代码一。
在这个类当中我们把任务分配给一个用户组(一个由用户ID组成的数组),这样该组中的每个用户登录后都可以采用以下方法看到任务列表:
- JbpmContext context=JbpmConfiguration.getInstance().createJbpmContext();
- List list=context.getTaskMgmtSession().findPooledTaskInstances(session.getAttribute("username").toString());
用这种方法,用户可以看到所有尚未处理的分配到该用户所在用户组中的task列表。一旦该组中有一个用户处理了该任务,那么这个任务对于其它用户就不再可见了。
java 代码
- import org.jbpm.graph.exe.ExecutionContext;
- import org.jbpm.taskmgmt.def.AssignmentHandler;
- import org.jbpm.taskmgmt.exe.Assignable;
-
- public class IssuePersonAssignment implements AssignmentHandler {
-
- public void assign(Assignable arg0, ExecutionContext arg1) throws Exception {
- String issuePerson = arg1.getVariable(Constants.ISSUE_PERSON).toString();
- arg0.setActorId(issuePerson);
- }
-
- }
分享到:
相关推荐
【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...
**jBPM4用户指南入门教程** jBPM4是一个基于Java的企业级工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。本教程将引导您逐步了解如何安装配置、使用流程设计器、部署业务归档以及利用服务和jpdl...
《jbpm开发入门指南》和《jbpm开发指南》是两本针对jbpm框架的重要参考资料,对于初学者和有经验的开发者来说都是宝贵的资源。它们通常会涵盖以下核心知识点: 1. **jbpm概述**:介绍jbpm的基本概念,包括它的工作...
- **工作流服务**:jbpm提供了一套RESTful API,允许远程调用和控制工作流程。 4. **jbpm引擎内核设计思想** - **流程引擎**:jbpm的核心是流程引擎,它负责解析流程定义,调度任务,处理流程状态的变迁。 - **...
**jBPM开发入门指南** jBPM,全称Java Business Process Management,是一个开源的工作流管理系统,用于管理和执行业务流程。它提供了强大的流程建模、执行、监控和优化功能,适用于各种规模的企业进行流程自动化。...
### jBPM 6.0 入门指南 #### 一、概述 ##### 1.1 什么是 jBPM? jBPM (JBoss Business Process Management) 是一个灵活且易于使用的业务流程管理(Business Process Management, BPM)框架,用于帮助开发者和业务...
jbpm入门** jbpm的入门学习通常从理解其核心概念开始,如流程定义(Process Definition)、任务(Task)、事件(Event)和工作流实例(Process Instance)。流程定义使用BPMN语言编写,通过jbpm提供的图形化编辑器...
总结来说,jbPM4入门例子展示了如何在Tomcat6.0环境下部署和运行jbPM4,包括配置数据源、创建数据库表以及利用jbPM4的工作台进行流程建模和任务管理。这个例子对于初学者来说是一个很好的起点,帮助他们快速理解和...
**jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...
在jBPM中,任务管理和工作流实例的控制是关键。任务可以分配给特定的用户或组,通过API或工作台完成任务的领取、处理和退回。此外,jBPM支持事件驱动,比如当某个条件满足时触发特定的流程分支。 规则集成是jBPM的...
### jBPM 5.1 入门手册详解 #### 一、jBPM 概述 jBPM 是一款灵活且强大的业务流程管理(BPM)解决方案,它旨在搭建起业务分析师与软件开发者之间的桥梁。传统的 BPM 引擎往往侧重于技术细节,对非技术人员不够友好...
**jbpm入门示例** 1. **安装与配置**:首先,你需要下载jbpm的最新版本并解压,然后配置相关的环境变量,如JAVA_HOME和JBOSS_HOME。同时,确保Maven或Gradle已安装,用于构建jbpm项目。 2. **创建第一个流程**:...
5. **变量(Variable)**:存储流程运行时的数据,可以用于任务处理和流程控制。 **二、jBPM4.4开发环境搭建** 1. **安装JDK**:jBPM需要Java环境支持,确保安装了JDK并设置好环境变量。 2. **下载jBPM**:访问...
1.2 jBPM入门套件 入门套件提供了一个完整的开发环境,包括预配置的Jboss应用服务器、图形化流程设计工具(eclipse插件)、数据库兼容包、核心jBPM组件以及BPEL扩展参考。预配置的服务器集成了核心jBPM服务、集成...
中文文档的详细内容将涵盖以上各个部分,包括安装指南、快速入门、API参考、案例研究、常见问题解答等,帮助读者逐步掌握jbpm4.3的使用方法和最佳实践。通过深入学习,开发者不仅能熟练操作jbpm4.3,还能理解业务...
JBPM是一个强大的流程管理框架,不仅适合初学者入门,也适用于专业开发人员构建高效、灵活的业务流程。通过深入研究"leave"示例,你可以逐步掌握JBPM的使用方法,从而在实际项目中发挥其优势。不断实践和探索,将使...