Activiti5 入门学习整理

项目结构

pom.xml 

1 <dependency> 2 <groupId>org.activiti</groupId> 3 <artifactId>activiti-spring</artifactId> 4 <version>5.19.0.2</version> 5 </dependency> 6 7 <dependency> 8 <groupId>org.activiti</groupId> 9 <artifactId>activiti-bpmn-model</artifactId> 10 <version>5.19.0.2</version> 11 </dependency> 12 13 <dependency> 14 <groupId>mysql</groupId> 15 <artifactId>mysql-connector-java</artifactId> 16 <version>5.1.38</version> 17 </dependency>

Activiti.cfg.xml --生成所需流程表

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 7 <bean id="processEngineConfiguration" 8 class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 9 10 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act" /> 11 <property name="jdbcDriver" value="com.mysql.jdbc.Driver" /> 12 <property name="jdbcUsername" value="root" /> 13 <property name="jdbcPassword" value="root" /> 14 15 <property name="databaseSchemaUpdate" value="true" /> 16 17 </bean> 18 19</beans>

流程bpmn文件

1<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="http://www.activiti.org/testm1480857817152" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1480857817152" name="" targetNamespace="http://www.activiti.org/testm1480857817152" typeLanguage="http://www.w3.org/2001/XMLSchema"> 3 <process id="myProcess_1" isClosed="false" isExecutable="true" name="act1" processType="None"> 4 <startEvent id="_2" name="StartEvent"/> 5 <userTask activiti:assignee="comp" activiti:exclusive="true" id="_3" name="actTask"> 6 <extensionElements> 7 <activiti:executionListener event="start"/> 8 <activiti:formProperty/> 9 </extensionElements> 10 </userTask> 11 <endEvent id="_4" name="EndEvent"/> 12 <sequenceFlow id="_5" sourceRef="_3" targetRef="_4"/> 13 <sequenceFlow id="_6" sourceRef="_2" targetRef="_3"/> 14 </process> 15 16</definitions>

流程图片

测试方法

1public class actCreateTable { 2 3 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 4 5 // 创建流程所需表 6 @Test 7 public void createTableForAct(){ 8 9 // 引擎配置 创建activiti的25张表 10 ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); 11 // 获取流程引擎对象 12 ProcessEngine processEngine = configuration.buildProcessEngine(); 13 } 14 15 // 部署流程 16 @Test 17 public void deploy(){ 18 Deployment deployment = processEngine.getRepositoryService() // 获取部署相关的service 19 .createDeployment() // 创建部署 20 .addClasspathResource("diagrams/myActPro.bpmn")// 加载资源文件 21 .name("actTask") 22 .deploy(); // 部署文件 23 24 System.out.println("流程的ID:"+deployment.getId()); 25 System.out.println("流程的Name:"+deployment.getName()); 26 } 27 28 //开始运行流程 29 @Test 30 public void runTask(){ 31 ProcessInstance processInstance = processEngine.getRuntimeService() 32 .startProcessInstanceByKey("myProcess_1"); 33 System.out.println("流程实例ID:"+processInstance.getId()); 34 System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId()); 35 36 37 } 38 39 // 进行任务流程 走到任务节点 40 @Test 41 public void finishTask(){ 42 List<Task> list = processEngine.getTaskService() 43 .createTaskQuery() 44 .taskAssignee("comp") // 指定委托人 查看当前委托人的所有流程 45 .list(); 46 for(Task task : list){ 47 System.out.println("任务ID:"+task.getId()); 48 System.out.println("任务名称:"+task.getName()); 49 System.out.println(String.format( "任务创建时间:" +task.getCreateTime(), "yyyy-MM-DD")); 50 System.out.println("任务委托人:"+task.getAssignee()); 51 System.out.println("流程实例ID:"+task.getProcessDefinitionId()); 52 } 53 System.out.println("任务ID:"+list); 54 55 } 56 57 // 走完流程 end 58 @Test 59 public void tory(){ 60 processEngine.getTaskService() // 任务相关Service 61 .complete("7504"); // 指定要完成的任务ID 62 } 63 64}

流程的curd

1public class ActCurd { 2 3 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 4 5 //通过流程部署id获得流程图片 6 @Test 7 public void actQueryById() throws IOException { 8 InputStream in = processEngine.getRepositoryService() 9 // 通过流程ID和流程资源名称获得输入流 10 .getResourceAsStream("5001","diagrams/myActPro.myProcess_1.png"); 11 // 将图片存放在D盘中 12 FileUtils.copyInputStreamToFile(in,new File("d://activit.png")); 13 } 14 15 // 查询流程定义的集合 -- 查询流程的最高版本 16 @Test 17 public void actQueryList(){ 18 List<ProcessDefinition> listPro = processEngine.getRepositoryService() // 获取service 19 .createProcessDefinitionQuery() //创建流程定义查询 20 .orderByProcessDefinitionVersion().asc() // 通过流程版本的升序来查询 21 .list(); 22 // 定义一个有序的map 相同的key 假如添加map的值 后面的值会覆盖前面相同key的值 23 Map<String,ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>(); 24 //遍历集合 根据key来覆盖前面的值 来保证最新的Key覆盖前面的所有老的Key的值 25 for (ProcessDefinition pro : listPro){ 26 map.put(pro.getKey(),pro); 27 } 28 // 定义一个有序的list 来保证最新的Key覆盖前面的所有老的Key的值 29 List<ProcessDefinition> list = new LinkedList<ProcessDefinition>(map.values()); 30 // 遍历list 31 for (ProcessDefinition pro : list){ 32 System.out.println("ID_:"+pro.getId()); 33 System.out.println("NAME_:"+pro.getName()); 34 System.out.println("KEY_:"+pro.getKey()); 35 System.out.println("VERSION_:"+pro.getVersion()); 36 System.out.println("==================="); 37 } 38 } 39 //流程定义的删除 40 @Test 41 public void actDelete(){ 42 List<ProcessDefinition> listPro = processEngine.getRepositoryService() 43 .createProcessDefinitionQuery() 44 .processDefinitionKey("act2") // 通过key 来进行删除 45 .list(); 46 47 // 遍历list 48 for (ProcessDefinition pro : listPro){ 49 processEngine.getRepositoryService() 50 // true 设置级联删除,相关表数据全部删除 通过部署id 来删除 51 .deleteDeployment(pro.getDeploymentId(),true); 52 } 53 } 54 55 56}
点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

redhat 6.5 tomcate 配置

一、上传Tomcat服务器  !(https://static.oschina.net/uploads/space/2016/0929/164003_qBWh_914393.png)  !(https://static.oschina.net/uploads/space/2016/0929/164002_HoE2_

H5接入app准入报告

功能标准!(http://static.oschina.net/uploads/space/2016/0725/160658_qiJY_1032182.png)!(http://static.oschina.net/uploads/space/2016/0725/160850_gQgJ_1032182.png)iPhone性能标准!

15道非常经典的Java面试题

试题如下:!(http://static.oschina.net/uploads/space/2016/0729/022902_IBMr_121944.jpg)!(http://static.oschina.net/uploads/space/2016/0729/022923_Exeo_121944.jpg)!(http://static.o

AngularJS 学习笔记 (六) 基本概念和用法 之 Service与Provider

1、使用$http服务!(http://static.oschina.net/uploads/space/2016/0623/092916_7mPM_199513.gif)HTML代码:!(http://static.oschina.net/uploads/space/2016/0623/093044_Y

Num71 资金债权匹配(撮合)

待匹配资金查询分析:!(http://static.oschina.net/uploads/space/2016/0712/224621_yxKh_2356966.png)待匹配资金查询表结构分析:!(http://static.oschina.net/uploads/space/20

Activiti5 入门学习整理 - HelloWorld