記Activiti入門使用-1(spring boot 2 + Activiti 7)


本章就記錄框架搭建到系統啟動為止

一、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.javaDemoApplicationConfiguration.java

這邊只是為了啟動項目,實際開發中,用戶應該是有一套自己的維護邏輯的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM