本章就記錄框架搭建到系統啟動為止
一、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。
這邊只是為了啟動項目,實際開發中,用戶應該是有一套自己的維護邏輯的。