Activity7环境搭建 IDEA Mysql

目录

建议

开发环境需要JDK8或以上,需要一个数据库保存流程定义数据,建议mysql5或以上

绘制BPMN的工具

IDEA插件市场直装

常用开发工具比如IDEA,在其中安装activity的流程定义工具actiBPM

如果是2019.1之前版本的IDEA,可以在插件市场直接搜索到

由于actiBPM不更新了,2019.1之后的IDEA无法直接搜到,需要去jetBrain的插件市场plugins.jetBrains.com搜索actiBPM插件,下载到本地后,从本地安装插件

安装好之后,就可以在文件目录右键创建BPMN文件

网站下载再本地安装

http://plugins.jetbrains.com/,搜索需要的插件。

下载完毕,进行安装,打开IDEA,settings--->plugins:

导入插件之后,然后重启:

准备java项目环境

maven工程

如果项目不是spring boot,那么就在IDEA创建一个标准的maven工程,在pom依赖文件中写自己业务需要的各种依赖

目录结构如下

  • 依赖 太长折叠了

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.lwl</groupId>
        <artifactId>activitiDEMO</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <slf4j.version>1.6.6</slf4j.version>
            <log4j.version>1.2.12</log4j.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-engine</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-spring</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-model</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-converter</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-json-converter</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-layout</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti.cloud</groupId>
                <artifactId>activiti-cloud-services-api</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.40</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <!-- log start -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- log end -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
        </dependencies>
    
    </project>
    

spring boot工程

如果项目是spring boot项目,那么直接在maven就能引入各种需要的依赖,Activiti7正式版发布后,就已经支持与SpringBoot2.X版本完全整合开发了。

核心的依赖就是org.activiti:activiti-spring-boot-starter

  • 依赖 太长折叠了

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>ActivitiDemo</artifactId>
            <groupId>com.roy</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>ActSpringBootDemo</artifactId>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>2.1.0.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-spring-boot-starter</artifactId>
                <version>${activiti.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

数据库

建库

activity能使用常见的基于JDBC的数据库,默认用内存数据库h2,但我们一般使用mysql,activity会把业务流程中每一步数据都保存在数据库中

一般建议单独创建一个数据库给它使用,比如下图中localhost连接下的activity数据库,做到业务和数据分开,但也不是一定要这样

使用查询,创建一个单独的数据库

CREATE DATABASE activiti DEFAULT CHARACTER SET utf8

配置xml

非spring boot项目 配置activity.cfg.xml

activity需要依赖的业务表有25张,activity没有提供sql语句直接创建表,但是activity提供了其他工具帮我们生成所需的表

在项目的resource目录下(也就是整个Java项目打包好后的classpath目录下)创建一个xml配置文件,建议使用activity.cfg.xml,这样后面调用xml时不需要指定别名,然后在里面写activity的配置信息

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
    <!--数据库连接池dbcp -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/保存activiti表的库名" />
        <property name="username" value="数据库的账号" />
        <property name="password" value="数据库的密码" />
    </bean>

    <bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 数据库策略 -->
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>
</beans>

这里面简单配置了两个bean标签

  1. dataSource

    配置数据库连接池dbcp,让activity能连接到指定的数据库

  2. processEngineConfiguration

    activity提供的核心配置类,其中的property

    • dataSource说明要引用的数据源,其实就是上方配置的数据库连接池

    • databaseSchemaUpdate可用参数如下,这个值默认为false,第一次使用activity时可以写为true,后面再使用时建议改回false

      1. false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。

      2. true: 构建流程引擎时,检查activity的数据库表结构是否合适, 如果表不存在就创建。

      3. create-drop: 每次启动activity时创建表,结束时删除表,这样工作流的数据就只是缓存在数据库中。

      4. drop-create:先删除表再创建表。

      5. create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。

spring boot项目

  1. 先在application.yml里配置

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
        username: root
        password: root
      activiti:
        #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
        #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
        #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
        #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
        database-schema-update: true
        #activiti7默认不生成历史信息表,开启历史表
        db-history-used: true
        #记录历史等级 可配置的历史级别有none, activity, audit, full
        #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
        #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
        #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
        #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
        history-level: full
        check-process-definitions: true
    
  2. 然后编写启动类

    @SpringBootApplication
    public class ActApplication {
        public static void main(String[] args) {
            SpringApplication.run(ActApplication.class,args);
        }
    }
    

配置log4j.properties

非spring boot项目

放在项目的resource目录下(也就是整个Java项目打包好后的classpath目录下)

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=E:\act\activiti.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n

spring boot项目

直接在application.yml里就配置好了

建表

activity基于刚才配置的xml信息,可以创建 ProcessEngineConfiguration,再基于这个对象,创建 ProcessEngine,创建ProcessEngine时就会自动创建数据库。

//创建ProcessEngineConfiguration 如果配置文件名不叫activity.cfg.xml 就要手动指定配置文件名以及配置文件中bean标签的id
ProcessEngineConfiguration configuration =ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml")

//通过ProcessEngineConfiguration创建ProcessEngine,此时会创建数据库
ProcessEngine processEngine =configuration.buildProcessEngine();

执行完后,数据库中就有表了

表说明

创建出了25张核心表,这25张表支撑起了整个工作流引擎,弄清楚每张表的作用是一个难点,现在只需要了解其中几张

反过来想,要是需要用户把每张表都了解清楚,都去写对应的增删查改、DAO、service,那还要工作引擎干啥,这种操作表、管理表的事情就是工作引擎干的活

所有的表都是act开头,第二个字段表示表的属性:

  • re:保存流程定义相关的信息

  • ru:保存流程运行时各个节点产生的信息,包括任务、变量

  • hi:保存所有的历史信息

  • ge:保存通用信息

posted @ 2022-11-08 13:55  夏·舍  阅读(113)  评论(0编辑  收藏  举报