第3章 环境准备

目录

第3章 环境准备

3.1Activiti 环境

3.2 下载 activiti7

3.3 Activiti Designer 流程设计器(Eclipse 工具)

Eclispe 工具下插件安装方式:网络在线安装

3.4 Activiti Designer 流程设计器(IDEA 工具)

3.5创建 mysql 数据库

3.6创建表方式

3.6.1 创建 java 工程

3.6.2 加入 maven 依赖的坐标( jar 包)

3.6.3 log4j.properties

3.6.4 activiti.cfg.xml

3.6.5 编写程序

3.6.6 数据库表的命名规则


第3章 环境准备

3.1Activiti 环境

Activiti7.0.0.Beta1:默认支持 spring5

3.2 下载 activiti7

Activiti 下载地址: http://activiti.org/download.html
 

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-dependencies</artifactId>
                <version>7.0.0.Beta1</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

1) Database:activiti 运行需要有数据库的支持, 支持的数据库有: h2, mysql, oracle, postgres, mssql, db2等,该目录存放 activiti 的建表脚本。
2) Docs:Activiti 的帮助文档。
3) Wars:官方自带的示例工程。

3.3 Activiti Designer 流程设计器(Eclipse 工具)

使用 Activiti –Designer-eclipse-plugin(activiti 流程设计器插件)完成流程的制作。

Eclispe 工具下插件安装方式:网络在线安装

  1. 打开 Help -> Install New Software. 在如下面板中:
  2. 在如下 Install 界面板中,点击 Add 按钮:
  3. 然后填入下列字段:配置新装插件的地址和名称
    Name: Activiti BPMN 2.0 designer
    Location: http://activiti.org/designer/update/
  4. 回到 Install 界面,在面板正中列表中把所有展示出来的项目都勾上:
  5. 点击复选框
    在 Detail 部分记得选中 "Contact all updates sites.." , 因为它会检查所有当前安装所需要的插件并可以被 Eclipse 下载。
  6. 安装完以后,点击新建工程 new->Other…打开面板,如果看到下图内容:

说明安装成功了。

补充说明:

打开菜单 Windows->Preferences->Activiti->Save 下流程图片的生成方式:

虽然流程引擎在单独部署 bpmn 文件时会自动生成图片,但在实际开发过程中,自动生成的图片会导致和 BPMN 中的坐标有出入,在实际项目中展示流程当前位置图会有问题。所在完成以上配置后,会由我们自己来管理流程图片。在发布流程时把流程规则文件和流程图片一起上传就行了。

3.4 Activiti Designer 流程设计器(IDEA 工具)

在 IDEA 的 File 菜单中找到子菜单”Settings”,后面我们再选择左侧的“plugins”菜单,如下图所示:

此时我们就可以搜索到 actiBPM 插件,它就是 Activiti Designer 的 IDEA 版本。
安装好后,页面如下:

3.5创建 mysql 数据库

创建 mysql 数据库 activiti(名字任意):

CREATE DATABASE activiti DEFAULT CHARACTER SET utf8;

3.6创建表方式

通过运行 java 程序创建表。

3.6.1 创建 java 工程

使用 eclipse 或 idea 创建 maven 的 java 工程。

3.6.2 加入 maven 依赖的坐标( jar 包)

首先需要在 java 工程中加入 ProcessEngine 所需要的 jar 包,包括:

  1. activiti-engine-7.0.0.beta1.jar
  2. activiti 依赖的 jar 包: mybatis、 alf4j、 log4j 等
  3. activiti 依赖的 spring 包
  4. 数据库驱动
  5. 第三方数据连接池 dbcp
  6. 单元测试 Junit-4.12.jar

我们使用 maven 来实现项目的构建,所以应当导入这些 jar 所对应的坐标到 pom.xml 文件中。
 

<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</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>7.1.0.M6</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>

    <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>

3.6.3 log4j.properties

# 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=d:\\axis.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

3.6.4 activiti.cfg.xml

在 classpath 下创建 activiti.cgf.xml 文件:
 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd
						http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--数据源配置-->
    <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="root" />
        <property name="password" value="123456" />
        <property name="maxActive" value="3" />
        <property name="maxIdle" value="1" />
    </bean>

    <!--processEngineConfiguration 用来创建 ProcessEngine,在创建 ProcessEngine 时会执行数据库的操作-->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <!--代表数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--activiti数据库表处理策略:代表是否生成表结构,true代表生成-->
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

    <!--在 activiti.cfg.xml 配置文件中的 dataSource 和 processEngineConfiguration 也可以使用一次性配置出来。-->
    <!--<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"/>
        <property name="jdbcUsername" value="root"/>
        <property name="jdbcPassword" value="123456"/>
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>-->
</beans>

关于 processEngineConfiguration 中的 databaseSchemaUpdate 参数, 通过此参数设计 activiti数据表的处理策略,参数如下:

  1. false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。
  2. true: 构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建。
  3. create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。
  4. drop-create:先删除表再创建表。
  5. create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。

3.6.5 编写程序

创建 ProcessEngineConfiguration,通过 ProcessEngineConfiguration 创建 ProcessEngine,在创建ProcessEngine 时会自动创建数据库。

    /**
     * 创建 ProcessEngineConfiguration,
     * 通过 ProcessEngineConfiguration 创建 ProcessEngine,
     * 在创建ProcessEngine 时会自动创建数据库。
     */
    @Test
    public void testGenTable(){
        // 1、创建ProcessEngineConfiguration对象
        ProcessEngineConfiguration configuration = ProcessEngineConfiguration.
                createProcessEngineConfigurationFromResource("activiti.cfg.xml");

        // 2、创建ProcessEngine对象
        ProcessEngine processEngine = configuration.buildProcessEngine();

        // 3、输出processEngine对象
        System.out.println(processEngine);
    }

执行以上代码,我们查看数据库, 创建了 25 张表

说明:

  1. 运行以上程序段即可完成 activiti 数据库创建,通过改变 activiti.cfg.xml 中databaseSchemaUpdate 参数的值执行不同的数据表处理策略。
  2. 上 边 的 方法 createProcessEngineConfigurationFromResource 在执行时在activiti.cfg.xml 中找固定的名称 processEngineConfiguration。也可以使用重载方法调用,这时可以不用限定 processEngineConfiguration名称。

3.6.6 数据库表的命名规则

Activiti 的表都以 ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的 API 对应。

  • ACT_RE_*: 'RE'表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
  • ACT_RU_*: 'RU'表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
  • ACT_HI_*: 'HI'表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
  • ACT_GE_*: GE 表示 general。 通用数据, 用于不同场景下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值