本章就记录框架搭建到系统启动为止
一、Activiti
介绍啥的不多说了,百度很多。
这边复制一段,Activiti是基于Apache许可的开源BPM平台,是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
这边主要是在研究工作流的时候尝试去使用一下它。
二、准备工作
由于之前自己在研究阿里的spring cloud框架,所以直接拿之前的demo拿来集成了。
spring boot版本为2.1.6.RELEASE,acticiti的版本为7.1.0.M5。
1、Maven依赖
以下是父pom文件内容,spring cloud部分可以忽略,实际只要搭建一个spring boot的基础框架,再进行开发即可。
<properties> <java.version>11</java.version> <activiti-dependencies.version>7.1.0.M5</activiti-dependencies.version> <mysql-connector>5.1.35</mysql-connector> <mybatis-spring-boot>1.3.2</mybatis-spring-boot> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.9.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-dependencies</artifactId> <version>${activiti-dependencies.version}</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Activiti依赖 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>${activiti-dependencies.version}</version> </dependency> <!-- Activiti生成流程图 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-image-generator</artifactId> <version>${activiti-dependencies.version}</version> </dependency> <!-- mybatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot}</version> </dependency> <!--mysql connector--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>alfresco</id> <name>Activiti Releases</name> <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories>
2、数据库配置
官方的入门文档中使用了H2作为数据库,这边参照实际项目,使用mysql作为数据库,主要是activiti一列,系统启动时会自动生成activiti的相关表。
以下是application.yaml中数据库部分配置:
spring: application: name: demo datasource: # 数据源配置 url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false username: **** password: **** driver-class-name: com.mysql.jdbc.Driver activiti: # 自动建表 database-schema: activiti database-schema-update: true history-level: full db-history-used: true
这里在实际操作中遇到了一些问题,在引入依赖与配置好数据库,直接尝试启动项目时,报了以下错误:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'VERSION_' in 'field list'
在对比数据库自动生成的表结构后发现,ACT_RE_DEPLOYMENT表没有VERSION_和PROJECT_RELEASE_VERSION_两个字段,具体原因不明,调整过一些参数也没有效果,这边手动给这张表添加了这两个字段后才启动成功。
VERSION_ | INT | 11 |
PROJECT_RELEASE_VERSION_ | VARCHAR | 255 |
3、其他问题
启动时可能还会报SpringSecurity与Activiti的相关报错,我这边直接引了官方的配置,如果不需要的话也可以直接把Activiti中Security的相关配置排掉。
这边贴两个类,官方的example中也有,可参考https://github.com/Activiti/activiti-examples/tree/master/activiti-api-basic-full-example-bean/src/main/java/org/activiti/examples下的SecurityUtil.java和DemoApplicationConfiguration.java。
这边只是为了启动项目,实际开发中,用户应该是有一套自己的维护逻辑的。