流程引擎Camunda开发记录(四)—表ACT_RU_VARIA

2022-03-25  本文已影响0人  _花

ACT_RU_VARIABLE 流程运行时变量表

例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。
流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中。

一、表结构

表结构.png

二、相关方法

1、添加流程变量的方法
1)在启动流程实例时

//2、在启动流程实例时,添加变量
    @Test
    public void startProcessInstanceByKey() throws Exception {
        String processDefinitionKey = "baoxiaoFlow";
        Map<String, Object> variable = new HashMap<String, Object>();
        variable.put("amount", "300元");
        variable.put("reason", "出差");
        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variable);
        System.out.println("processInstance.getId()===" + processInstance.getId());
        System.out.println("processInstance.getProcessDefinitionId()===" + processInstance.getProcessDefinitionId());
    }

2)在办理任务时

    //2.2、在办理任务时,添加变量
    @Test
    public void dealProcessTask() throws Exception {
        String taskId = "42511";  //项目经理审批
        Map<String, Object> variable = new HashMap<String, Object>();
        variable.put("amount", "300元");
        variable.put("reason", "出差");
        processEngine.getTaskService().complete(taskId, variable);
    }

3)使用runtimeService的方法设置

getRuntimeService().setVariable(processInstanceId, variableName, value);

4)使用TaskService的方法设置

getTaskService().setVariables(taskId, variable);

2、获取流程变量
1)使用RuntimeService的方法获取

    @Test
    public void getVariableByRuntime() throws Exception {
        String taskId = "47504";
        Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
        //获得流程实例id
        String processInstanceId = task.getProcessInstanceId();
        Map<String, Object> variables = processEngine.getRuntimeService().getVariables(processInstanceId);
        for (Map.Entry<String, Object> entry : variables.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }

        Object value = processEngine.getRuntimeService().getVariable(processInstanceId, "user");
        System.out.println("Value = " + value);
    }

2)使用TaskService的方法获取

//2.4、使用runtimeService添加变量
   @Test
   public void getVariableByTask() throws Exception {
       String taskId = "47504";  //项目经理审批
       Map<String, Object> variables = processEngine.getTaskService().getVariables(taskId);
       for (Map.Entry<String, Object> entry : variables.entrySet()) {
           System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
       }
   }

act_ru_execution 流程运行时表

新启动的流程,观察ACT_RU_EXECUTION表中:

PARENT_ID_字段有值为执行实例,流程实例为NULL;

ACT_ID_字段有值为执行实例,流程实例为NULL;

IS_ACTIVE_字段为0为流程实例,为1为执行实例。

一、表结构

ID_ | varchar(64) | | 主键

REV_ | int(11) | NULL | 版本

ROOT_PROC_INST_ID_ | varchar(64) | NULL | 流程实例根ID

PROC_INST_ID_ | varchar(64) | NULL | 流程实例ID

BUSINESS_KEY_ | varchar(255) | NULL | 业务KEY

PARENT_ID_ | varchar(64) | NULL | 流程父实例ID

PROC_DEF_ID_ | varchar(64) | NULL | 流程定义ID

SUPER_EXEC_ | varchar(64) | NULL | 父流程实例对应的执行

SUPER_CASE_EXEC_ | varchar(64) | NULL | 父案例实例对应的执行

CASE_INST_ID_ | varchar(64) | NULL | 案例实例ID

ACT_ID_ | varchar(255) | NULL | 节点ID

ACT_INST_ID_ | varchar(64) | NULL | 节点实例ID

IS_ACTIVE_ | tinyint(4) | NULL | 是否激活

IS_CONCURRENT_ | tinyint(4) | NULL | 是否并行

IS_SCOPE_ | tinyint(4) | NULL | 是否多实例范围

IS_EVENT_SCOPE_ | tinyint(4) | NULL | 是否事件多实例范围

SUSPENSION_STATE_ | int(11) | NULL | 挂起状态

CACHED_ENT_STATE_ | int(11) | NULL | 缓存状态

SEQUENCE_COUNTER_ | bigint(20) | NULL | 序列计数器

TENANT_ID_ | varchar(64) | NULL | 租户ID
参考:
链接表单
https://blog.csdn.net/weixin_40004659/article/details/111746861
Camunda流程引擎有48张表解释https://www.cnblogs.com/mzhou19860730/articles/15866947.html

上一篇下一篇

猜你喜欢

热点阅读