Activiti数据库设计和模型映射4-HI历史流程数据表

2019-08-26  本文已影响0人  安安汐而

Demo项目代码:
https://gitee.com/AnAnXiEr/activiti6-demo

1、ACT_HI_PROCINST【HistoricProcessInstanceEntityImpl】:历史流程实例表
  • PROC_INST_ID_:流程实例ID
  • BUSINESS_KEY_:业务ID
  • PROC_DEF_ID_:流程定义ID
  • START_TIME_:开始时间
  • END_TIME_:结束时间
  • DURATION:执行时长
  • START_USER_ID_:流程发起人
  • START_ACT_ID_:开始节点ID
  • END_ACT_ID_:结束节点ID
  • SUPER_PROCESS_INSTANCE_ID_:父流程实例
  • DELETE_REASON_:删除原因
  • TENANT_ID_:多租户
2、ACT_HI_ACTINST【】:历史节点实例表
3、ACT_HI_TASKINST【】:历史任务表
4、ACT_HI_VARINST【】:历史变量表
5、ACT_HI_IDENTITYLINK【】:历史参与者表
6、ACT_HI_DETAIL【】:历史变更表
7、ACT_HI_ATTACHMENT【】:附件表
8、ACT_HI_COMMENT【】:评论表
9、ACT_EVT_LOG【EventTlogEntryEntityImpl】:事件日志表(建议存到mongodb、Elasticsearch 里,便于对data的json数据进行解析)
  • LOG_NR_:自增主键
  • TYPE_:类型
  • PROC_DEF_ID_:流程定义ID
  • PROC_INST_ID_:流程实例ID
  • EXECUTION_ID_:流程执行ID
  • TASK_ID_:任务ID
  • TIME_STAMP_:时间戳
  • USER_ID_:用户
  • DATA_:内容数据Json
  • LOCK_OWNER_:锁定节点
  • LOCK_TIME_:锁定时间
  • IS_PROCESSED_:是否正在执行

测试代码

cfg文件

<?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.StandaloneInMemProcessEngineConfiguration">

        <!--以druid数据源连接-->
        <property name="dataSource" ref="dataSource"/>

        <!--启动时自动检查并更新数据库表,不存在会创建 (一般 dev开发项目 使用)-->
        <property name="databaseSchemaUpdate" value="true"/>

        <!--是否使用historyUsed数据表、默认是true-->
        <!--<property name="dbHistoryUsed" value="false"></property>-->
        <!--是否使用Identity数据表、默认是true-->
        <!--<property name="dbIdentityUsed" value="false"></property>-->

        <!--开启历史记录等级full-->
        <property name="historyLevel" value="FULL"></property>
        <!--开启日志-->
        <property name="enableDatabaseEventLogging" value="true"/>
    </bean>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url"
                  value="jdbc:mysql://10.10.1.17:3306/activiti6?useUnicode=true&amp;characterEncoding=utf8&amp;nullCatalogMeansCurrent=true&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=true&amp;serverTimezone=GMT%2B8"/>
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="username" value="root001"/>
        <property name="password" value="Mysql_2019"/>
        <property name="initialSize" value="1"/>
        <property name="maxActive" value="20"/>

        <property name="filters" value="stat,slf4j"/>
    </bean>

</beans>

package com.imooc.activiti.activitidemo.dbentity;

import com.google.common.collect.Maps;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.ActivitiRule;
import org.junit.Rule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;

/**
 * @Description Hi配置测试
 * @Author 胡浩
 * @Date 2019/8/26
 **/
public class DbHistoryTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(DbHistoryTest.class);

    //测试、改为自己的mysql数据库
    @Rule
    public ActivitiRule activitiRule = new ActivitiRule("dbentity/activiti-mysql.cfg.xml");

    /**
     * 部署
     */
    @Test
    public void testHistory() {
        //会往act_ge_byteArray表插入一条资源记录
        //会往act_re_deployment表插入一条流程部署记录表
        //会往act_re_procdef表插入一条流程定义信息表
        activitiRule.getRepositoryService().createDeployment().name("流程部署")
                .addClasspathResource("dbentity/my-process.bpmn20.xml")
                .deploy();

        RuntimeService runtimeService = activitiRule.getRuntimeService();
        //act_ru_execution流程实例与分支执行信息插入2条(流程启动+用户任务执行)
        //act_ru_task插入1条记录
        Map<String, Object> variables = Maps.newHashMap();
        //act_ru_variable 插入1条变量记录
        variables.put("key0", "value0");
        variables.put("key1", "value1");
        variables.put("key2", "value2");

        ProcessInstance process = runtimeService.startProcessInstanceByKey("my-process", variables);

        //修改变量值
        runtimeService.setVariable(process.getId(), "key1", "vaule1_1");

        //获取task
        TaskService taskService = activitiRule.getTaskService();
        Task task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
        //设置owner
        taskService.setOwner(task.getId(), "user1");
        //附件
        taskService.createAttachment("url", task.getId(), process.getId()
                , "attachmentName", "desc", "/url/test.png");
        //评论
        taskService.addComment(task.getId(),task.getProcessInstanceId(),"record note1");
        taskService.addComment(task.getId(),task.getProcessInstanceId(),"record note2");

        //form提交(form提交会将提交的表单保存到act_hi_detail表中,通过task提交不会报存进去)
        Map<String, String> properties = Maps.newHashMap();
        properties.put("key1","value2_1");
        properties.put("key3","value3");
        activitiRule.getFormService().submitTaskFormData(task.getId(),properties);

    }


}
上一篇下一篇

猜你喜欢

热点阅读