1、activiti7 工作流引擎Maven项目搭建及使用

activiti7 工作流引擎


Activiti 只是一个工作流引擎,并不是一个完整的工作流产品或框架,日常工作流使用时,必须在此基础上进行项目开发。Activiti 只支持流程部署-UML流程XML文件部署,流程开启、审批及审批节点的流转等操作。并未提供人员、权限及Web UI界面等功能,项目使用时可通过Activiti封装一个独立的流程服务,由业务系统调用相关接口完成业务审批工作。
并且Activiti有些审批功能对于中国人的审批习惯还未提供完全支持直接操作的API,比如驳回、撤回、作废等功能,网上也有很多实现这些功能的方式,具体如何实现还是要结合现有业务需求来对Activiti进一步功能封装。
这里主要是Activiti 各个单一功能如何使用的案例,其实复杂业务审批也是在这些小功能上进一步组装而成,以下就对Activiti进一步了解吧。

1、Maven 纯Activiti7项目搭建(无Spring)

activiti 本身就集成到Spring中,内部依赖Spring+Mybatis

1.1、数据库

默认是H2内存数据库,这里使用MySQL数据库,总共25张表,可用SQL初始化。项目启动时,也可通过程序配置,自动初始化表,这里创建数据库

Create DataBase activiti default character set utf8

1.2、依赖

<activiti.version>7.1.0.M6</activiti.version>   
<activiti.cloud.version>7.0.0.Beta1</activiti.cloud.version>
<mysql.version>8.0.20</mysql.version>  

<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>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>${activiti.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        

1.3、activiti.cfg.xml 配置

<beans xmlns="http://www.springframework.org/schema/beans"
       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.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/activiti" />
        <property name="username" value="root" />
        <property name="password" value="1234.com" />
    </bean>

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource"/>
        <!--自动会创建activiti涉及到的表结构-->
        <property name="databaseSchemaUpdate" value="true" />
    </bean>

</beans>

1.4、代码初始化表结构

@Slf4j
public class ActivitiTest {
    /**
     * 第一次使用Activiti时,如果没有初始化表结构,可以通过此操作初始化表
     */
    @Test
    public void initTable(){
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        log.info(defaultProcessEngine.getName());
    }
}

1、activiti7 工作流引擎Maven项目搭建及使用

2、定义工作流

activiti 是用BPMN 2.0定义规则流程的,IDEA 安装actiBPM 插件即可编辑BPMN文件了。 1个BPMN文件中可以定义多个流程,有时多个小功能点流程在1个文件中定义(不能2个流程,会报错:(Multiple none start events are not supported),一般都是1个文件一个流程管理 MyLeave.bpmn
1、activiti7 工作流引擎Maven项目搭建及使用

2.1、bpmn 文件导出成png图片供后续业务人员查看

把BPMN 文件复制一份 XML文件,然后Idea中右键,Digrams->show bpmn 2.0 Digester
1、activiti7 工作流引擎Maven项目搭建及使用

最后导出png 图片:
1、activiti7 工作流引擎Maven项目搭建及使用

3、流程开发过程

  1. 定义流程
  2. 部署流程-到activiti 服务器
  3. 启动流程
  4. 各个节点处理人审核,提交任务
  5. 流程执行结束
上一篇:python中字符串的大小写转换


下一篇:现在有一个字符串:abcdefg,如何让该字符串翻转呢?翻转字符串