美文网首页
Activiti数据库设计和模型映射3-RU运行时流程数据表

Activiti数据库设计和模型映射3-RU运行时流程数据表

作者: 安安汐而 | 来源:发表于2019-08-26 08:10 被阅读0次

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

1、ACT_RU_EXECUTIOIN【ExecutionEntityImpl】:流程实例与分支执行信息
  • PROC_INST_ID_:流程实例ID
  • BUSINESS_KEY_:业务标志
  • PARENT_ID:父执行信息
  • PROC_DEF_ID_:流程定义ID
  • SUPER_EXEC_:父流程实例对应的执行
  • IS_ACTIVE_:是否活动的执行 0:非活动、1:活动
  • IS_CONCURRENT_:是否并行分支 0:非 1:是
  • IS_SCOPE_:是否全局流程执行 0:非 1:是
  • IS_EVENT_SCOPE:是否激活状态
  • SUSPENSION_STATE:挂起状态 1:正常、2:挂起
  • LOCK_TIME_:锁定时间
2、ACT_RU_TASK【TaskEntityImpl】:用户任务信息
  • EXECUTION_ID_:执行流ID
  • PROC_INST_ID_:流程实例ID
  • PROC_DEF_ID_:流程定义ID
  • PARENT_TASK_ID_:父任务
  • TASK_DEF_KEY_:任务定义ID
  • NAME_:任务定义名称
  • OWNER_:拥有人
  • ASSIGNEE_:代理人
  • DELEGATION:委托状态 PENDING:委托中,RESOLVED:已处理
  • PRIORITY_:优先级
  • DUE_DATE_:过期时间
  • FORM_KEY:表单标志
3、ACT_RU_VARIABLE【VariableInstanceEntityImpl】:变量信息
  • TYPE_:变量类型(interger,string,double,json。。。)
  • NAME_:变量名
  • BYTEARRAY_ID_:资源表ID
  • DOUBLE_:浮点值
  • LONG_:长整型数值
  • TEXT_:文本值
4、ACT_RU_IDENTITYLINK【IdentityLinkEntityImpl】:参与者相关信息
  • ID_:主键
  • GROUP_ID_:用户组ID
  • TYPE_:类型assignee,candidate,owner,starter。。。
  • USER_ID_:用户ID
  • Task_ID_:任务ID
  • PROC_INST_ID_:流程实例
5、ACT_RU_EVENT_SUBSCR【EventSubscriptionEntityImpl】:事件监听表
  • EVENT_TYPE_:事件类型:message,signal
  • EVENT_NAME_:事件名称
  • EXECTON_ID:流程执行ID
  • PROC_INST_ID_:流程实例ID
  • ACTIVITY_ID_:流程定义节点ID
  • CONFIGUATION:配置
6、ACT_RU_JOB【JobEntityImpl】:作业表
  • TYPE_:类型
  • LOCK_EXP_TIME_:锁定过期时间
  • LOCK_OWNER_:锁定节点
  • EXCLUSIVE_:是否唯一
  • RETRIES_:重试次数3
  • REPEAT_:重复表达式
  • EXCEPTION_STACK_ID_:异常堆栈(资源表ID)
  • EXCEPTION_MSG_:异常信息
  • DUEDATE_:过期时间
  • HANDLER_TYPE_:处理器类型
  • HANDLER_CEF_:处理器配置
  • EXECUTION_ID_:流程执行表ID
7、ACT_RU_TIMER_JOB【】:定时器表
8、ACT_RU_SUSPENDED_JOB【】:暂停作业表
9、ACT_RU_DEADLETTER_JOB【】:死信表
package com.imooc.activiti.activitidemo.dbentity;

import com.google.common.collect.Maps;
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 GE通用数据库配置测试
 * @Author 胡浩
 * @Date 2019/8/23
 **/
public class DbRuntimeTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(DbRuntimeTest.class);

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

    /**
     * 部署
     */
    @Test
    public void testRuntime() {
        //会往act_ge_byteArray表插入一条资源记录
        //会往act_re_deployment表插入一条流程部署记录表
        //会往act_re_procdef表插入一条流程定义信息表
        //<startEvent id="startEvent" name="开始" activiti:formKey="secend_approve_formkey"></startEvent>
        activitiRule.getRepositoryService().createDeployment().name("二次审批流程")
                .addClasspathResource("MyProcess.bpmn20.xml")
                .deploy();

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

    /**
     * 设置所属人
     */
    @Test
    public void testSetOwner() {
        TaskService taskService = activitiRule.getTaskService();
        Task task = taskService.createTaskQuery().processDefinitionKey("process").singleResult();
        //ACT_RU_IDENTITYLINK 插入1条用户记录,并更新act_ru_task的owner字段
        taskService.setOwner(task.getId(), "user1");

    }

    /**
     * 数据库表流程key需要保持唯一、所以为了测试,先把数据库清空
     */
    @Test
    public void testMessage(){
        //会往act_ge_byteArray表插入一条资源记录
        //会往act_re_deployment表插入一条流程部署记录表
        //会往act_re_procdef表插入一条流程定义信息表

        //因为有message,会往act_ru_event_subscr表插入一条记录
//        message形式是、只要接受到这个message信息,就会启动流程
        activitiRule.getRepositoryService().createDeployment().name("测试部署Message")
                .addClasspathResource("coreapi/my-process-message.bpmn20.xml")
                .deploy();

//        //message-received是在usertask上,需要流程实例启动以后,如果接收到该信号,则运行usertask
//        activitiRule.getRepositoryService().createDeployment().name("测试部署MessageReceived")
//                .addClasspathResource("coreapi/my-process-message-received.bpmn20.xml")
//                .deploy();
    }

    /**
     * 数据库表流程key需要保持唯一、所以为了测试,先把数据库清空
     */
    @Test
    public void testMessageReceived(){
        //会往act_ge_byteArray表插入一条资源记录
        //会往act_re_deployment表插入一条流程部署记录表
        //会往act_re_procdef表插入一条流程定义信息表


        //message-received是在usertask上,需要流程实例启动以后,如果接收到该信号,则运行usertask
        activitiRule.getRepositoryService().createDeployment().name("测试部署MessageReceived")
                .addClasspathResource("coreapi/my-process-message-received.bpmn20.xml")
                .deploy();

        //启动
        //插入act_ru_event_subscr表插入一条记录
        ProcessInstance processInstance = activitiRule.getRuntimeService().startProcessInstanceByKey("my-process");

         //        Task task = activitiRule.getTaskService().createTaskQuery().singleResult();


    }


}

相关文章

网友评论

      本文标题:Activiti数据库设计和模型映射3-RU运行时流程数据表

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