1.详细查看github的代码

https://github.com/mx342/luceneDemo

2.pom文件

<?xml version="1.0" encoding="UTF-8"?>
<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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.cyjz</groupId><artifactId>activiti</artifactId><version>0.0.1-SNAPSHOT</version><name>activiti</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><activiti.version>7.0.0.Beta1</activiti.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.11</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-model</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-converter</artifactId><version>${activiti.version}</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-json-converter</artifactId><version>7.0.0.GA</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-layout</artifactId><version>7.0.0.GA</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.0.4</version><exclusions><exclusion><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-autoconfigure</artifactId></exclusion><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3.conf配置(本案例使用的是springboot)

activiti配置

package com.cyjz.activiti.config;import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;import javax.sql.DataSource;//import org.activiti.spring.SpringProcessEngineConfiguration;/*** Created by liuruijie on 2017/2/20.* activiti工作流配置*/
@Configuration
public class Cfg_Activiti {//流程配置,与spring整合采用SpringProcessEngineConfiguration这个实现@Beanpublic ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager){SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();processEngineConfiguration.setDataSource(dataSource);processEngineConfiguration.setDatabaseSchemaUpdate("true");processEngineConfiguration.setDatabaseType("mysql");processEngineConfiguration.setTransactionManager(transactionManager);//        流程图字体
//        processEngineConfiguration.setActivityFontName("宋体");
//        processEngineConfiguration.setAnnotationFontName("宋体");
//        processEngineConfiguration.setLabelFontName("宋体");return processEngineConfiguration;}//流程引擎,与spring整合使用factoryBean@Beanpublic ProcessEngineFactoryBean processEngine(ProcessEngineConfiguration processEngineConfiguration){ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();processEngineFactoryBean.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);return processEngineFactoryBean;}//八大接口@Beanpublic RepositoryService repositoryService(ProcessEngine processEngine){return processEngine.getRepositoryService();}@Beanpublic RuntimeService runtimeService(ProcessEngine processEngine){return processEngine.getRuntimeService();}@Beanpublic TaskService taskService(ProcessEngine processEngine){return processEngine.getTaskService();}@Beanpublic HistoryService historyService(ProcessEngine processEngine){return processEngine.getHistoryService();}
//7里面已经删除了
//    @Bean
//    public FormService formService(ProcessEngine processEngine){
//        return processEngine.getFormService();
//    }
//
//    @Bean
//    public IdentityService identityService(ProcessEngine processEngine){
//        return processEngine.getIdentityService();
//    }@Beanpublic ManagementService managementService(ProcessEngine processEngine){return processEngine.getManagementService();}@Beanpublic DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine){return processEngine.getDynamicBpmnService();}//八大接口 end
}

数据源配置:

package com.cyjz.activiti.config;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import tk.mybatis.spring.annotation.MapperScan;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.cyjz.activiti.pojo.dao.mapper")
public class DataSourceOneConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")@Primary //设置主数据源1public DataSource dataSource(){return new DruidDataSource();}//      @Bean(name = "sqlSessionFactory")
//    @Primary
//    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)throws Exception{
//        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
//        bean.setDataSource(dataSource);
//        bean.setConfigLocation(new DefaultResourceLoader().getResource("classpath:mybatis/mybatis-config.xml"));
//        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*.xml"));
//        return bean.getObject();
//    }
//
//    @Bean(name = "sqlSessionTemplate")
//    @Primary
//    public SqlSessionTemplate sqlSessionTemplateOne(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory)throws Exception{
//        return new SqlSessionTemplate(sqlSessionFactory);
//    }}

yml配置:

spring:autoconfigure:exclude:- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfigurationdatasource:#第一个数据源username: rootpassword: mysql#    url: jdbc:mysql://120.26.82.31:3306/tianyou?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=trueurl: jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC
#    url: jdbc:mysql://47.111.69.10:3306/tianyou?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=truedriver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truehostIp: 120.77.223.232dbName: tianyou

4.demo代码

package com.cyjz.activiti;import org.activiti.engine.*;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricActivityInstanceQuery;
import org.activiti.engine.history.HistoricDetailQuery;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import sun.nio.ch.IOUtil;import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.zip.ZipInputStream;@RunWith(SpringRunner.class)
@SpringBootTest
public class ActivitiApplicationTests {@AutowiredProcessEngine processEngine;@AutowiredProcessEngineConfiguration processEngineConfiguration;/*** 作者 ZYL* 功能描述 : 生成表,整个程序只需要执行一次* 日期 2019/5/3 11:22* 参数* 返回值 void*/@Testpublic void testGeTable(){
//        1.创建processEngineConfiguration对象
//        @Autowired
//        2.创建processEngine对象ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
//        processEngine.get//3.输出processEngine对象System.err.println(processEngine);}/*** 作者 ZYL* 功能描述 : 流程定义4步骤* 日期 2019/5/3 19:38  * 参数 * 返回值 void*/@Testpublic void processDefine() {//1.获得activiti相关serviceRepositoryService repositoryService = processEngine.getRepositoryService();
//        System.err.println(repositoryService);//2.createDeployment方法进行部署Deployment deploy = repositoryService.createDeployment().addClasspathResource("static/diagram/holiday.png").addClasspathResource("static/diagram/holiday.bpmn").name("请假申请").deploy();//3.输出部署的一些信息System.err.println("流程部署id:" + deploy.getId());System.err.println("流程部署名称:" + deploy.getName());}/*** 作者 ZYL* 功能描述 : 启动流程实例,前提是已经完成流程定义的部署工作* 背后影响的表:*  act_hi_actinst  已完成的活动实例*  act_hi_identitylink 参与者信息*  act_hi_procinst  流程实例*  act_hi_taskinst  任务实例*  act_ru_execution 执行表*  act_ru_identitylink 参与者信息*  act_ru_task 任务* 日期 2019/5/3 20:03  * 参数 * 返回值 void*/@Testpublic void startProcessInstance(){//1.获取runtimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();//2.根据流程定义key启动流程,此处需要知道流程定义的keyProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday");//3.输出实例相关信息System.err.println("流程部署id:" + processInstance.getDeploymentId());System.err.println("流程实例id:" + processInstance.getId());System.err.println("流程定义id:" + processInstance.getProcessDefinitionId());System.err.println("流程活动id:" + processInstance.getActivityId());}/*** 作者 ZYL* 功能描述 : 查询用户的任务列表,天佑里面使用的是用户工号* 日期 2019/5/3 20:29  * 参数 * 返回值 void*/@Testpublic void findPersonalTaskList(){//1.任务负责人String assignee = "zhangsan";//2.创建TaskServiceTaskService taskService = processEngine.getTaskService();List<Task> list = taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee(assignee).list();//任务列表的展示for (Task task : list) {System.err.println("流程实例id:" + task.getProcessInstanceId());System.err.println("任务id:" + task.getId());System.err.println("任务责任人:" + task.getAssignee());System.err.println("任务名称:" + task.getName());System.err.println("======================");}}/** 作者 ZYL* 功能描述 : 处理任务完成任务* 操作的表:*  act_hi_actinst*  act_hi_identitylink*  act_hi_taskinst*  act_ru_execution*  act_ru_identitylikn*  act_ru_task* 日期 2019/5/3 20:36* 参数* 返回值 void*/@Testpublic void completTask(){//任务id 测试为:2505,5005String taskId = "22502";//创建TaskServiceTaskService taskService = processEngine.getTaskService();//完成任务taskService.complete(taskId);System.err.println("完成任务id:" + taskId);}/*** 作者 ZYL* 功能描述 : zip方式部署流程* 日期 2019/5/3 21:24* 参数* 返回值 void*/@Testpublic void deployProcessByZip(){//定义zip输入流InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("static/diagram/holiday.zip");ZipInputStream zipInputStream = new ZipInputStream(inputStream);//获取repositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();//流程部署Deployment deployment = repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy();System.err.println("流程部署id:" + deployment.getId());System.err.println("流程部署名称:" + deployment.getName());}/*** 作者 ZYL* 功能描述 : 流程定义的查询* 日期 2019/5/3 22:15* 参数* 返回值 void*/@Testpublic void queryProceccDefinition(){//流程定义String processDefinitionKey = "holiday";//获取repositorySericeRepositoryService repositoryService = processEngine.getRepositoryService();//查询流程定义ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();//遍历查询结果List<ProcessDefinition> list = processDefinitionQuery.processDefinitionKey(processDefinitionKey).orderByProcessDefinitionVersion().desc().list();for (ProcessDefinition processDefinition : list) {System.err.println("------------------");System.err.println("流程部署id:" + processDefinition.getId());System.err.println("流程定义名称:" + processDefinition.getName());System.err.println("流程定义key:" + processDefinition.getKey());System.err.println("流程定义版本:" + processDefinition.getVersion());System.err.println("流程部署的id:" + processDefinition.getDeploymentId());}}/*** 作者 ZYL* 功能描述 : 删除已经部署成功的流程定义* 日期 2019/5/3 22:32* 参数* 返回值 void*/@Testpublic void deleteDeployment(){//流程部署idString deploymentId = "15001";//通过流程引擎获取repositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();//删除流程定义,如果该流程定义已经有流程实例启动则删除时出错repositoryService.deleteDeployment(deploymentId);//设置true级联删除流程定义,即时该流程有流程实例启动也可以删除,设置为false非级别删除方式,如果流程
//        repositoryService.deleteDeployment(deploymentId,true);}/*** 作者 ZYL* 需求:1.从activiti的act_ge_bytearray表中读取两个资源文件*      2.将两个资源文件保存到本地*      用户想要查看请假流程具体有哪些步骤要走* 技术方案:*      1.第一种:使用activiti的api来实现*      2.第二种:从原理层jdbc的blob或者clob类型读取*      3.IO流转换:最好commons-io.jar可以轻松解决* 功能描述 : 通过流程定义对象获取流程定义资源,获取bpmn和png* 日期 2019/5/3 23:15* 参数 null* 返回值*/@Testpublic void getProcessResources() throws Exception{//流程定义idString processDefinitionKey = "holiday";//获取repositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();//流程定义对象ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();//查询到流程定义ProcessDefinition processDefinition = processDefinitionQuery.processDefinitionKey(processDefinitionKey).singleResult();//获取部署idString deploymentId = processDefinition.getDeploymentId();//获取bpmn资源的名称String resource_bpmn = processDefinition.getResourceName();//获取png图片资源的名称String resource_png = processDefinition.getDiagramResourceName();
////通过repositoryService的方法,实现读取图片信息及bpmn文件信息(输入流)//getResourceAsStream,两个参数:1.表示部署id,2.表示资源名称InputStream pngIs = repositoryService.getResourceAsStream(deploymentId,resource_png);InputStream bpmnIs = repositoryService.getResourceAsStream(deploymentId,resource_bpmn);//构建outputStream流OutputStream pngOs = new FileOutputStream("E:\\BaiduNetdiskDownload\\3-1 Activiti7工作流引擎\\" + resource_png);OutputStream bpmnOs = new FileOutputStream("E:\\BaiduNetdiskDownload\\3-1 Activiti7工作流引擎\\" + resource_bpmn);//输入流,输出流的转换 commons-io的方法IOUtils.copy(pngIs,pngOs);IOUtils.copy(bpmnIs,bpmnOs);//关闭流pngIs.close();pngOs.close();bpmnIs.close();bpmnOs.close();}/*** 作者 ZYL* 功能描述 : 流程历史信息的查看* 描述:即时流程定义已经删除了,流程执行的历史信息通过前面的分析,依然保存在activiti的act_hi_*的相关表中,所以我们还是可以查询流程执行的历史信息,* 可以通过HistoryService来查看相关记录* 日期 2019/5/3 23:48  * 参数 null* 返回值*/@Testpublic void testHistory01(){//获取historyService对象HistoryService historyService = processEngine.getHistoryService();//获取查询对象HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery();//添加查询条件query.processInstanceId("17501");//执行查询List<HistoricActivityInstance> list = query.list();//遍历结果for (HistoricActivityInstance historicActivityInstance : list) {System.err.println("activitiId:" + historicActivityInstance.getActivityId());System.err.println("activitiName:" + historicActivityInstance.getActivityName());}}}

如果觉得本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行随意打赏。您的支持将鼓励我继续创作

activiti操作流程的几个demo相关推荐

  1. 【应用篇】Activiti外置表单实例demo(四)

    在这里我想说的外置表单.是说我们将我们自己的jsp(.form,.html)等页面上传到工作流的数据库中,当任务运行到当前结点时.给我们像前台发送绑定好的表单. 此处是给表单绑定表单的过程 不允许为: ...

  2. Activiti实现会签功能程序Demo

    Activiti会签功能 1.会签是什么? 会签功能指多个人员针对同一个事务进行协商处理,共同签署决定一件事情. 在工作流中会签,是指多个人员在同一个环节进行处理,同一环节的有多个处理人并行处理,按照 ...

  3. Activiti工作流框架学习笔记(一)

    工作流的概念 先看下面两张图: 对以上两张图进行说明: 假设这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰.冯小刚.王中军 事件(动作):请假.批准.不批准 通过以上分析我们就可以抽象 ...

  4. activiti 入门——activiti API (二)

    上一篇介绍了activiti,以及一个简单的demo.估计很多刚接触activiti的小伙伴还是迷迷糊糊的,这篇会详细介绍activiti API相信看完之后会为你解决之前的困惑. activiti ...

  5. Activiti 工作流入门到大神-任亮-专题视频课程

    Activiti 工作流入门到大神-16384人已学习 课程介绍         什么是流程.工作流作用.Activiti背景简介.Activiti流程设计器安装.Activity环境搭建.通过Hel ...

  6. activiti 5.22的demo运行

    activiti 5.22的demo运行 从github上clon下来的activiti项目,运行demo项目activiti-webapp-explorer2时,在使用到流程设计工作区,选取acti ...

  7. Activiti 简单demo (2)

    1.创建流程模型,工程右键-->new-->other-->activiti diagram 2.图解元素介绍: Start event:开始事件   End entit:结束事件 ...

  8. activiti工作流,审批系统轻松落地,请假审批demo从流程绘制到审批结束实例

    前言 activiti工作流,企业erp.oa.hr.crm等审批系统轻松落地,请假审批demo从流程绘制到审批结束实例. 一.项目形式 springboot+vue+activiti集成了activ ...

  9. 关于自学activiti开源流程引擎的一点点感悟和代码分享demo教程

    原文:关于自学activiti开源流程引擎的一点点感悟和代码分享demo教程 源代码下载地址:http://www.zuidaima.com/share/1765650437721088.htm 这应 ...

最新文章

  1. Docker的安装、镜像源更换与简单应用
  2. linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...
  3. 《LeetCode力扣练习》第160题 相交链表 Java
  4. 【Python基础】Python十大文件骚操作!!
  5. 腾讯蓝鲸智云社区版V6.0.3携手容器管理平台正式发布!
  6. C++(Leetcode):两数之和
  7. Spring框架----Spring的bean注解
  8. UVa10023手动开大数平方算法
  9. C++11 原生字符串
  10. 人身三流指什么_保险合同的主体是什么,主体的变更是什么?
  11. 为您的Android,iOS等应用加入声波传输功能
  12. 降级降薪去 Amazon ——左耳朵
  13. dpkg: 依赖关系问题使得 sdkmanager 的配置工作不能继续: sdkmanager 依赖于 libgconf-2-4;然而: 未安装软件包 libgconf-2-4。 [已解决]
  14. 玩转5G之--初探5G网络模型(OSI模型和TCP/IP模型)
  15. Error: spawn cmd ENOENT at Process.ChildProcess._handle.onexit
  16. 爱豆教育:掌握这7大技巧,让你的亚马逊店铺快速出单
  17. 机器人 零境交错吧_电击文库零境交错角色大全 最强角色选择推荐及属性数据汇总[多图]...
  18. 智能安防是趋势 几大重点领域深入探讨
  19. 微信彩色字体图标的使用
  20. 一文搞懂 神经辐射场(Neural Radiance Fields,NeRF)

热门文章

  1. php 初始化model,TP5 model类研究
  2. php 模板 自定义函数调用,thinkphp模板中使用自定义函数
  3. 一键就绪的VMware Cloud Foundation
  4. 虚拟化小白对VMcpu分配的理解
  5. Docker学习总结(39)——简析容器、无服务器和虚拟机的安全性差异
  6. 阿里巴巴开源技术汇总:115个软件(四)
  7. java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
  8. css中英文混排 标点,浅析css中英文混排时行高不一样的原因及其解决方法
  9. Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码
  10. php强大的函数,PHP最强大的随机字符串生成函数