Activiti快速学习笔记(1)——环境配置

Activiti快速学习笔记(1)——环境配置

介绍

基本信息

​ Activiti项目是一项新的基于Apache许可的开源BPM(业务流程管理)平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。

​ Activiti是一个独立运作和经营的开源项目品牌,并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,以便这个项目可以广泛被使用,同时促进Activiti BPM引擎和BPMN 2.0的匹配,该项目现正由OMG通过标准审定。 加入Alfresco Activiti项目的是VMware的SpringSource分支,Alfresco的计划把该项目提交给Apache基础架构,希望吸引更多方面的BPM专家和促进BPM的创新。

优点

​ 传统使用状态字来实现流程管理,代码需要随流程的改变而改变,但使用activiti后,可以做到业务流程变化后,我们的程序可以不用动

使用步骤

  • 部署activiti

Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统需要使用这些api

  • 流程定义

使用流程建模软件定义业务流程(.bpmn文件)

  • 流程定义部署

将流程定义内容存储到数据库中

  • 启动流程实例

开始一次业务流程的运行

  • 用户查询待办任务(Task)

通过activit查询当前流程执行进度,无需sql

  • 用户办理任务

查询后就可以进行办理(完成)。

基本环境配置

项目结构

基本依赖

<?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>org.example</groupId>
    <artifactId>ActivitStudy</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <activiti.version>7.0.0.Beta1</activiti.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- bpmn 模型处理 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- bpmn 转换 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- bpmn json数据转换 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- bpmn 布局 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- activiti 云支持 -->
        <dependency>
            <groupId>org.activiti.cloud</groupId>
            <artifactId>activiti-cloud-services-api</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <!-- mybatis -->
        <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>
        <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>
    </dependencies>


</project>

添加日志文件

# 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 - %mn
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:actactiviti.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 - %mn

添加activiti配置文件

activiti.cfg.xml,需要修改数据库信息

  • 直接配置

image-20220710102820590

  • 引用配置
<?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/activit?useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true&amp;useAffectedRows=true"/>
        <property name="username" value="root"/>
        <property name="password" value="yourpassword"/>
        <property name="maxActive" value="3"/>
        <property name="maxIdle" value="1"/>
    </bean>

    <!-- 默认 id 对应的值为 processEngineConfiguration -->
    <!-- processEngine Activiti 的流程引擎 -->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <!-- 引入上面配置好的链接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- activiti 数据库表处理策略,true 为如果数据库中已存在相应的表,则直接使用,否则创建 -->
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>
</beans>

生成Activiti需要的表结构

  • 创建数据库

image-20220710103233864

  • 使用默认方式生成表
    @Test
    public void testCreateTable() {
        // 读取 activiti.cfg.xml 配置文件,创建 ProcessEngine 的同时会创建表
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        System.out.println(processEngine);
    }
  • 使用自定义方式生成表
    /**
     * 使用自定义方式获取processEngine
     */
    @Test
    public void testCreateTable2() {
        // 获取配置
        ProcessEngineConfiguration configurationFromResource = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        // 获取ProcessEngines
        ProcessEngine engine = configurationFromResource.buildProcessEngine();
        System.out.println(engine);
    }
  • 生成结果

image-20220710103329906

  • 表整体含义

image-20220710103610000

  • 表详细含义

image-20220710104034808

image-20220710104055757

Activiti 插件

插件安装
  • 下载插件

idea2019的可以试试actiBPM,我的版本太高了,所以用了第三方工具 Camunda Modeler:

github:

camunda/camunda-modeler:基于 bpmn.io 的BPMN,DMN和Forms的集成建模解决方案。 (github.com)

官方下载地址:

Download The Camunda BPMN / DMN Process Modeler | Camunda

  • 集成到idea

可以将这个工具集成到idea里,或者直接双击Camunda Modeler.exe运行

image-20220710161539498

image-20220710161931615

image-20220710161959281

插件使用
  • 启动(用idea的外部工具启动也行)

image-20220710163656488

  • 开启panel面板

image-20220710163617912

  • 修改name和id

image-20220710163846986

  • 绘制流程图

    左边工具栏拖拽,或者左键已有元素,选择下一个元素

image-20220710164007534

  • 规定负责人
    1. 将节点设置为User Task

image-20220710164456065

  1. 设置负责人

自上至下为:zhangsan、lisi、wangwu、xiaoming

image-20220710164914639

  • 保存

既要保存bpmn文件,也要保存png图片

image-20220710170728914

至此完成流程设计

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值