`
cicada_IT
  • 浏览: 52766 次
社区版块
存档分类
最新评论

jbpm入门 任务控制

阅读更多
流程中任务的分配:

JBPM中任何一个task都必须指定一个任务的接收者,这个接收者可以是一个用户,也可以是一个用户组。如果指定给一个用户那么可以用这个用户的ID得到当前的task。如果是一个用户组那么这个组的任何一个用户都可以看到这个task,当这个组中的任何一个用户处理该任务后那么这个task对这个组中的其它用户就不再可见。
JBPM中任务的分配方式有两种:一种是为task指定一个assignment-handler,既一个实现了AssignmentHandler接口的类;另外一种是为task指定一个swimlane(泳道),swimlane可以在流程中定义好,一个流程中可以定义若干个swimlane,在定义一个swimlane时同样也是指定了个实现了AssignmentHandler接口的类,当我们的task指定了一个swimlane后,其效果同我们指定一个assignment-handler效果是一样的,只不过可以简化我们任务的分配工作。一个典型的实现了AssignmentHandler接口的类如下:

java 代码
  1. import org.jbpm.graph.exe.ExecutionContext;   
  2. import org.jbpm.taskmgmt.def.AssignmentHandler;   
  3. import org.jbpm.taskmgmt.exe.Assignable;   
  4.   
  5. public class ManagerAssignment implements AssignmentHandler {   
  6.   
  7.     public void assign(Assignable arg0, ExecutionContext arg1) throws Exception {   
  8.         String[] s = new String[5];   
  9.         for (int i = 0; i < 5; i++) {   
  10.             s[i] = "manager" + i;   
  11.         }   
  12.         // arg0.setActorId("manager0");//将任务分配给单个用户   
  13.         arg0.setPooledActors(s);// 将任务分配给一个用户组   
  14.     }   
  15.   
  16. }  

assignment-handler方式的任务分配:

在JBPM中可以在start-node中添加一个task,在一个task-node中添加若干个task。每一个task我们都必须为其指定一个assignment-handler或一个swimlane,二者只能选其一。

xml 代码
  1. <start-state name="start">  
  2. <task name="start task">  
  3. <controller>  
  4. <variable name="dayCount" access="read,write,required" mapped-name="请假天数">variable>  
  5. controller>  
  6. <assignment class="test.assignment.IssuePersonAssignment">assignment>  
  7. task>  
  8. <transition name="to manager approve" to="manager approve task">transition>  
  9. start-state>  

上面的代码中start节点中我们添加了一个start task的task,同时为其指定了一个assignment,所对应的class为test.assignment.IssuePersonAssignment ,该类的代码如下:在该类中,我们从整个流程中的取出一个名为Constants.ISSUE_PERSON的流程变量,并将其赋给当前的task,这里采用的是Assignable的setActorId的方法。这样当用户登录时就可以用

java 代码
  1. JbpmContext context=JbpmConfiguration.getInstance().createJbpmContext();   
  2. List ls=context.getTaskList(session.getAttribute("username").toString());  

方法来取出对应的任务列表。

swimlane方式的任务分配:

该种方式的任务分配实际上是对assignment-handler方式任务分配的简化。首先用户需要在流程中定义好若干个swimlane,接下来只需要在task中指定一个swimlane就可以完成任务的分配工作。

  1. <swimlane name="manager">  
  2. <assignment class="test.assignment.ManagerAssignment">assignment>  
  3. swimlane>  
  4. <task-node name="manager approve task">  
  5. <task name="manager approve" swimlane="manager">  
  6. <controller>  
  7. <variable name="dayCount" access="read" mapped-name="员工请假天数">variable>  
  8. <variable name="managerApprove" access="read,write,required" mapped-name="经理意见">variable>  
  9. controller>  
  10. task>  
  11. <transition name="to user try" to="user try">transition>  
  12. <transition name="to fork" to="fork1">transition>  
  13. task-node>  

上面的代码中我们指定了一个叫manager的swimlane,然后我们在一个名为manager approve的task里将该task指定给该swimlane,这样就完成了任务的分配。从这里我们可以看到与assignment-handler方式分配最大不同之处是该种分配任务的方式简单、明了。我们只需要预先定义好若干个swimlane之后就可以在task里重复使用了。test.assignment.ManagerAssignment类的代码如java代码一。

在这个类当中我们把任务分配给一个用户组(一个由用户ID组成的数组),这样该组中的每个用户登录后都可以采用以下方法看到任务列表:

  1. JbpmContext context=JbpmConfiguration.getInstance().createJbpmContext();   
  2. List list=context.getTaskMgmtSession().findPooledTaskInstances(session.getAttribute("username").toString());  

用这种方法,用户可以看到所有尚未处理的分配到该用户所在用户组中的task列表。一旦该组中有一个用户处理了该任务,那么这个任务对于其它用户就不再可见了。

 

 

 

java 代码
  1. import org.jbpm.graph.exe.ExecutionContext;   
  2. import org.jbpm.taskmgmt.def.AssignmentHandler;   
  3. import org.jbpm.taskmgmt.exe.Assignable;   
  4.   
  5. public class IssuePersonAssignment implements AssignmentHandler {   
  6.   
  7.     public void assign(Assignable arg0, ExecutionContext arg1) throws Exception {   
  8.         String issuePerson = arg1.getVariable(Constants.ISSUE_PERSON).toString();   
  9.         arg0.setActorId(issuePerson);   
  10.     }   
  11.   
  12. }  
分享到:
评论

相关推荐

    JBPM入门

    【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...

    jBPM4用户指南入门教程

    **jBPM4用户指南入门教程** jBPM4是一个基于Java的企业级工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。本教程将引导您逐步了解如何安装配置、使用流程设计器、部署业务归档以及利用服务和jpdl...

    jbpm入门指南和开发指南

    《jbpm开发入门指南》和《jbpm开发指南》是两本针对jbpm框架的重要参考资料,对于初学者和有经验的开发者来说都是宝贵的资源。它们通常会涵盖以下核心知识点: 1. **jbpm概述**:介绍jbpm的基本概念,包括它的工作...

    jbpm开发入门指南

    - **工作流服务**:jbpm提供了一套RESTful API,允许远程调用和控制工作流程。 4. **jbpm引擎内核设计思想** - **流程引擎**:jbpm的核心是流程引擎,它负责解析流程定义,调度任务,处理流程状态的变迁。 - **...

    jBPM开发入门指南

    **jBPM开发入门指南** jBPM,全称Java Business Process Management,是一个开源的工作流管理系统,用于管理和执行业务流程。它提供了强大的流程建模、执行、监控和优化功能,适用于各种规模的企业进行流程自动化。...

    jbpm6.0 入门(很有权威)

    ### jBPM 6.0 入门指南 #### 一、概述 ##### 1.1 什么是 jBPM? jBPM (JBoss Business Process Management) 是一个灵活且易于使用的业务流程管理(Business Process Management, BPM)框架,用于帮助开发者和业务...

    jbpm相关入门、配置

    jbpm入门** jbpm的入门学习通常从理解其核心概念开始,如流程定义(Process Definition)、任务(Task)、事件(Event)和工作流实例(Process Instance)。流程定义使用BPMN语言编写,通过jbpm提供的图形化编辑器...

    jbpm4入门例子

    总结来说,jbPM4入门例子展示了如何在Tomcat6.0环境下部署和运行jbPM4,包括配置数据源、创建数据库表以及利用jbPM4的工作台进行流程建模和任务管理。这个例子对于初学者来说是一个很好的起点,帮助他们快速理解和...

    jBPM4入门基础环境配置

    **jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...

    jBPM开发入门指南.rar

    在jBPM中,任务管理和工作流实例的控制是关键。任务可以分配给特定的用户或组,通过API或工作台完成任务的领取、处理和退回。此外,jBPM支持事件驱动,比如当某个条件满足时触发特定的流程分支。 规则集成是jBPM的...

    JBPM5.1入门手册

    ### jBPM 5.1 入门手册详解 #### 一、jBPM 概述 jBPM 是一款灵活且强大的业务流程管理(BPM)解决方案,它旨在搭建起业务分析师与软件开发者之间的桥梁。传统的 BPM 引擎往往侧重于技术细节,对非技术人员不够友好...

    jbpm例子代码(入门)

    **jbpm入门示例** 1. **安装与配置**:首先,你需要下载jbpm的最新版本并解压,然后配置相关的环境变量,如JAVA_HOME和JBOSS_HOME。同时,确保Maven或Gradle已安装,用于构建jbpm项目。 2. **创建第一个流程**:...

    jBPM4.4开发实例

    5. **变量(Variable)**:存储流程运行时的数据,可以用于任务处理和流程控制。 **二、jBPM4.4开发环境搭建** 1. **安装JDK**:jBPM需要Java环境支持,确保安装了JDK并设置好环境变量。 2. **下载jBPM**:访问...

    jbpm开发指南

    1.2 jBPM入门套件 入门套件提供了一个完整的开发环境,包括预配置的Jboss应用服务器、图形化流程设计工具(eclipse插件)、数据库兼容包、核心jBPM组件以及BPEL扩展参考。预配置的服务器集成了核心jBPM服务、集成...

    jbpm4.3 中文文档

    中文文档的详细内容将涵盖以上各个部分,包括安装指南、快速入门、API参考、案例研究、常见问题解答等,帮助读者逐步掌握jbpm4.3的使用方法和最佳实践。通过深入学习,开发者不仅能熟练操作jbpm4.3,还能理解业务...

    JBPM流程框架源码

    JBPM是一个强大的流程管理框架,不仅适合初学者入门,也适用于专业开发人员构建高效、灵活的业务流程。通过深入研究"leave"示例,你可以逐步掌握JBPM的使用方法,从而在实际项目中发挥其优势。不断实践和探索,将使...

Global site tag (gtag.js) - Google Analytics