史上最全 Activiti 学习教程,一文搞定最强工作流引擎!(2)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 史上最全 Activiti 学习教程,一文搞定最强工作流引擎!

三、Activiti环境

3.1 开发环境

Jdk1.8或以上版本

Mysql 5及以上的版本

Tomcat8.5

IDEA

注意:activiti的流程定义工具插件可以安装在IDEA下,也可以安装在Eclipse工具下


3.2 Activiti环境

我们使用:Activiti7.0.0.Beta1 默认支持spring5。


推荐一个开源免费的 Spring Boot 最全教程:


https://github.com/javastacks/spring-boot-best-practice


3.2.1 下载activiti7

Activiti下载地址:http://activiti.org/download.html ,Maven的依赖如下:


 

   

         org.activiti

         activiti-dependencies

         7.0.0.Beta1

         import

         pom

   

 


1) Database:

activiti运行需要有数据库的支持,支持的数据库有:h2, mysql, oracle, postgres, mssql, db2。

42eb8c6902b5c79587185f0bda0b58a0_dbee61ce60ab40eb8c8e87e09c0e1781.png

3.2.2 流程设计器IDEA下安装

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




此时我们就可以搜索到actiBPM插件,它就是Activiti Designer的IDEA版本,我们点击Install安装。


安装好后,页面如下:


bbcfd710e5900679e90c9dd0b623a424_35041b1461984892998323c727ce30b9.png

提示需要重启idea,点击重启。


重启完成后,再次打开Settings 下的 Plugins(插件列表),点击右侧的Installed(已安装的插件),在列表中看到actiBPM,就说明已经安装成功了,如下图所示:


8ebd38f2cf9866ac80a78f0f6ab5a4ae_8a10cf9fcbd448c2bc890c989c2a5f44.png


后面的课程里,我们会使用这个流程设计器进行Activiti的流程设计。


3.3 Activiti的数据库支持

Activiti 在运行时需要数据库的支持,使用25张表,把流程定义节点内容读取到数据库表中,以供后续使用。


3.3.1 Activiti 支持的数据库

activiti 支持的数据库和版本如下:


5869bcbcf15cc7863e61e93163102249_2fab064941544ab3a6391920e3295bd3.png


3.3.2 在MySQL生成表

3.3.2.1 创建数据库


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


CREATE DATABASE activiti DEFAULT CHARACTER SET utf8;

3.3.2.2 使用java代码生成表


创建 java 工程

使用idea 创建 java 的maven工程,取名:activiti01。


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

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


activiti-engine-7.0.0.beta1.jar

activiti 依赖的 jar 包:mybatis、 alf4j、 log4j 等

activiti 依赖的 spring 包

mysql数据库驱动

第三方数据连接池 dbcp

单元测试 Junit-4.12.jar

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


完整的依赖内容如下:


  1.6.6

  1.2.12

  7.0.0.Beta1

 

      org.activiti

      activiti-engine

      ${activiti.version}

 

 

      org.activiti

      activiti-spring

      ${activiti.version}

 

 

 

      org.activiti

      activiti-bpmn-model

      ${activiti.version}

 

 

 

      org.activiti

      activiti-bpmn-converter

      ${activiti.version}

 

 

 

      org.activiti

      activiti-json-converter

      ${activiti.version}

 

 

 

      org.activiti

      activiti-bpmn-layout

      ${activiti.version}

 

 

 

      org.activiti.cloud

      activiti-cloud-services-api

      ${activiti.version}

 

 

 

      mysql

      mysql-connector-java

      5.1.40

 

 

 

      org.mybatis

      mybatis

      3.4.5

 

 

 

      commons-dbcp

      commons-dbcp

      1.4

 

 

      junit

      junit

      4.12

 

 

 

      log4j

      log4j

      ${log4j.version}

 

 

      org.slf4j

      slf4j-api

      ${slf4j.version}

 

 

      org.slf4j

      slf4j-log4j12

      ${slf4j.version}

 


添加log4j日志配置

我们使用log4j日志包,可以对日志进行配置


在resources 下创建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=f:\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


添加activiti配置文件

我们使用activiti提供的默认方式来创建mysql的表。


默认方式的要求是在 resources 下创建 activiti.cfg.xml 文件,注意:默认方式目录和文件名不能修改,因为activiti的源码中已经设置,到固定的目录读取固定文件名的文件。


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


在 activiti.cfg.xml 中进行配置

默认方式要在在activiti.cfg.xml中bean的名字叫processEngineConfiguration,名字不可修改


在这里有2中配置方式:一种是单独配置数据源,一种是不单独配置数据源


1、直接配置processEngineConfiguration


processEngineConfiguration 用来创建 ProcessEngine,在创建 ProcessEngine 时会执行数据库的操作。


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

 

 

 

         class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

     

     

     

     

     

     

 


2、配置数据源后,在processEngineConfiguration 引用


首先配置数据源


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


 

 

     

     

     

     

     

     

 


 

         class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

     

     

     

     

 



java类编写程序生成表

创建一个测试类,调用activiti的工具类,生成acitivti需要的数据库表。


直接使用activiti提供的工具类ProcessEngines,会默认读取classpath下的activiti.cfg.xml文件,读取其中的数据库配置,创建 ProcessEngine,在创建ProcessEngine 时会自动创建表。


代码如下:


package com.itheima.activiti01.test;


import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngineConfiguration;

import org.junit.Test;


public class TestDemo {

   /**

    * 生成 activiti的数据库表

    */

   @Test

   public void testCreateDbTable() {

       //使用classpath下的activiti.cfg.xml中的配置创建processEngine

 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

 System.out.println(processEngine);

   }

}




说明:


运行以上程序段即可完成 activiti 表创建,通过改变 activiti.cfg.xml 中databaseSchemaUpdate 参数的值执行不同的数据表处理策略。

上 边 的 方法 getDefaultProcessEngine方法在执行时,从activiti.cfg.xml 中找固定的名称 processEngineConfiguration 。

在测试程序执行过程中,idea的控制台会输出日志,说明程序正在创建数据表,类似如下,注意红线内容:


12dd577adb929de8a1da1c1b77225045_7ca4621caeab49abb34817f3056443ba.png


执行完成后我们查看数据库, 创建了 25 张表,结果如下:


e14285c896fced785cdd5752e1fb867c_6a8fd11f7cfb48e1becc7481c9f4fa02.png


到这,我们就完成activiti运行需要的数据库和表的创建。


3.4 表结构介绍

3.4.1 表的命名规则和作用

看到刚才创建的表,我们发现Activiti 的表都以 ACT_开头。


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


ACT_RE :'RE’表示 repository。这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU:'RU’表示 runtime。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。

ACT_HI:'HI’表示 history。这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE :GE 表示 general。通用数据, 用于不同场景下

3.4.2 Activiti数据表介绍

da219d869306b08957d5c190a61448b7_d4efba1704114a6c8ffd1ca2eb51d2f6.png

————————————————

版权声明:本文为CSDN博主「Java技术栈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/youanyyou/article/details/130705348


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
安全 Java 关系型数据库
Spring boot整合Activiti7
Spring boot整合Activiti7
3997 0
Spring boot整合Activiti7
|
XML 数据可视化 安全
一文了解Activiti7
一文了解Activiti7
840 0
|
XML 关系型数据库 MySQL
工作流框架--Activiti6.0(二)
工作流框架--Activiti6.0(二)
1152 1
activiti 会签多实例任务,设置为候选组或个人任务的总结
activiti 会签多实例任务,设置为候选组或个人任务的总结
1652 0
activiti 会签多实例任务,设置为候选组或个人任务的总结
|
Oracle Java 关系型数据库
Java SpringBoot集成Activiti7工作流
Java SpringBoot集成Activiti7工作流
|
缓存 Java Spring
源码解读:Spring如何解决构造器注入的循环依赖?
本文详细探讨了Spring框架中的循环依赖问题,包括构造器注入和字段注入两种情况,并重点分析了构造器注入循环依赖的解决方案。文章通过具体示例展示了循环依赖的错误信息及常见场景,提出了三种解决方法:重构代码、使用字段依赖注入以及使用`@Lazy`注解。其中,`@Lazy`注解通过延迟初始化和动态代理机制有效解决了循环依赖问题。作者建议优先使用`@Lazy`注解,并提供了详细的源码解析和调试截图,帮助读者深入理解其实现机制。
1026 1
|
消息中间件 供应链 JavaScript
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)
|
架构师 Java 关系型数据库
工作流框架--Activiti6.0(一)
工作流框架--Activiti6.0(一)
550 0
|
XML Java 数据库
【二十三】springboot整合activiti7(1)实战演示篇
【二十三】springboot整合activiti7(1)实战演示篇
1482 0
|
SQL 关系型数据库 MySQL
Activiti工作流学习笔记(三)——自动生成28张数据库表的底层原理分析
网上关于工作流引擎Activiti生成表的机制大多仅限于四种策略模式,但其底层是如何实现的,相关文章还是比较少,因此,觉得撸一撸其生成表机制的底层原理。
1195 0

热门文章

最新文章