Activiti6之表结构分析引擎配置及流程部署

7次阅读

共计 2498 个字符,预计需要花费 7 分钟才能阅读完成。

关于 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 流程定义数据表

正文完
 0