本章就记录框架搭建到系统启动为止

一、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_INT11
PROJECT_RELEASE_VERSION_VARCHAR255

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

这边只是为了启动项目,实际开发中,用户应该是有一套自己的维护逻辑的。

12-22 02:39