Activiti數(shù)據(jù)庫設(shè)計(jì)和模型映射4-HI歷史流程數(shù)據(jù)表

Demo項(xiàng)目代碼:
https://gitee.com/AnAnXiEr/activiti6-demo

1、ACT_HI_PROCINST【HistoricProcessInstanceEntityImpl】:歷史流程實(shí)例表
  • PROC_INST_ID_:流程實(shí)例ID
  • BUSINESS_KEY_:業(yè)務(wù)ID
  • PROC_DEF_ID_:流程定義ID
  • START_TIME_:開始時(shí)間
  • END_TIME_:結(jié)束時(shí)間
  • DURATION:執(zhí)行時(shí)長
  • START_USER_ID_:流程發(fā)起人
  • START_ACT_ID_:開始節(jié)點(diǎn)ID
  • END_ACT_ID_:結(jié)束節(jié)點(diǎn)ID
  • SUPER_PROCESS_INSTANCE_ID_:父流程實(shí)例
  • DELETE_REASON_:刪除原因
  • TENANT_ID_:多租戶
2、ACT_HI_ACTINST【】:歷史節(jié)點(diǎn)實(shí)例表
3、ACT_HI_TASKINST【】:歷史任務(wù)表
4、ACT_HI_VARINST【】:歷史變量表
5、ACT_HI_IDENTITYLINK【】:歷史參與者表
6、ACT_HI_DETAIL【】:歷史變更表
7、ACT_HI_ATTACHMENT【】:附件表
8、ACT_HI_COMMENT【】:評(píng)論表
9、ACT_EVT_LOG【EventTlogEntryEntityImpl】:事件日志表(建議存到mongodb、Elasticsearch 里,便于對(duì)data的json數(shù)據(jù)進(jìn)行解析)
  • LOG_NR_:自增主鍵
  • TYPE_:類型
  • PROC_DEF_ID_:流程定義ID
  • PROC_INST_ID_:流程實(shí)例ID
  • EXECUTION_ID_:流程執(zhí)行ID
  • TASK_ID_:任務(wù)ID
  • TIME_STAMP_:時(shí)間戳
  • USER_ID_:用戶
  • DATA_:內(nèi)容數(shù)據(jù)Json
  • LOCK_OWNER_:鎖定節(jié)點(diǎn)
  • LOCK_TIME_:鎖定時(shí)間
  • IS_PROCESSED_:是否正在執(zhí)行

測試代碼

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">

    <!--基于內(nèi)存的獨(dú)立的流程引擎配置-->
    <bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">

        <!--以druid數(shù)據(jù)源連接-->
        <property name="dataSource" ref="dataSource"/>

        <!--啟動(dòng)時(shí)自動(dòng)檢查并更新數(shù)據(jù)庫表,不存在會(huì)創(chuàng)建 (一般 dev開發(fā)項(xiàng)目 使用)-->
        <property name="databaseSchemaUpdate" value="true"/>

        <!--是否使用historyUsed數(shù)據(jù)表、默認(rèn)是true-->
        <!--<property name="dbHistoryUsed" value="false"></property>-->
        <!--是否使用Identity數(shù)據(jù)表、默認(rèn)是true-->
        <!--<property name="dbIdentityUsed" value="false"></property>-->

        <!--開啟歷史記錄等級(jí)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數(shù)據(jù)庫
    @Rule
    public ActivitiRule activitiRule = new ActivitiRule("dbentity/activiti-mysql.cfg.xml");

    /**
     * 部署
     */
    @Test
    public void testHistory() {
        //會(huì)往act_ge_byteArray表插入一條資源記錄
        //會(huì)往act_re_deployment表插入一條流程部署記錄表
        //會(huì)往act_re_procdef表插入一條流程定義信息表
        activitiRule.getRepositoryService().createDeployment().name("流程部署")
                .addClasspathResource("dbentity/my-process.bpmn20.xml")
                .deploy();

        RuntimeService runtimeService = activitiRule.getRuntimeService();
        //act_ru_execution流程實(shí)例與分支執(zhí)行信息插入2條(流程啟動(dòng)+用戶任務(wù)執(zhí)行)
        //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();
        //設(shè)置owner
        taskService.setOwner(task.getId(), "user1");
        //附件
        taskService.createAttachment("url", task.getId(), process.getId()
                , "attachmentName", "desc", "/url/test.png");
        //評(píng)論
        taskService.addComment(task.getId(),task.getProcessInstanceId(),"record note1");
        taskService.addComment(task.getId(),task.getProcessInstanceId(),"record note2");

        //form提交(form提交會(huì)將提交的表單保存到act_hi_detail表中,通過task提交不會(huì)報(bào)存進(jìn)去)
        Map<String, String> properties = Maps.newHashMap();
        properties.put("key1","value2_1");
        properties.put("key3","value3");
        activitiRule.getFormService().submitTaskFormData(task.getId(),properties);

    }


}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容