关于activiti是什么,我这里就不多说了,我们直接上路,O(∩_∩)O哈哈~
引擎配置
配置方式有好几种:
1):
/**
* 获取默认的流程引擎实例 会自动读取activiti.cfg.xml文件,驱动包,url,数据库用户名,密码写在xml中
*/
private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
2):通过java配置,我们这里讲使用 JUnit单元测试,为了更清晰,我们使用Java配置,
//流程引擎
private ProcessEngine processEngine;
/**
* @Description: 数据库初始化
* @param:
* @return: void
*/
@Test
public void testProcessEngineConfiguration() {
ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration ();
config.setJdbcDriver ("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost:3306/tx-activiti?characterEncoding=UTF-8&serverTimezone=UTC&nullCatalogMeansCurrent=true");
config.setJdbcUsername("root");
config.setJdbcPassword("root");
//在构建过程引擎时,执行检查并在必要时执行模式的更新. 如果没有表则创建,
config.setDatabaseSchemaUpdate (ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
processEngine = config.buildProcessEngine ();
}
我们只需要新建好数据库,然后执行上面的 单元测试方法, 然后就会自动在表中新建 28 张表。
如图:
流程引擎创建完成后,只会对 act_ge_property 进行操作,
act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入四条记录,
流程部署
测试流程部署,先把上面的流程引擎配置的注解改为@Before。
@Before
//@Test
public void testProcessEngineConfiguration() {
//...
}
部署流程:
/**
* @Description: 部署
* @param:
* @return: void
*/
@Test
public void testCreateDeployment() {
Deployment deployment = processEngine.getRepositoryService () // 仓库服务
.createDeployment () //创建部署对象
.addClasspathResource ("diagrams/helloword.bpmn") // 加载资源文件
.addClasspathResource ("diagrams/helloword.png")
.name ("HelloWorld") //流程名称
.key ("helloword_key") // 部署key
.category ("test") //类别
.tenantId ("hz") //租户id,用于区分多个项目共用一个流程服务
.deploy ();
System.out.println ("流程部署ID:"+ deployment.getId ());
System.out.println ("流程部署Key:"+ deployment.getKey ());
System.out.println ("流程部署Name:"+ deployment.getName ());
System.out.println ("流程部署TenantId:"+ deployment.getTenantId ());
System.out.println ("流程部署Time:"+ deployment.getDeploymentTime ());
System.out.println ("流程部署Category类别:"+ deployment.getCategory ());
}
返回结果:
流程部署ID:2501
流程部署Key:helloword_key
流程部署Name:HelloWorld
流程部署TenantId:hz
流程部署Time:Sun Apr 28 16:52:32 CST 2019
流程部署Category类别:test
流程部署成功,我们接下来看看他们对表结构做了什么动作。根据时间排序,我们发现有4个表发生了变更。
act_ge_property:通用_属性表
next.dbid : 由原来的 1 变成了 2501, 下一个主键发送了变动(感觉类似oracle的游标)。其他的没有变动。 如图:
act_re_procdef:资源_流程定义数据表
这里面存放的就是我们部署的资源元数据信息。如图:
这里关注ID, 流程定义ID: helloworld:1:4 -> key:部署id:随机数
这里有一个 TENANT_ID, 其他信息存哪里了呢? 比如: Key 什么的, 我们接着看
感觉这存的就是我们的这一块元数据信息:
act_re_deployment:资源_部署信息表
感觉这存的就是我们的这一块元数据信息:
act_ge_bytearray:通用_二进制数据表
这存的就是我们的流程图片和XML的二进制数据:
总结
一共涉及的表:
1:通用数据表
1) act_ge_bytearray 二进制数据表
2) act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入四条记录,
2:资源库流程规则表
1) act_re_deployment 部署信息表
2) act_re_procdef 流程定义数据表
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。