美文网首页
Activiti数据库设计和模型映射4-HI历史流程数据表

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

作者: 安安汐而 | 来源:发表于2019-08-26 08:49 被阅读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);
    
        }
    
    
    }
    

    相关文章

      网友评论

          本文标题:Activiti数据库设计和模型映射4-HI历史流程数据表

          本文链接:https://www.haomeiwen.com/subject/zvblectx.html