dolphinscheduler 初始化任务队列 initTaskQueue

简要说明

  • 疑问
笔者刚看到这里感觉很奇怪,因为当processInstance第一次执行的时候,如果不是ComplementData 类型的。initTaskQueue 方法基本上只执行clear方法。为什么写那么多
  • 解答
在api服务中执行任务流程生成任务实例时,是生成command插入表中,在master中将command转换成processInstance,此时执行状态可能是WorkflowExecutionStatus.SERIAL_WAIT,此时就不是RUNNING_EXECUTION 状态,可能是专门为这种类型准备的。

 private void initTaskQueue() {
   
   

        taskFailedSubmit = false;
        activeTaskProcessorMaps.clear();
        dependFailedTaskMap.clear();
        completeTaskMap.clear();
        errorTaskMap.clear();
//1.如果该流程实例重新恢复的返回false 2.如果任务流程实例是RUNNING_EXECUTION 状态,并且是第一次运行则返回true 3.其他则返回false
        if (!isNewProcessInstance()) {
   
   
        //如果不是新的流程实例了,找到taskInstance表中,process_instance_id =  processInstance.getId()并且flag=1 的(1为可获得)

            List<TaskInstance> validTaskInstanceList = processService.findValidTaskListByProcessId(processInstance.getId());
            for (TaskInstance task : validTaskInstanceList) {
   
   
            //将validTaskMap缓存中相同code的任务实例替换
                if (validTaskMap.containsKey(task.getTaskCode())) {
   
   
                    int oldTaskInstanceId = validTaskMap.get(task.getTaskCode());
                    TaskInstance oldTaskInstance = taskInstanceMap.get(oldTaskInstanceId
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值