美文网首页
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