|
|
@ -17,10 +17,6 @@ |
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.api.service.impl; |
|
|
package org.apache.dolphinscheduler.api.service.impl; |
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_DELETE; |
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_DELETE; |
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_UPDATE; |
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_UPDATE; |
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_INSTANCE; |
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_INSTANCE; |
|
|
@ -53,7 +49,6 @@ import org.apache.dolphinscheduler.common.graph.DAG; |
|
|
import org.apache.dolphinscheduler.common.model.TaskNodeRelation; |
|
|
import org.apache.dolphinscheduler.common.model.TaskNodeRelation; |
|
|
import org.apache.dolphinscheduler.common.utils.DateUtils; |
|
|
import org.apache.dolphinscheduler.common.utils.DateUtils; |
|
|
import org.apache.dolphinscheduler.common.utils.JSONUtils; |
|
|
import org.apache.dolphinscheduler.common.utils.JSONUtils; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils; |
|
|
|
|
|
import org.apache.dolphinscheduler.common.utils.placeholder.BusinessTimeUtils; |
|
|
import org.apache.dolphinscheduler.common.utils.placeholder.BusinessTimeUtils; |
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; |
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; |
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessInstance; |
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessInstance; |
|
|
@ -78,13 +73,13 @@ import org.apache.dolphinscheduler.dao.repository.ProcessInstanceDao; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.enums.DependResult; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.enums.DependResult; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.model.Property; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.model.Property; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode; |
|
|
import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode; |
|
|
|
|
|
import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils; |
|
|
import org.apache.dolphinscheduler.service.expand.CuringParamsService; |
|
|
import org.apache.dolphinscheduler.service.expand.CuringParamsService; |
|
|
import org.apache.dolphinscheduler.service.model.TaskNode; |
|
|
import org.apache.dolphinscheduler.service.model.TaskNode; |
|
|
import org.apache.dolphinscheduler.service.process.ProcessService; |
|
|
import org.apache.dolphinscheduler.service.process.ProcessService; |
|
|
import org.apache.dolphinscheduler.service.task.TaskPluginManager; |
|
|
import org.apache.dolphinscheduler.service.task.TaskPluginManager; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.BufferedReader; |
|
|
import java.io.BufferedReader; |
|
|
import java.io.ByteArrayInputStream; |
|
|
import java.io.ByteArrayInputStream; |
|
|
@ -101,6 +96,14 @@ import java.util.Objects; |
|
|
import java.util.function.Function; |
|
|
import java.util.function.Function; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* process instance service impl |
|
|
* process instance service impl |
|
|
*/ |
|
|
*/ |
|
|
@ -330,6 +333,15 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Result queryLatestProcessInstanceList(long[] processDefineCodes) { |
|
|
|
|
|
List<ProcessInstance> processInstances = |
|
|
|
|
|
processInstanceMapper.queryLatestProcessInstanceList(processDefineCodes); |
|
|
|
|
|
Result result = new Result(); |
|
|
|
|
|
result.setData(processInstances); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* query task list by process instance id |
|
|
* query task list by process instance id |
|
|
* |
|
|
* |
|
|
@ -344,13 +356,15 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce |
|
|
Integer processId) throws IOException { |
|
|
Integer processId) throws IOException { |
|
|
Project project = projectMapper.queryByCode(projectCode); |
|
|
Project project = projectMapper.queryByCode(projectCode); |
|
|
// check user access for project
|
|
|
// check user access for project
|
|
|
Map<String, Object> result = projectService.checkProjectAndAuth(loginUser, project, projectCode, WORKFLOW_INSTANCE); |
|
|
Map<String, Object> result = |
|
|
|
|
|
projectService.checkProjectAndAuth(loginUser, project, projectCode, WORKFLOW_INSTANCE); |
|
|
if (result.get(Constants.STATUS) != Status.SUCCESS) { |
|
|
if (result.get(Constants.STATUS) != Status.SUCCESS) { |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
ProcessInstance processInstance = processService.findProcessInstanceDetailById(processId) |
|
|
ProcessInstance processInstance = processService.findProcessInstanceDetailById(processId) |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processId)); |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processId)); |
|
|
ProcessDefinition processDefinition = processDefineMapper.queryByCode(processInstance.getProcessDefinitionCode()); |
|
|
ProcessDefinition processDefinition = |
|
|
|
|
|
processDefineMapper.queryByCode(processInstance.getProcessDefinitionCode()); |
|
|
if (processDefinition != null && projectCode != processDefinition.getProjectCode()) { |
|
|
if (processDefinition != null && projectCode != processDefinition.getProjectCode()) { |
|
|
putMsg(result, PROCESS_INSTANCE_NOT_EXIST, processId); |
|
|
putMsg(result, PROCESS_INSTANCE_NOT_EXIST, processId); |
|
|
return result; |
|
|
return result; |
|
|
@ -486,7 +500,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce |
|
|
String locations, int timeout, String tenantCode) { |
|
|
String locations, int timeout, String tenantCode) { |
|
|
Project project = projectMapper.queryByCode(projectCode); |
|
|
Project project = projectMapper.queryByCode(projectCode); |
|
|
// check user access for project
|
|
|
// check user access for project
|
|
|
Map<String, Object> result = projectService.checkProjectAndAuth(loginUser, project, projectCode, INSTANCE_UPDATE); |
|
|
Map<String, Object> result = |
|
|
|
|
|
projectService.checkProjectAndAuth(loginUser, project, projectCode, INSTANCE_UPDATE); |
|
|
if (result.get(Constants.STATUS) != Status.SUCCESS) { |
|
|
if (result.get(Constants.STATUS) != Status.SUCCESS) { |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
@ -494,7 +509,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce |
|
|
ProcessInstance processInstance = processService.findProcessInstanceDetailById(processInstanceId) |
|
|
ProcessInstance processInstance = processService.findProcessInstanceDetailById(processInstanceId) |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processInstanceId)); |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processInstanceId)); |
|
|
// check process instance exists in project
|
|
|
// check process instance exists in project
|
|
|
ProcessDefinition processDefinition0 = processDefineMapper.queryByCode(processInstance.getProcessDefinitionCode()); |
|
|
ProcessDefinition processDefinition0 = |
|
|
|
|
|
processDefineMapper.queryByCode(processInstance.getProcessDefinitionCode()); |
|
|
if (processDefinition0 != null && projectCode != processDefinition0.getProjectCode()) { |
|
|
if (processDefinition0 != null && projectCode != processDefinition0.getProjectCode()) { |
|
|
putMsg(result, PROCESS_INSTANCE_NOT_EXIST, processInstanceId); |
|
|
putMsg(result, PROCESS_INSTANCE_NOT_EXIST, processInstanceId); |
|
|
return result; |
|
|
return result; |
|
|
@ -660,7 +676,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processInstanceId)); |
|
|
.orElseThrow(() -> new ServiceException(PROCESS_INSTANCE_NOT_EXIST, processInstanceId)); |
|
|
// check process instance status
|
|
|
// check process instance status
|
|
|
if (!processInstance.getState().isFinished()) { |
|
|
if (!processInstance.getState().isFinished()) { |
|
|
throw new ServiceException(PROCESS_INSTANCE_STATE_OPERATION_ERROR, processInstance.getName(), processInstance.getState(), "delete"); |
|
|
throw new ServiceException(PROCESS_INSTANCE_STATE_OPERATION_ERROR, processInstance.getName(), |
|
|
|
|
|
processInstance.getState(), "delete"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ProcessDefinition processDefinition = |
|
|
ProcessDefinition processDefinition = |
|
|
|