流程设计插件安装
Eclipse
在线安装 打开 Help -> Install New Software,在线安装地址如下
Name: Activiti BPMN 2.0 designer
Location: http://activiti.org/designer/update/
也可以参考 https://blog.csdn.net/lovemenghaibin/article/details/50568858
IDEA
IDEA 在2019版本之后,不再支持在线安装,需要离线安装。在线安装:菜单栏 File -> Setting -> Plugins 右边搜索 actiBPM,然后 install ,然后重新启动 idea 开发工具。
搭建环境
使用maven
引入Activiti
<properties>
<activiti-version>5.22.0</activiti-version>
<mysql-version>8.0.22</mysql-version>
<junit-version>4.13</junit-version>
<sl4j-log4j-version>1.7.2</sl4j-log4j-version>
</properties>
<dependencies>
<!--activiti-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti-version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${sl4j-log4j-version}</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
</dependencies>
Activiti配置
创建 ProcessEngine
通过配置文件activiti.cfg.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="databaseType" value="mysql" />
<!--
生命数据库脚本更新策略
false: 表示什么都不做
true: 当act表不存在时自动创建,jar版本与数据库内记录的版本不一致时自动执行升级脚本,并记录升级过程
create-drop: 创建引擎时初始化脚本,引擎销毁时执行删除脚本
-->
<property name="databaseSchemaUpdate" value= "true"/>
<!--
是否启用作业执行功能,默认为false。如果设置为true,会不断刷新作业表,存在作业就触发
-->
<property name="jobExecutorActivate" value= "false"/>
<!--
记录历史的级别,默认为audit
none: 不保存任何历史记录,可提高系统性能
activity: 保存所有流程实例、任务、活动信息
audit: 保存所有流程实例、任务、活动、表单属性。
full: 完整的历史记录,包含audit以外还有其它记录,如流程变量、表单属性等
-->
<property name="history" value= "audit"/>
<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/act-test?characterEncoding=UTF-8&
useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&
serverTimezone=UTC&nullCatalogMeansCurrent=true" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="root" />
</bean>
</beans>
可通过以下方法启动并创建Activiti
数据表
package com.fn2xn.act01;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Description 初始化Activiti表测试
* @Author fn2xn
* @date 2020/11/16 11:24
*/
public class InitProcessEngineTest {
private static final Logger logger = LoggerFactory.getLogger(InitProcessEngineTest.class);
/**
* 建表方式一,读取根目录下的配置文件
*/
@Test
public void initMode1Test(){
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
.buildProcessEngine();
logger.info("方式一=============={}", processEngine);
}
/**
* 建表方式二
*/
@Test
public void initMode2Test(){
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration()
.setJdbcDriver("com.mysql.cj.jdbc.Driver")
.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/act-test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&nullCatalogMeansCurrent=true")
.setJdbcUsername("root")
.setJdbcPassword("root")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.buildProcessEngine();
logger.info("方式二=============={}", processEngine);
}
/**
* 建表方式三
*/
@Test
public void initMode3Test(){
char[] chars = "".toCharArray();
// 默认去寻找根目录下的 activiti.cfg.xml文件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
logger.info("方式三=============={}", processEngine);
}
}
源码链接:https://github.com/dou-chi/some-practise/tree/master/activiti-practise/act-module-01
表说明
Activiti 数据库中表的命名都是以 ACT_开头的。第二部分是一个两个字符用例表的标识。此用例大体与服务 API 是匹配的。
-
ACT_RE_*:’RE’代表 repository。带此前缀的表包含的是静态信息,如,流程定义、流程的资源(图片、规则,等)。
-
ACT_RU_*:’RU’代表 runtime。就是这个运行时的表存储着流程变量、用户任务、变量、作业,等中的运行时的数据。
Activiti 只存储流程实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就使这些运行时的表保持
的小且快。 -
ACT_ID_*:’ID’代表 identity。这些表包含着标识的信息,如用户、用户组、等等。
-
ACT_HI_*:’HI’代表 history。就是这些表包含着历史的相关数据,如结束的流程实例、变量、任务、等等。
-
ACT_GE_*:普通数据,各种情况都使用的数据。
常用的查询SQL
#RepositoryService
SELECT * FROM `act_ge_bytearray`; #二进制文件表
SELECT * FROM `act_re_deployment`;#流程部署表
SELECT * FROM `act_re_procdef`;#流程定义
SELECT * FROM `act_ge_property`;#工作流的ID算法和版本信息表
#RuntimeService TaskService
SELECT * FROM `act_ru_execution`;#流程启动一次只要没有执行完,就会有一条数据
SELECT * FROM `act_ru_task`;#可能有多条数据
SELECT * FROM `act_ru_variable`;#记录流程运行时的流程变量
SELECT * FROM `act_ru_identitylink`;#存放流程办理人的信息
#HistroyService
SELECT * FROM `act_hi_procinst`;#历史流程实例
SELECT * FROM `act_hi_taskinst`;#历史任务实例
SELECT * FROM `act_hi_actinst`;#历史活动节点表
SELECT * FROM `act_hi_varinst`;#历史流程变量表
SELECT * FROM `act_hi_identitylink`;##历史办理人表
SELECT * FROM `act_hi_comment`;#批注表
SELECT * FROM `act_hi_attachment`;#附件表
#IdentityService
SELECT * FROM `act_id_group` #角色
SELECT * FROM `act_id_membership`#用户和角色之间的关系
SELECT * FROM `act_id_info`#用户的详细信息
SELECT * FROM `act_id_user`#用户表
评论区