JBPM实现请假流程
来源:互联网 发布:mac os x 10.11升级包 编辑:程序博客网 时间:2024/04/30 02:38
一个简单的JBPM4.4实现的一个请假流程:
package com.leweiyou.main;
import static org.junit.Assert.assertNotNull;import static org.junit.Assert.assertTrue;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import org.jbpm.api.Configuration;import org.jbpm.api.Deployment;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import org.jbpm.api.ProcessInstance;import org.jbpm.api.RepositoryService;import org.junit.Before;import org.junit.Test;public class HellowordTest {private ProcessEngine engine;@Beforepublic void setUp() throws Exception {engine = Configuration.getProcessEngine();}/** * 发布流程 */@Testpublic void testDeploy(){RepositoryService rs = engine.getRepositoryService();String id = rs.createDeployment().addResourceFromClasspath("jpdl/helloword.jpdl.xml").deploy();assertNotNull(id);}@Testpublic void testPrintDeploy(){RepositoryService repositoryService = engine.getRepositoryService();List<Deployment> list = repositoryService.createDeploymentQuery().list();assertTrue(list.size() != 0);for(Deployment d : list){assertNotNull(d);System.out.println("Deployment:" + d.getId() + " " + d.getName());}}/** * 测试 1天,经理,同意,结束 */@Testpublic void testWrite_1_leader(){//开始ExecutionService es = engine.getExecutionService();ProcessInstance pi = es.startProcessInstanceByKey("Helloword");Set<String> ans = pi.findActiveActivityNames();String pid = pi.getId();assertTrue(ans != null && ans.contains("填写申请"));//填写请假单Map<String,Object> map = new HashMap<String,Object>();map.put("day", 1);map.put("reason", "请假");pi = es.signalExecutionById(pid, map);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("经理审批"));//经理审批pi = es.signalExecutionById(pid,"同意");assertTrue(pi.isEnded());}/** * 测试 1天,经理,不同意 */@Testpublic void testWrite_1_$(){//开始ExecutionService es = engine.getExecutionService();ProcessInstance pi = es.startProcessInstanceByKey("Helloword");Set<String> ans = pi.findActiveActivityNames();String pid = pi.getId();assertTrue(ans != null && ans.contains("填写申请"));//填写请假单Map<String,Object> map = new HashMap<String,Object>();map.put("day", 1);map.put("reason", "请假");pi = es.signalExecutionById(pid, map);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("经理审批"));//经理审批Map<String,Object> map1 = new HashMap<String,Object>();map1.put("reason", "经理不同意:请假次数太多,已经超过了月量");pi = es.signalExecutionById(pid,"驳回",map1);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("填写申请"));assertTrue(!pi.isEnded());}/** * 测试 10天,经理,同意,老板不同意 */@Testpublic void testWrite_10_$(){//开始ExecutionService es = engine.getExecutionService();ProcessInstance pi = es.startProcessInstanceByKey("Helloword");Set<String> ans = pi.findActiveActivityNames();String pid = pi.getId();assertTrue(ans != null && ans.contains("填写申请"));//填写请假单Map<String,Object> map = new HashMap<String,Object>();map.put("day", 10);map.put("reason", "请假");pi = es.signalExecutionById(pid, map);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("经理审批"));//经理审批pi = es.signalExecutionById(pid,"同意");ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("老板审批"));//老板审批Map<String,Object> map1 = new HashMap<String,Object>();map1.put("reason", "老板不同意:项目太紧,过两天请假吧");pi = es.signalExecutionById(pid,"驳回",map1);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("填写申请"));assertTrue(!pi.isEnded());}/** * 测试 10天,经理,同意,老板同意,结束 */@Testpublic void testWrite_10_leader(){//开始ExecutionService es = engine.getExecutionService();ProcessInstance pi = es.startProcessInstanceByKey("Helloword");Set<String> ans = pi.findActiveActivityNames();String pid = pi.getId();assertTrue(ans != null && ans.contains("填写申请"));//填写请假单Map<String,Object> map = new HashMap<String,Object>();map.put("day", 10);map.put("reason", "请假");pi = es.signalExecutionById(pid, map);ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("经理审批"));//经理审批pi = es.signalExecutionById(pid,"同意");ans = pi.findActiveActivityNames();assertTrue(ans != null && ans.contains("老板审批"));//老板审批pi = es.signalExecutionById(pid,"同意");assertTrue(pi.isEnded());}}
定义的JPDL文件:
<?xml version="1.0" encoding="UTF-8"?><process name="Helloword" xmlns="http://jbpm.org/4.4/jpdl" version="1"> <start g="338,30,48,48" name="start"> <transition g="-49,-18" name="to state" to="填写申请"/> </start> <state g="319,119,92,52" name="填写申请"> <transition to="经理审批"/> </state> <state g="322,300,92,52" name="经理审批"> <transition g="-68,-18" name="同意" to="exclusive"/> <transition g="243,328;240,148:-49,-18" name="驳回" to="填写申请"/> </state> <state g="535,447,92,52" name="老板审批"> <transition g="-42,-18" name="同意" to="end"/> <transition name="驳回" to="填写申请" g="587,146:-66,-18"/> </state> <decision expr="${day > 5 ? '天数大于5天' : '天数小于5天'}" g="343,422,48,48" name="exclusive"> <transition g="-49,-18" name="天数大于5天" to="老板审批"/> <transition g="-42,-18" name="天数小于5天" to="end"/> </decision> <end g="347,592,48,48" name="end"/></process>
JBPM的POM文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.leweiyou</groupId><artifactId>jbpm-test</artifactId><version>1.0.0-SNAPSHOT</version><properties><jbpm.version>4.4</jbpm.version></properties><dependencies><!-- JBPM 4 --> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-api</artifactId> <version>${jbpm.version}</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-jpdl</artifactId> <version>${jbpm.version}</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-pvm</artifactId> <version>${jbpm.version}</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-bpmn</artifactId> <version>${jbpm.version}</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-log</artifactId> <version>${jbpm.version}</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-db</artifactId> <version>${jbpm.version}</version> <exclusions> <exclusion> <groupId>hsqldb</groupId> <artifactId>hsqldb</artifactId> </exclusion> <exclusion> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </exclusion> <exclusion> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> </exclusion> </exclusions> </dependency><dependency><groupId>org.jbpm.jbpm4</groupId><artifactId>jbpm-test-base</artifactId><version>${jbpm.version}</version></dependency> <!-- Spring Framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>2.5.6</version> </dependency> <!-- MySQL JDBC --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.2</version> </dependency> <!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>3.6.10.Final</version></dependency> <!-- java mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version></dependency> <!-- Logging --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <!-- Commons API --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId>juel</groupId> <artifactId>juel-impl</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>juel</groupId> <artifactId>juel-api</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>juel</groupId> <artifactId>juel-engine</artifactId> <version>2.1.0</version> </dependency> <!-- Velocity --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.6.3</version> </dependency> <dependency> <groupId>org.apache.velocity.tools</groupId> <artifactId>velocity-tools</artifactId> <version>2.0-alpha1</version> </dependency> <!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>test</scope> </dependency> <!-- test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.4</version> <scope>test</scope> </dependency></dependencies></project>
0 0
- JBPM实现请假流程
- 一个Jbpm员工请假流程的实例
- 一个Jbpm员工请假流程的实例
- 一个Jbpm员工请假流程的实例
- 初学JBPM—简单的请假流程
- 初学JBPM—简单的请假流程
- JBPM学习(4):设计请假流程
- jbpm 通用流程设计,请假大家
- JBPM之流程定义基本概念(通过请假流程进行解释)
- jbpm 定义请假流程 编程发布流程文件
- activiti实现的请假流程
- 一个Jbpm员工请假流程的实例源代码下载
- jbpm工作流之简单请假流程例子(源码)
- 请假流程
- 请假流程
- JBPM4基础篇04-设计请假流程,JBPM集成到Web Project
- jbpm学习笔记(四)--请假流程的设计(1)
- jbpm学习笔记(五)--请假流程的设计(2)
- 架构系统设计能力,模块设计能力
- Kernel 心路历程 模块编写
- flume-ng负载均衡load-balance、failover集群搭建
- spoj687 REPEATS - Repeats (后缀数组+rmq)
- 微信商城开发:本地服务器的环境配置 (内附花生壳内网映射教程)
- JBPM实现请假流程
- 一键清理Eclipse版
- solr配置文件
- OKHttp 简介
- idea控制台乱码解决办法
- php中curl的详细解说
- LeanCloud推送
- Websocket之协议简单了解
- webStorm创建站点