`

JBPM具体应用之EL表达式动态分配assignee(转)

    博客分类:
  • jbpm
 
阅读更多

分配assignee的方式大致分为静态和动态两种,所谓的静态分配指的是写死在jpdl文件中,而动态分配主要是用EL表达式进行分配。首先我们来看静态分配:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process name="test" key="mytest" xmlns="http://jbpm.org/4.4/jpdl">  
  4.    <start name="start1" g="275,16,48,48">  
  5.       <transition name="而提交到科长审批" to="111科长审批" g="-110,-15"/>  
  6.    </start>  
  7.    <task assignee="张三" name="111科长审批" g="255,101,92,52">  
  8.       <transition name="提交到主任" to="主任审批" g="-69,-20"/>  
  9.    </task>  
  10.    <task assignee="李四" name="主任审批" g="259,186,92,52">  
  11.       <transition name="通过" to="end1" g="-50,-20"/>  
  12.    </task>  
  13.    <end name="end1" g="283,283,48,48"/>  
  14.       
  15. </process>  


 

指的是我们将task标签中的assignee属性直接赋值为“张三”,这样的话非常的不灵活,我们如果想要达到能够动态的改变任务执行人的效果,则需要在后台代码中进行过动态设置,这时就需要用EL表达式。其方法也很简单,首先将task标签中的assignee属性写为“assignee="${user.kezhang}"”形式,然后在后台代码中进行设置,如下:

首先建立User类:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public class User implements Serializable{  
  2.   
  3.     /** 
  4.      * 用户类 
  5.      */  
  6.     private static final long serialVersionUID = 1L;  
  7.   
  8.     private String kezhang;  
  9.       
  10.     private String zhuren;  
  11.   
  12.     public String getKezhang() {  
  13.         return kezhang;  
  14.     }  
  15.   
  16.     public void setKezhang(String kezhang) {  
  17.         this.kezhang = kezhang;  
  18.     }  
  19.   
  20.     public String getZhuren() {  
  21.         return zhuren;  
  22.     }  
  23.   
  24.     public void setZhuren(String zhuren) {  
  25.         this.zhuren = zhuren;  
  26.     }  
  27.       
  28.       
  29. }  


 

需要注意的是,因为需要将类的属性值持久化到数据库,所以该类一定要实现序列化接口,否则会报错。然后在创建流程实例的时候进行动态赋值:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. public class TestJUEL extends JbpmTestCase implements JbpmUtil {  
  2.   
  3.     @Override  
  4.     public void deploy() {  
  5.         super.startUp();  
  6.         repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").deploy();  
  7.           
  8.   
  9.     }  
  10.   
  11.     @Override  
  12.     public void createInstance() {  
  13.         super.startUp();  
  14.         Map<String,Object> map = new HashMap<String,Object>();  
  15.         User user = new User();  
  16.         user.setKezhang("userA");  
  17.         user.setZhuren("userB");  
  18.         map.put("user", user);  
  19.         ProcessInstance processInstance = executionService.startProcessInstanceByKey("test",map);  
  20.         print("流程实例ID",processInstance.getId());  
  21.   
  22.     }  
  23.   
  24. }  

在使用EL表达式动态分配assignee的时候需要注意的有两点:

1.与jsp中使用EL表达式一样,类的属性一定要有get,set方法。

2.el表达式中的变量名称为user,user的属性名为kezhang和zhuren,那么在后台User类中的属性也要为kezhang和zhuren,另外在创建流程实例的时候所用到的变量名称也一定要为user,否则会报错。

分享到:
评论

相关推荐

    jBPM4工作流应用开发指南.pdf

    jBPM(Java Business Process Management)是一个开源项目,用于处理业务流程的管理和执行。...胡奇的这本指南,通过深入浅出的讲解和案例分析,将复杂的jBPM4应用开发过程简化,使之变得更加易于理解和掌握。

    工作流jbpm应用的实例

    工作流jbpm应用实例解析 工作流jbpm(Java Business Process Management)是一种开源的工作流管理系统,主要用于设计、执行和管理业务流程。jbpm是基于Java技术的,它提供了丰富的API和图形化工具,使得开发者可以...

    el-api el-ri

    通过EL,`jbpm`的工作流定义可以更加灵活,比如在任务分配、条件判断等环节,可以直接在流程定义文件中使用EL表达式来决定执行路径。 例如,我们可以用EL来设定一个条件任务,如当某个变量`status`等于`approved`时...

    jBPM4工作流应用开发指南.rar

    jBPM4支持多种任务分配策略,如固定分配、动态分配或基于规则的分配。 **6. 整合与API** jBPM4可以通过Java API、JMX管理接口、RESTful服务等方式与其他系统集成。此外,它还支持Spring框架,可以无缝集成到Spring...

    jbpm4.4 流程运转+驳回+分配组任务+ssh2

    jbpm4.4是JBoss Business Process Management Suite的第4.4版本,它是一个开源的工作流和业务流程管理系统,用于构建、部署和管理...在学习过程中,可以参考提供的jbpm4.4压缩包文件,通过实际操作来加深理解和应用。

    JBPM4.4应用开发入门篇

    JBPM4.4 应用开发入门篇 JBPM(java Business Process Management,java 业务流程管理)是一个框架、一堆开放的源代码,而非一套“应用程序”。jBPM 的流程引擎可以看做是一个 java 工程——若干 java 类、依赖库...

    jbpm源码阅读之一

    标题 "jbpm源码阅读之一" 提到的是对jbpm(Java Business Process Management)源代码的初步探索。jbpm是一个开源的工作流管理系统,它提供了一套完整的框架来处理业务流程,包括流程定义、执行和监控。这篇博客文章...

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    jBPM工作流应用开发指南

    《jBPM工作流应用开发指南》是一本面向初学者的文档,旨在帮助开发者快速掌握jBPM工作流系统的开发技巧。jBMP,全称Java Business Process Management,是开源组织JBoss提供的一款用于业务流程管理(BPM)的框架,它...

    JBPM工作流应用开发文档

    【JBPM工作流应用开发文档】深入解析 JBPM(java Business Process Management)是一个基于JavaEE的轻量级工作流管理系统,旨在支持企业级的流程定义、部署、执行和管理。作为JBoss的一个子项目,它与其他优秀开源...

    jbpm4.4 动态设置参与人数

    ### jbpm4.4 动态设置参与人数 在企业级应用中,工作流管理是极为重要的组成部分之一。JBPM(JBoss Business Process Management)作为一款开源的工作流引擎,广泛应用于各种业务流程管理场景中。特别是在版本4.4中...

    jbpm开发入门指南

    - **任务分配**:jbpm支持根据预设规则或动态分配任务给指定用户或组。 - **任务管理**:用户可以通过jbpm提供的web界面或API查看、接受、完成任务。 - **流程监控**:提供实时的流程运行情况监控,如实例数量、...

    jbpm简介\jbpm简介

    4. **流程虚拟机(PVM)**:PVM是jBPM的核心组件之一,它是一组用于生成和执行不同流程语言定义的商业流程的简单Java类库。PVM的嵌入式特性使其成为一种高效、易于集成的工作流解决方案。 #### 四、为何选择jBPM 1. ...

    jBPM4工作流应用开发指南完整版带书签

    虽然无法直接了解具体内容,但根据以上知识,可以认为“jBPM4工作流应用开发指南完整版带书签”是一份全面的文档,覆盖了jBPM4工作流的构建和运行所需的关键步骤和实践。开发者可通过这份指南获得在不同业务场景中...

    JBPM绑定自定义用户模型实现授权

    这里的`#{processStarter}`是一个EL表达式,它在流程启动时会被解析为当前启动流程的用户的标识。 然而,如果我们需要更复杂的用户分配逻辑,例如根据特定条件动态地决定任务执行者,我们可以自定义一个...

    jbpm教程、jbpm动态设置参与者

    jbpm教程、jbpm动态设置参与者、jbpm实例下载

    JBPM5基于tomcat web的应用

    【JBPM5基于Tomcat Web应用详解】 JBPM5是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。这个项目是一个基于Web的JBPM5.2实例,特别设计用于在Apache Tomcat服务器上运行。理解这个应用...

    jbpm5 web整合例子

    【jbpm5 web整合例子】是一个关于如何将JBPM5工作流引擎与Web应用程序整合的实践项目,适合那些想要在Web环境中使用业务流程管理(BPM)功能的开发者。JBPM5是一个开源的工作流和业务规则管理系统,它提供了一整套...

    jbpm工作流web应用

    **jbpm工作流web应用** 是一个基于Java的业务流程管理(BPM)系统,它提供了全面的工作流解决方案,能够帮助开发者构建可扩展且灵活的Web应用程序。jbpm结合了Eclipse开发环境、Tomcat应用服务器和MySQL数据库,形成...

Global site tag (gtag.js) - Google Analytics