Activiti的25张表
Activiti的运行支持,必须要有Activiti的25张表,主要是在流程运行过程中,记录存储一些参与流程的用户主体,组,以及流程定义的存储,流程执行时候的一些信息,以及流程的历史信息等.
开工:
第一步:创建maven项目,导入依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.19.0.2</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.19.0.2</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
<version>5.19.0.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
第二步:生成工作流表方案一(非配置方式)
先手动创建db_activiti数据库
开发代码:
获取流程引擎配置
配置驱动包,url
数据库用户名,密码
schema要设置成update
public class TestActi {
//生成工作流的表
public void createTable(){
ProcessEngineConfiguration configuration =
ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
//设置数据库的4个属性
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
configuration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf-8");
configuration.setJdbcUsername("root");
configuration.setJdbcPassword("");
//设置支持表的更新
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
//得到流程引擎对象
ProcessEngine processEngine = configuration.buildProcessEngine();
}
public static void main(String[] args) {
TestActi testActi = new TestActi();
testActi.createTable();
}
}
刷新数据库,即可看到25张表
image.png5种类型数据库表说明:
5种类型数据库表说明:
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。
ACT_RE_: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。(也就是我们画的流程图的信息)
ACT_RU_: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。[运行时的表是需要经常使用]
ACT_ID_: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 'GE'表示general。通用数据, 用于不同场景下,如存放资源文件。(我们画的流程图就上传在这里)
第三步:生成工作流表方案二(配置方式,推荐)
整合到Spring的配置文件中
默认的配置文件名称就是:activiti.cfg.xml
activiti.cfg.xml配置简化创建表功能
1.文档:http://activiti.org/userguide/index.html#configuration
2.resources下创建一个xml文件 名字是:activiti.cfg.xml
3.org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
配置代码:
<?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="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf-8"></property>
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value=""></property>
<!-- 支持表的更新,能生成表 -->
<property name="databaseSchemaUpdate" value="true"></property>
</bean>
</beans>
public void createTableWithXML(){
//加载配置
ProcessEngineConfiguration configuration =
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//得到工作流引擎对象
ProcessEngine processEngine = configuration.buildProcessEngine();
}
注意:这里定义的id名称必须为processEngineConfiguration,因为加载配置的时候,在源码中加载用的就是这个名称。
测试观察结果:
image.png
认识流程图的本质
画流程图
1.Idea中点击到具体任务,可看到Assignee任务分配属性
2. 把bpmn文件后缀改成xml,右键选择Diagrams->Show BPMN 2.0 Designer
重命名变为xml:
image.png观察xml文件主要注意下面的部分
<process id="myProcess_1" isClosed="false" isExecutable="true" processType="None">
<startEvent id="_2" name="StartEvent"/>
<endEvent id="_3" name="EndEvent"/>
<userTask activiti:assignee="工程师" activiti:exclusive="true" id="_4" name="请假"/>
<sequenceFlow id="_5" sourceRef="_2" targetRef="_4"/>
<sequenceFlow id="_6" sourceRef="_4" targetRef="_3"/>
</process>
process 节点是根节点 也就是整个图标的最外层
startEvent 开始节点
endEvent 结束节点
userTask 用户任务 activiti:assignee 执行者
sequenceFlow 两条线 出发点 到终点
- 在XML视图中点击Export to file,选择png格式,得到png文件
导出为图片:(了解)
这个插件也是有bug的 需要我们加以注意 :
插件bug:
初始画图分配:
可见执行者:
image.png
关闭视图student.bpmn
再次打开student.bpmn,执行者消失。
实际情况需要看XML
xml文件中有执行者,但是这个执行者是第一次编写的人,不支持第二次修改。
注意 :
这个插件就类似个一次性的插件,不适合再次修改,如果在设置了编码的情况下,再次打开可能还是乱码,如果是显示是乱码也不纠结,部署到数据库后启动还是中文。
工作流总结:
1. 插件画图,后缀:bpmn ,图的本质是 xml文件。
2. 应用主要在审批环节,请假环节,公司内部一般都有这样的系统。
3. Activiti,已经设计好了所有表。25张表。
4. 生成表:一种编写代码设置数据库的属性生成;一种整合在Spring的配置文件中,加载配置文件生成。
网友评论