SpringBoot2集成Activiti6
Activiti是领先的轻量级的,以Java为中心的开源BPMN(Business Process Modeling Notation)引擎,实现了真正的流程自动化。下面介绍如何在SpringBoot环境下使用Maven集成Activiti6,来实现流程开发。
添加依赖
-
<dependency>
-
<groupId>org.activiti</groupId>
-
<artifactId>activiti-spring-boot-starter-basic</artifactId>
-
<version>6.0.0</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-jdbc</artifactId>
-
</dependency>
添加Processes目录
SpringBoot集成activiti默认会从classpath下的processes目录下读取流程定义文件,所以需要在src/main/resources目录下添加processes目录,并在目录中创建流程文件,添加目录后,目录结构变为:
如果没有processes目录,则需要修改配置spring.activiti.process-definition-location-prefix,指定流程文件存放目录。
Spring集成Activiti6默认支持**.bpmn20.xml和**.bpmn格式的流程定义文件,修改支持的文件格式,通过配置spring.activiti.process-definition-location-suffixes修改
如:
-
spring:
-
activiti:
-
check-process-definitions: true #自动检查、部署流程定义文件
-
database-schema-update: true #自动更新数据库结构
-
process-definition-location-prefix: classpath:/processes/ #流程定义文件存放目录
-
#process-definition-location-suffixes: #流程文件格式
-
# - **.bpmn20.xml
-
# - **.bpmn
启动项目时,如果没有流程部署,就不能通过自动注入,使用RuntimeService等API,依赖注入时后报错。
ActivitiProperties中定义了activiti的自动配置项,其他配置请查看ActivitiProperties属性。
添加数据源
添加数据源,项目中添加数据源,初始化数据库结构,后续保存流程数据,
-
spring :
-
#data source config
-
datasource :
-
driver : com.mysql.jdbc.Driver
-
url: jdbc:mysql://192.168.105.10:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
-
username : root
-
password : mysql
-
initsize : 10
-
maxActive : 20
-
minIdle : 10
-
maxWait : 120000
-
poolPreparedStatements : false
-
maxOpenPreparedStatements : -1
-
validationQuery : select 1
-
testOnborrow : true
-
testOnReturn : true
-
testWhileIdle : true
-
timeBetweenEvictionRunsMillis : 120000
-
filters : log4j,stat
添加流程
在项目中添加流程,创建文件simple.bpmn,添加内容
-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-
<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="Examples" 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="m1539757531057" name="" targetNamespace="Examples" typeLanguage="http://www.w3.org/2001/XMLSchema">
-
<process id="oneTaskProcess" isClosed="false" name="The One Task Process" processType="None">
-
<startEvent id="theStart"/>
-
<sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask"/>
-
<userTask activiti:assignee="${user}" activiti:exclusive="true" id="theTask" name="my task"/>
-
<sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd"/>
-
<endEvent id="theEnd"/>
-
</process>
-
</definitions>
启动测试
编写SpringBoot启动类,启动项目,启动项目。
-
@SpringBootApplication(scanBasePackages = "com.legao.server")
-
@EnableSwagger2
-
public class WorkflowServer {
-
-
public static void main(String[] args) {
-
-
SpringApplication.run(WorkflowServer.class, args);
-
}
-
}
启动时,发现启动报错,
-
Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
-
-
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
查看activiti-spring-boot-starter-basic-6.0.0.jar发现,org.activiti.spring.boot.SecurityAutoConfiguration编译报错,这时候将SecurityAutoConfiguration排除到SpringBoot启动之外,即@SpringBootApplication注解添加exclude = SecurityAutoConfiguration.class属性
-
@SpringBootApplication(scanBasePackages = "com.legao.server", exclude = SecurityAutoConfiguration.class)
-
@EnableSwagger2
-
public class WorkflowServer {
-
-
public static void main(String[] args) {
-
-
SpringApplication.run(WorkflowServer.class, args);
-
}
-
}
再启动发现启动正常,这时候SpringBoot集成activiti已经启动成功,查看数据库,Activiti6运行所需的28张表也已经创建成功。
-
ACT_EVT_LOG
-
ACT_GE_BYTEARRAY
-
ACT_GE_PROPERTY
-
ACT_HI_ACTINST
-
ACT_HI_ATTACHMENT
-
ACT_HI_COMMENT
-
ACT_HI_DETAIL
-
ACT_HI_IDENTITYLINK
-
ACT_HI_PROCINST
-
ACT_HI_TASKINST
-
ACT_HI_VARINST
-
ACT_ID_GROUP
-
ACT_ID_INFO
-
ACT_ID_MEMBERSHIP
-
ACT_ID_USER
-
ACT_PROCDEF_INFO
-
ACT_RE_DEPLOYMENT
-
ACT_RE_MODEL
-
ACT_RE_PROCDEF
-
ACT_RU_DEADLETTER_JOB
-
ACT_RU_EVENT_SUBSCR
-
ACT_RU_EXECUTION
-
ACT_RU_IDENTITYLINK
-
ACT_RU_JOB
-
ACT_RU_SUSPENDED_JOB
-
ACT_RU_TASK
-
ACT_RU_TIMER_JOB
-
ACT_RU_VARIABLE
(完)
原文地址:https://blog.csdn.net/weihao_/article/details/83241662
SpringBoot2集成Activiti6的更多相关文章
- SpringBoot2整合activiti6环境搭建
SpringBoot2整合activiti6环境搭建 依赖 <dependencies> <dependency> <groupId>org.springframe ...
- Activiti(二) springBoot2集成activiti,集成activiti在线设计器
摘要 本篇随笔主要记录springBoot2集成activiti流程引擎,并且嵌入activiti的在线设计器,可以通过浏览器直接编辑出我们需要的流程,不需要通过eclipse或者IDEA的actiB ...
- springboot集成activiti6.0多数据源的配置
最近公司开始开发springboot的项目,需要对工作流进行集成.目前activiti已经发布了7.0的版本,但是考虑到6.0版本还是比较新而且稳定的,决定还是选择activiti6.0的版本进行集成 ...
- springboot2集成pagehelper
springboot2集成pagehelper超级简单,本示例直接抄袭官方示例,仅将数据库由H2改成MySQL而已. 1. pom.xml <?xml version="1.0&quo ...
- UidGenerator springboot2集成篇
uid-generator 官网集成文档: https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md 由于并没有提供spri ...
- SpringBoot2 集成三种连接池 c3p0 hikari druid
Hikari 1.首先集成 hikari springboot默认集成,只需要简单的配置即可 1.1 首先导入包 <dependency> <groupId>com.zaxxe ...
- SpringBoot2 集成日志,复杂业务下的自定义实现
本文源码:GitHub·点这里 || GitEE·点这里 一.日志体系集成 1.日志管理 在系统的开发中,最关键的一个组件工具就是日志,日志打印方便问题排查,或者生产事故回溯,日志记录用来监控并分析系 ...
- SSM集成activiti6.0错误集锦(一)
项目环境 Maven构建 数据库:Orcle12c 服务器:Tomcat9 <java.version>1.8</java.version> <activiti.vers ...
- springboot2集成activiti出错
报一个反射错误 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 解决方案:http ...
随机推荐
- 洛谷P2982 [USACO10FEB]慢下来Slowing down [2017年四月计划 树状数组01]
P2982 [USACO10FEB]慢下来Slowing down 题目描述 Every day each of Farmer John's N (1 <= N <= 100,000) c ...
- 传统保险企业基于 Dubbo 的微服务实践
本文整理自中国人寿保险(海外)股份有限公司深圳中心技术总监家黄晓彬在 Dubbo 社区开发者日深圳站的现场分享. 中国人寿保险(海外)股份有限公司负责香港.澳门.新加坡和印尼的业务开发,和国内业务不同 ...
- Quick BI取数模型深度剖析
开发图表最关键的点在于选择准确的图表类型展示准确的数据,而准确的数据往往依赖于一个强大的取数模型,因此设计一个好的取数模型不仅可以解决数据安全的问题,更可以帮助每个访问者高效触达自己想要的数据,开发者 ...
- 六.随机神经网络Boltzmann(玻尔兹曼机)
Hopfield网络具有最优计算功能,然而网络只能严格按照能量函数递减方式演化,很难避免伪状态的出现,且权值容易陷入局部极小值,无法收敛于全局最优解. 如果反馈神经网络的迭代过程不是那么死板,可以在一 ...
- DataIntputStream / DataOutputStream 类
1. DataInputStream类(熟悉) (1)基本概念 java.io.DataInputStream类用于读取java中的基本数据类型. (2)常用的方法 DataInputStre ...
- OSGi Capabilities
OSGi bundle的Capability就是这个bundle所具有的能力. 就像淘宝上的每个店铺一样,它会说明自己都卖哪些东西,也就是Provide-Capability 我们这些剁手党就会根据自 ...
- CMake学习笔记四-CMake常用命令
CMake常用命令 PROJECT PROJECT(projectname [CXX] [C] [Java]) 指定工程名称,并可指定工程支持的语言.支持语言列表可忽略,默认支持所有语言 SET ...
- DTcms设置 IIS6.0设置url重写导致editor上传全部失效
1.修改iis的重写规则为htm 2.修改后台后缀为htm 解决
- 值得研究的J2EE开源项目推荐
导读:笔者在学习J2EE的过程中发现了一些很有用,而且很值得学习的开源项目,在此推荐给大家. 关键词:J2EE 开源项目 J2SE JBoss SOA EJB 这篇文章写在我研究J2SE.J2EE ...
- 10种简单的Java性能优化(转)
本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加入翻译小组.转载请见文末要求. 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了 ...