diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java index 20106a25ea..a3903a4c7d 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java @@ -73,12 +73,11 @@ import springfox.documentation.annotations.ApiIgnore; */ @Api(tags = "PROCESS_INSTANCE_TAG") @RestController -@RequestMapping("projects/{projectName}/instance") +@RequestMapping("projects/{projectCode}/instance") public class ProcessInstanceController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(ProcessInstanceController.class); - @Autowired ProcessInstanceService processInstanceService; @@ -86,7 +85,7 @@ public class ProcessInstanceController extends BaseController { * query process instance list paging * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param pageNo page number * @param pageSize page size * @param processDefinitionId process definition id @@ -114,7 +113,7 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_PROCESS_INSTANCE_LIST_PAGING_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result queryProcessInstanceList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam(value = "processDefinitionId", required = false, defaultValue = "0") Integer processDefinitionId, @RequestParam(value = "searchVal", required = false) String searchVal, @RequestParam(value = "executorName", required = false) String executorName, @@ -124,14 +123,13 @@ public class ProcessInstanceController extends BaseController { @RequestParam(value = "endDate", required = false) String endTime, @RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize) { - Map result = checkPageParams(pageNo, pageSize); if (result.get(Constants.STATUS) != Status.SUCCESS) { return returnDataListPaging(result); } searchVal = ParameterUtils.handleEscapes(searchVal); - result = processInstanceService.queryProcessInstanceList( - loginUser, projectName, processDefinitionId, startTime, endTime, searchVal, executorName, stateType, host, pageNo, pageSize); + result = processInstanceService.queryProcessInstanceList(loginUser, projectCode, processDefinitionId, startTime, endTime, + searchVal, executorName, stateType, host, pageNo, pageSize); return returnDataListPaging(result); } @@ -139,7 +137,7 @@ public class ProcessInstanceController extends BaseController { * query task list by process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return task list for the process instance */ @@ -152,10 +150,9 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result queryTaskListByProcessId(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, - @RequestParam("processInstanceId") Integer processInstanceId - ) throws IOException { - Map result = processInstanceService.queryTaskListByProcessId(loginUser, projectName, processInstanceId); + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, + @RequestParam("processInstanceId") Integer processInstanceId) throws IOException { + Map result = processInstanceService.queryTaskListByProcessId(loginUser, projectCode, processInstanceId); return returnDataList(result); } @@ -163,7 +160,7 @@ public class ProcessInstanceController extends BaseController { * update process instance * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceJson process instance json * @param processInstanceId process instance id * @param scheduleTime schedule time @@ -186,16 +183,15 @@ public class ProcessInstanceController extends BaseController { @ApiException(UPDATE_PROCESS_INSTANCE_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result updateProcessInstance(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam(value = "processInstanceJson", required = false) String processInstanceJson, @RequestParam(value = "processInstanceId") Integer processInstanceId, @RequestParam(value = "scheduleTime", required = false) String scheduleTime, @RequestParam(value = "syncDefine", required = true) Boolean syncDefine, @RequestParam(value = "locations", required = false) String locations, - @RequestParam(value = "flag", required = false) Flag flag - ) throws ParseException { - Map result = processInstanceService.updateProcessInstance(loginUser, projectName, - processInstanceId, processInstanceJson, scheduleTime, syncDefine, flag, locations); + @RequestParam(value = "flag", required = false) Flag flag) throws ParseException { + Map result = processInstanceService.updateProcessInstance(loginUser, projectCode, processInstanceId, + processInstanceJson, scheduleTime, syncDefine, flag, locations); return returnDataList(result); } @@ -203,7 +199,7 @@ public class ProcessInstanceController extends BaseController { * query process instance by id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return process instance detail */ @@ -216,10 +212,9 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_PROCESS_INSTANCE_BY_ID_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result queryProcessInstanceById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, - @RequestParam("processInstanceId") Integer processInstanceId - ) { - Map result = processInstanceService.queryProcessInstanceById(loginUser, projectName, processInstanceId); + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, + @RequestParam("processInstanceId") Integer processInstanceId) { + Map result = processInstanceService.queryProcessInstanceById(loginUser, projectCode, processInstanceId); return returnDataList(result); } @@ -227,7 +222,7 @@ public class ProcessInstanceController extends BaseController { * query top n process instance order by running duration * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param size number of process instance * @param startTime start time * @param endTime end time @@ -244,14 +239,11 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_PROCESS_INSTANCE_BY_ID_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result queryTopNLongestRunningProcessInstance(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("size") Integer size, @RequestParam(value = "startTime", required = true) String startTime, - @RequestParam(value = "endTime", required = true) String endTime - - ) { - projectName = ParameterUtils.handleEscapes(projectName); - Map result = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectName, size, startTime, endTime); + @RequestParam(value = "endTime", required = true) String endTime) { + Map result = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectCode, size, startTime, endTime); return returnDataList(result); } @@ -260,7 +252,7 @@ public class ProcessInstanceController extends BaseController { * delete task instance and their mapping relation data * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return delete result code */ @@ -273,11 +265,9 @@ public class ProcessInstanceController extends BaseController { @ApiException(DELETE_PROCESS_INSTANCE_BY_ID_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result deleteProcessInstanceById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, - @RequestParam("processInstanceId") Integer processInstanceId - ) { - // task queue - Map result = processInstanceService.deleteProcessInstanceById(loginUser, projectName, processInstanceId); + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, + @RequestParam("processInstanceId") Integer processInstanceId) { + Map result = processInstanceService.deleteProcessInstanceById(loginUser, projectCode, processInstanceId); return returnDataList(result); } @@ -285,7 +275,7 @@ public class ProcessInstanceController extends BaseController { * query sub process instance detail info by task id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param taskId task id * @return sub process instance detail */ @@ -298,9 +288,9 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_SUB_PROCESS_INSTANCE_DETAIL_INFO_BY_TASK_ID_ERROR) @AccessLogAnnotation(ignoreRequestArgs = "loginUser") public Result querySubProcessInstanceByTaskId(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("taskId") Integer taskId) { - Map result = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, taskId); + Map result = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, taskId); return returnDataList(result); } @@ -308,7 +298,7 @@ public class ProcessInstanceController extends BaseController { * query parent process instance detail info by sub process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param subId sub process id * @return parent instance detail */ @@ -321,9 +311,9 @@ public class ProcessInstanceController extends BaseController { @ApiException(QUERY_PARENT_PROCESS_INSTANCE_DETAIL_INFO_BY_SUB_PROCESS_INSTANCE_ID_ERROR) @AccessLogAnnotation public Result queryParentInstanceBySubId(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("subId") Integer subId) { - Map result = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, subId); + Map result = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, subId); return returnDataList(result); } @@ -352,7 +342,7 @@ public class ProcessInstanceController extends BaseController { * encapsulation gantt structure * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return gantt tree data */ @@ -365,7 +355,7 @@ public class ProcessInstanceController extends BaseController { @ApiException(ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR) @AccessLogAnnotation public Result viewTree(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @ApiParam(name = "projectName", value = "PROJECT_NAME", required = true) @PathVariable String projectName, + @ApiParam(name = "projectCode", value = "PROJECT_CODE", required = true) @PathVariable long projectCode, @RequestParam("processInstanceId") Integer processInstanceId) throws Exception { Map result = processInstanceService.viewGantt(processInstanceId); return returnDataList(result); @@ -376,7 +366,7 @@ public class ProcessInstanceController extends BaseController { * delete task instance and their mapping relation data * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceIds process instance id * @return delete result code */ @@ -390,9 +380,8 @@ public class ProcessInstanceController extends BaseController { @ApiException(BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR) @AccessLogAnnotation public Result batchDeleteProcessInstanceByIds(@RequestAttribute(value = Constants.SESSION_USER) User loginUser, - @PathVariable String projectName, - @RequestParam("processInstanceIds") String processInstanceIds - ) { + @PathVariable long projectCode, + @RequestParam("processInstanceIds") String processInstanceIds) { // task queue Map result = new HashMap<>(); List deleteFailedIdList = new ArrayList<>(); @@ -402,7 +391,7 @@ public class ProcessInstanceController extends BaseController { for (String strProcessInstanceId : processInstanceIdArray) { int processInstanceId = Integer.parseInt(strProcessInstanceId); try { - Map deleteResult = processInstanceService.deleteProcessInstanceById(loginUser, projectName, processInstanceId); + Map deleteResult = processInstanceService.deleteProcessInstanceById(loginUser, projectCode, processInstanceId); if (!Status.SUCCESS.equals(deleteResult.get(Constants.STATUS))) { deleteFailedIdList.add(strProcessInstanceId); logger.error((String) deleteResult.get(Constants.MSG)); @@ -417,7 +406,6 @@ public class ProcessInstanceController extends BaseController { } else { putMsg(result, Status.SUCCESS); } - return returnDataList(result); } } diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java index 18c8b7f8a5..d829a71fd6 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java @@ -38,23 +38,29 @@ public interface ProcessInstanceService { /** * return top n SUCCESS process instance order by running time which started between startTime and endTime */ - Map queryTopNLongestRunningProcessInstance(User loginUser, String projectName, int size, String startTime, String endTime); + Map queryTopNLongestRunningProcessInstance(User loginUser, + long projectCode, + int size, + String startTime, + String endTime); /** * query process instance by id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processId process instance id * @return process instance detail */ - Map queryProcessInstanceById(User loginUser, String projectName, Integer processId); + Map queryProcessInstanceById(User loginUser, + long projectCode, + Integer processId); /** * paging query process instance list, filtering according to project, process definition, time range, keyword, process status * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param pageNo page number * @param pageSize page size * @param processDefineId process definition id @@ -65,21 +71,30 @@ public interface ProcessInstanceService { * @param endDate end time * @return process instance list */ - Map queryProcessInstanceList(User loginUser, String projectName, Integer processDefineId, - String startDate, String endDate, - String searchVal, String executorName, ExecutionStatus stateType, String host, - Integer pageNo, Integer pageSize); + Map queryProcessInstanceList(User loginUser, + long projectCode, + Integer processDefineId, + String startDate, + String endDate, + String searchVal, + String executorName, + ExecutionStatus stateType, + String host, + Integer pageNo, + Integer pageSize); /** * query task list by process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processId process instance id * @return task list for the process instance * @throws IOException io exception */ - Map queryTaskListByProcessId(User loginUser, String projectName, Integer processId) throws IOException; + Map queryTaskListByProcessId(User loginUser, + long projectCode, + Integer processId) throws IOException; Map parseLogForDependentResult(String log) throws IOException; @@ -87,17 +102,19 @@ public interface ProcessInstanceService { * query sub process instance detail info by task id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param taskId task id * @return sub process instance detail */ - Map querySubProcessInstanceByTaskId(User loginUser, String projectName, Integer taskId); + Map querySubProcessInstanceByTaskId(User loginUser, + long projectCode, + Integer taskId); /** * update process instance * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceJson process instance json * @param processInstanceId process instance id * @param scheduleTime schedule time @@ -107,29 +124,38 @@ public interface ProcessInstanceService { * @return update result code * @throws ParseException parse exception for json parse */ - Map updateProcessInstance(User loginUser, String projectName, Integer processInstanceId, - String processInstanceJson, String scheduleTime, Boolean syncDefine, - Flag flag, String locations) throws ParseException; + Map updateProcessInstance(User loginUser, + long projectCode, + Integer processInstanceId, + String processInstanceJson, + String scheduleTime, + Boolean syncDefine, + Flag flag, + String locations) throws ParseException; /** * query parent process instance detail info by sub process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param subId sub process id * @return parent instance detail */ - Map queryParentInstanceBySubId(User loginUser, String projectName, Integer subId); + Map queryParentInstanceBySubId(User loginUser, + long projectCode, + Integer subId); /** * delete process instance by id, at the same time,delete task instance and their mapping relation data * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return delete result code */ - Map deleteProcessInstanceById(User loginUser, String projectName, Integer processInstanceId); + Map deleteProcessInstanceById(User loginUser, + long projectCode, + Integer processInstanceId); /** * view process instance variables @@ -155,7 +181,8 @@ public interface ProcessInstanceService { * @param states states array * @return process instance list */ - List queryByProcessDefineCodeAndStatus(Long processDefinitionCode, int[] states); + List queryByProcessDefineCodeAndStatus(Long processDefinitionCode, + int[] states); /** * query process instance by processDefinitionCode @@ -164,6 +191,6 @@ public interface ProcessInstanceService { * @param size size * @return process instance list */ - List queryByProcessDefineCode(Long processDefinitionCode,int size); - + List queryByProcessDefineCode(Long processDefinitionCode, + int size); } \ No newline at end of file diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java index dda40eaa11..9b8997211b 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java @@ -141,14 +141,12 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * return top n SUCCESS process instance order by running time which started between startTime and endTime */ @Override - public Map queryTopNLongestRunningProcessInstance(User loginUser, String projectName, int size, String startTime, String endTime) { - Map result = new HashMap<>(); - - Project project = projectMapper.queryByName(projectName); - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map queryTopNLongestRunningProcessInstance(User loginUser, long projectCode, int size, String startTime, String endTime) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } if (0 > size) { @@ -184,24 +182,22 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * query process instance by id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processId process instance id * @return process instance detail */ @Override - public Map queryProcessInstanceById(User loginUser, String projectName, Integer processId) { - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map queryProcessInstanceById(User loginUser, long projectCode, Integer processId) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } ProcessInstance processInstance = processService.findProcessInstanceDetailById(processId); ProcessDefinition processDefinition = processService.findProcessDefinition(processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion()); + processInstance.getProcessDefinitionVersion()); if (processDefinition == null) { putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, processId); @@ -222,7 +218,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * paging query process instance list, filtering according to project, process definition, time range, keyword, process status * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param pageNo page number * @param pageSize page size * @param processDefineId process definition id @@ -234,18 +230,22 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * @return process instance list */ @Override - public Map queryProcessInstanceList(User loginUser, String projectName, Integer processDefineId, - String startDate, String endDate, - String searchVal, String executorName, ExecutionStatus stateType, String host, - Integer pageNo, Integer pageSize) { - - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map queryProcessInstanceList(User loginUser, + long projectCode, + Integer processDefineId, + String startDate, + String endDate, + String searchVal, + String executorName, + ExecutionStatus stateType, + String host, + Integer pageNo, + Integer pageSize) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } int[] statusArray = null; @@ -268,8 +268,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce ProcessDefinition processDefinition = processDefineMapper.queryByDefineId(processDefineId); IPage processInstanceList = processInstanceMapper.queryProcessInstanceListPaging(page, - project.getCode(), processDefinition == null ? 0L : processDefinition.getCode(), searchVal, - executorId, statusArray, host, start, end); + project.getCode(), processDefinition == null ? 0L : processDefinition.getCode(), searchVal, + executorId, statusArray, host, start, end); List processInstances = processInstanceList.getRecords(); List userIds = CollectionUtils.transformToList(processInstances, ProcessInstance::getExecutorId); @@ -294,20 +294,18 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * query task list by process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processId process instance id * @return task list for the process instance * @throws IOException io exception */ @Override - public Map queryTaskListByProcessId(User loginUser, String projectName, Integer processId) throws IOException { - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map queryTaskListByProcessId(User loginUser, long projectCode, Integer processId) throws IOException { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } ProcessInstance processInstance = processService.findProcessInstanceDetailById(processId); List taskInstanceList = processService.findValidTaskListByProcessId(processId); @@ -328,7 +326,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce for (TaskInstance taskInstance : taskInstanceList) { if (TaskType.DEPENDENT.getDesc().equalsIgnoreCase(taskInstance.getTaskType())) { Result logResult = loggerService.queryLog( - taskInstance.getId(), Constants.LOG_QUERY_SKIP_LINE_NUMBER, Constants.LOG_QUERY_LIMIT); + taskInstance.getId(), Constants.LOG_QUERY_SKIP_LINE_NUMBER, Constants.LOG_QUERY_LIMIT); if (logResult.getCode() == Status.SUCCESS.ordinal()) { String log = logResult.getData(); Map resultMap = parseLogForDependentResult(log); @@ -346,7 +344,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce } BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(log.getBytes( - StandardCharsets.UTF_8)), StandardCharsets.UTF_8)); + StandardCharsets.UTF_8)), StandardCharsets.UTF_8)); String line; while ((line = br.readLine()) != null) { if (line.contains(DEPENDENT_SPLIT)) { @@ -371,19 +369,17 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * query sub process instance detail info by task id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param taskId task id * @return sub process instance detail */ @Override - public Map querySubProcessInstanceByTaskId(User loginUser, String projectName, Integer taskId) { - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map querySubProcessInstanceByTaskId(User loginUser, long projectCode, Integer taskId) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } TaskInstance taskInstance = processService.findTaskInstanceById(taskId); @@ -397,7 +393,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce } ProcessInstance subWorkflowInstance = processService.findSubProcessInstance( - taskInstance.getProcessInstanceId(), taskInstance.getId()); + taskInstance.getProcessInstanceId(), taskInstance.getId()); if (subWorkflowInstance == null) { putMsg(result, Status.SUB_PROCESS_INSTANCE_NOT_EXIST, taskId); return result; @@ -413,7 +409,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * update process instance * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceJson process instance json * @param processInstanceId process instance id * @param scheduleTime schedule time @@ -424,16 +420,14 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce */ @Transactional @Override - public Map updateProcessInstance(User loginUser, String projectName, Integer processInstanceId, + public Map updateProcessInstance(User loginUser, long projectCode, Integer processInstanceId, String processInstanceJson, String scheduleTime, Boolean syncDefine, Flag flag, String locations) { - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - //check project permission - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } //check process instance exists ProcessInstance processInstance = processService.findProcessInstanceDetailById(processInstanceId); @@ -444,11 +438,11 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce //check process instance status if (!processInstance.getState().typeIsFinished()) { putMsg(result, Status.PROCESS_INSTANCE_STATE_OPERATION_ERROR, - processInstance.getName(), processInstance.getState().toString(), "update"); + processInstance.getName(), processInstance.getState().toString(), "update"); return result; } ProcessDefinition processDefinition = processService.findProcessDefinition(processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion()); + processInstance.getProcessDefinitionVersion()); ProcessData processData = JSONUtils.parseObject(processInstanceJson, ProcessData.class); //check workflow json is valid TODO processInstanceJson --> processTaskRelationJson result = processDefinitionService.checkProcessNodeList(processInstanceJson); @@ -456,7 +450,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce return result; } Tenant tenant = processService.getTenantForProcess(processData.getTenantId(), - processDefinition.getUserId()); + processDefinition.getUserId()); setProcessInstance(processInstance, tenant, scheduleTime, processData); int updateDefine = 1; if (Boolean.TRUE.equals(syncDefine)) { @@ -464,7 +458,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce updateDefine = syncDefinition(loginUser, project, locations, processInstance, processDefinition, processData); processInstance.setProcessDefinitionVersion(processDefinitionLogMapper. - queryMaxVersionForDefinition(processInstance.getProcessDefinitionCode())); + queryMaxVersionForDefinition(processInstance.getProcessDefinitionCode())); } int update = processService.updateProcessInstance(processInstance); @@ -489,7 +483,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce processDefinition.setUpdateTime(new Date()); return processService.saveProcessDefinition(loginUser, project, processDefinition.getName(), - processDefinition.getDescription(), locations, processData, processDefinition, false); + processDefinition.getDescription(), locations, processData, processDefinition, false); } /** @@ -504,11 +498,11 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce processInstance.setScheduleTime(schedule); List globalParamList = processData.getGlobalParams(); Map globalParamMap = Optional.ofNullable(globalParamList) - .orElse(Collections.emptyList()) - .stream() - .collect(Collectors.toMap(Property::getProp, Property::getValue)); + .orElse(Collections.emptyList()) + .stream() + .collect(Collectors.toMap(Property::getProp, Property::getValue)); String globalParams = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList, - processInstance.getCmdTypeIfComplement(), schedule); + processInstance.getCmdTypeIfComplement(), schedule); processInstance.setTimeout(processData.getTimeout()); if (tenant != null) { processInstance.setTenantCode(tenant.getTenantCode()); @@ -520,19 +514,17 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * query parent process instance detail info by sub process instance id * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param subId sub process id * @return parent instance detail */ @Override - public Map queryParentInstanceBySubId(User loginUser, String projectName, Integer subId) { - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map queryParentInstanceBySubId(User loginUser, long projectCode, Integer subId) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } ProcessInstance subInstance = processService.findProcessInstanceDetailById(subId); @@ -561,21 +553,18 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce * delete process instance by id, at the same time,delete task instance and their mapping relation data * * @param loginUser login user - * @param projectName project name + * @param projectCode project code * @param processInstanceId process instance id * @return delete result code */ @Override @Transactional(rollbackFor = RuntimeException.class) - public Map deleteProcessInstanceById(User loginUser, String projectName, Integer processInstanceId) { - - Map result = new HashMap<>(); - Project project = projectMapper.queryByName(projectName); - - Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); - Status resultEnum = (Status) checkResult.get(Constants.STATUS); - if (resultEnum != Status.SUCCESS) { - return checkResult; + public Map deleteProcessInstanceById(User loginUser, long projectCode, Integer processInstanceId) { + Project project = projectMapper.queryByCode(projectCode); + //check user access for project + Map result = projectService.checkProjectAndAuth(loginUser, project, project.getName()); + if (result.get(Constants.STATUS) != Status.SUCCESS) { + return result; } ProcessInstance processInstance = processService.findProcessInstanceDetailById(processInstanceId); if (null == processInstance) { @@ -616,8 +605,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce } Map timeParams = BusinessTimeUtils - .getBusinessTime(processInstance.getCmdTypeIfComplement(), - processInstance.getScheduleTime()); + .getBusinessTime(processInstance.getCmdTypeIfComplement(), + processInstance.getScheduleTime()); String userDefinedParams = processInstance.getGlobalParams(); // global params List globalParams = new ArrayList<>(); @@ -653,7 +642,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce List taskInstanceList = taskInstanceMapper.findValidTaskListByProcessId(processInstance.getId(), Flag.YES); for (TaskInstance taskInstance : taskInstanceList) { TaskDefinitionLog taskDefinitionLog = taskDefinitionLogMapper.queryByDefinitionCodeAndVersion( - taskInstance.getTaskCode(), taskInstance.getTaskDefinitionVersion()); + taskInstance.getTaskCode(), taskInstance.getTaskDefinitionVersion()); String localParams = JSONUtils.getNodeString(taskDefinitionLog.getTaskParams(), LOCAL_PARAMS); if (StringUtils.isNotEmpty(localParams)) { @@ -689,8 +678,8 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl implements Proce } ProcessDefinition processDefinition = processDefinitionLogMapper.queryByDefinitionCodeAndVersion( - processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion() + processInstance.getProcessDefinitionCode(), + processInstance.getProcessDefinitionVersion() ); GanttDto ganttDto = new GanttDto(); DAG dag = processService.genDagGraph(processDefinition); diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java index f5ab017f08..959418cfbd 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java @@ -51,12 +51,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { paramsMap.add("pageNo", "2"); paramsMap.add("pageSize", "2"); - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/list-paging", "cxc_1113") - .header("sessionId", sessionId) - .params(paramsMap)) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/list-paging", "cxc_1113") + .header("sessionId", sessionId) + .params(paramsMap)) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); Assert.assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); @@ -64,12 +64,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testQueryTaskListByProcessId() throws Exception { - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/task-list-by-process-id", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("processInstanceId", "1203")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/task-list-by-process-id", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("processInstanceId", "1203")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -88,12 +88,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { paramsMap.add("syncDefine", "false"); paramsMap.add("locations", locations); - MvcResult mvcResult = mockMvc.perform(post("/projects/{projectName}/instance/update", "cxc_1113") - .header("sessionId", sessionId) - .params(paramsMap)) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(post("/projects/{projectCode}/instance/update", "cxc_1113") + .header("sessionId", sessionId) + .params(paramsMap)) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); Assert.assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); @@ -101,13 +101,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testQueryProcessInstanceById() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/select-by-id", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("processInstanceId", "1203")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/select-by-id", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("processInstanceId", "1203")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -117,13 +116,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testQuerySubProcessInstanceByTaskId() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/select-sub-process", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("taskId", "1203")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/select-sub-process", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("taskId", "1203")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -132,13 +130,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testQueryParentInstanceBySubId() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/select-parent-process", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("subId", "1204")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/select-parent-process", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("subId", "1204")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -148,13 +145,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testViewVariables() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/view-variables", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("processInstanceId", "1204")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/view-variables", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("processInstanceId", "1204")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -164,13 +160,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testDeleteProcessInstanceById() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/delete", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("processInstanceId", "1204")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/delete", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("processInstanceId", "1204")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); @@ -179,13 +174,12 @@ public class ProcessInstanceControllerTest extends AbstractControllerTest { @Test public void testBatchDeleteProcessInstanceByIds() throws Exception { - - MvcResult mvcResult = mockMvc.perform(get("/projects/{projectName}/instance/batch-delete", "cxc_1113") - .header(SESSION_ID, sessionId) - .param("processInstanceIds", "1205,1206")) - .andExpect(status().isOk()) - .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) - .andReturn(); + MvcResult mvcResult = mockMvc.perform(get("/projects/{projectCode}/instance/batch-delete", "cxc_1113") + .header(SESSION_ID, sessionId) + .param("processInstanceIds", "1205,1206")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) + .andReturn(); Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); Assert.assertNotNull(result); diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java index 31da02991a..5bc5e844a8 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java @@ -109,24 +109,25 @@ public class ProcessInstanceServiceTest { UsersService usersService; private String shellJson = "{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-9527\",\"name\":\"shell-1\"," - + "\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"#!/bin/bash\\necho \\\"shell-1\\\"\"}," - + "\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\":\"1\"," - + "\"timeout\":{\"strategy\":\"\",\"interval\":1,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\"," - + "\"workerGroupId\":-1,\"preTasks\":[]}],\"tenantId\":1,\"timeout\":0}"; + + "\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"#!/bin/bash\\necho \\\"shell-1\\\"\"}," + + "\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\":\"1\"," + + "\"timeout\":{\"strategy\":\"\",\"interval\":1,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\"," + + "\"workerGroupId\":-1,\"preTasks\":[]}],\"tenantId\":1,\"timeout\":0}"; @Test public void testQueryProcessInstanceList() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 46, "2020-01-01 00:00:00", - "2020-01-02 00:00:00", "", "test_user", ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, "project_test1")).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 46, "2020-01-01 00:00:00", + "2020-01-02 00:00:00", "", "test_user", ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); Date start = DateUtils.getScheduleDate("2020-01-01 00:00:00"); @@ -138,67 +139,67 @@ public class ProcessInstanceServiceTest { pageReturn.setRecords(processInstanceList); // data parameter check - putMsg(result, Status.SUCCESS, projectName); - Project project = getProject(projectName); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + putMsg(result, Status.SUCCESS, projectCode); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processDefineMapper.selectById(Mockito.anyInt())).thenReturn(getProcessDefinition()); when(processInstanceMapper.queryProcessInstanceListPaging(Mockito.any(Page.class) - , Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), - eq("192.168.xx.xx"), Mockito.any(), Mockito.any())).thenReturn(pageReturn); + , Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), + eq("192.168.xx.xx"), Mockito.any(), Mockito.any())).thenReturn(pageReturn); - Map dataParameterRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 1, "20200101 00:00:00", - "20200102 00:00:00", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + Map dataParameterRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "20200101 00:00:00", + "20200102 00:00:00", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, dataParameterRes.get(Constants.STATUS)); //project auth success - putMsg(result, Status.SUCCESS, projectName); + putMsg(result, Status.SUCCESS, projectCode); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(usersService.queryUser(loginUser.getId())).thenReturn(loginUser); when(usersService.getUserIdByName(loginUser.getUserName())).thenReturn(loginUser.getId()); when(processInstanceMapper.queryProcessInstanceListPaging(Mockito.any(Page.class), eq(project.getCode()), eq(1L), eq(""), eq(-1), Mockito.any(), - eq("192.168.xx.xx"), eq(start), eq(end))).thenReturn(pageReturn); + eq("192.168.xx.xx"), eq(start), eq(end))).thenReturn(pageReturn); when(usersService.queryUser(processInstance.getExecutorId())).thenReturn(loginUser); - Map successRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 1, "2020-01-01 00:00:00", - "2020-01-02 00:00:00", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + Map successRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "2020-01-01 00:00:00", + "2020-01-02 00:00:00", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); // data parameter empty when(processInstanceMapper.queryProcessInstanceListPaging(Mockito.any(Page.class), eq(project.getCode()), eq(1L), eq(""), eq(-1), Mockito.any(), - eq("192.168.xx.xx"), eq(null), eq(null))).thenReturn(pageReturn); - successRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 1, "", - "", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + eq("192.168.xx.xx"), eq(null), eq(null))).thenReturn(pageReturn); + successRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "", + "", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); //executor null when(usersService.queryUser(loginUser.getId())).thenReturn(null); when(usersService.getUserIdByName(loginUser.getUserName())).thenReturn(-1); - Map executorExistRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 1, "2020-01-01 00:00:00", - "2020-01-02 00:00:00", "", "admin", ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + Map executorExistRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "2020-01-01 00:00:00", + "2020-01-02 00:00:00", "", "admin", ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.SUCCESS, executorExistRes.get(Constants.STATUS)); //executor name empty when(processInstanceMapper.queryProcessInstanceListPaging(Mockito.any(Page.class), eq(project.getCode()), eq(1L), eq(""), eq(0), Mockito.any(), - eq("192.168.xx.xx"), eq(start), eq(end))).thenReturn(pageReturn); - Map executorEmptyRes = processInstanceService.queryProcessInstanceList(loginUser, projectName, 1, "2020-01-01 00:00:00", - "2020-01-02 00:00:00", "", "", ExecutionStatus.SUBMITTED_SUCCESS, - "192.168.xx.xx", 1, 10); + eq("192.168.xx.xx"), eq(start), eq(end))).thenReturn(pageReturn); + Map executorEmptyRes = processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "2020-01-01 00:00:00", + "2020-01-02 00:00:00", "", "", ExecutionStatus.SUBMITTED_SUCCESS, + "192.168.xx.xx", 1, 10); Assert.assertEquals(Status.SUCCESS, executorEmptyRes.get(Constants.STATUS)); } @Test public void testQueryTopNLongestRunningProcessInstance() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(5); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); int size = 10; String startTime = "2020-01-01 00:00:00"; String endTime = "2020-08-02 00:00:00"; @@ -206,77 +207,76 @@ public class ProcessInstanceServiceTest { Date end = DateUtils.getScheduleDate(endTime); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectName, size, startTime, endTime); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectCode, size, startTime, endTime); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //project auth success - putMsg(result, Status.SUCCESS, projectName); - Project project = getProject(projectName); + putMsg(result, Status.SUCCESS, projectCode); ProcessInstance processInstance = getProcessInstance(); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(usersService.queryUser(loginUser.getId())).thenReturn(loginUser); when(usersService.getUserIdByName(loginUser.getUserName())).thenReturn(loginUser.getId()); when(usersService.queryUser(processInstance.getExecutorId())).thenReturn(loginUser); - Map successRes = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectName, size, startTime, endTime); + Map successRes = processInstanceService.queryTopNLongestRunningProcessInstance(loginUser, projectCode, size, startTime, endTime); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); } @Test public void testQueryProcessInstanceById() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.queryProcessInstanceById(loginUser, projectName, 1); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.queryProcessInstanceById(loginUser, projectCode, 1); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //project auth success ProcessInstance processInstance = getProcessInstance(); - putMsg(result, Status.SUCCESS, projectName); - Project project = getProject(projectName); + putMsg(result, Status.SUCCESS, projectCode); ProcessDefinition processDefinition = getProcessDefinition(); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findProcessInstanceDetailById(processInstance.getId())).thenReturn(processInstance); when(processService.findProcessDefinition(processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion())).thenReturn(processDefinition); - Map successRes = processInstanceService.queryProcessInstanceById(loginUser, projectName, 1); + processInstance.getProcessDefinitionVersion())).thenReturn(processDefinition); + Map successRes = processInstanceService.queryProcessInstanceById(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); //worker group null - Map workerNullRes = processInstanceService.queryProcessInstanceById(loginUser, projectName, 1); + Map workerNullRes = processInstanceService.queryProcessInstanceById(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, workerNullRes.get(Constants.STATUS)); //worker group exist WorkerGroup workerGroup = getWorkGroup(); - Map workerExistRes = processInstanceService.queryProcessInstanceById(loginUser, projectName, 1); + Map workerExistRes = processInstanceService.queryProcessInstanceById(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, workerExistRes.get(Constants.STATUS)); } @Test public void testQueryTaskListByProcessId() throws IOException { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.queryTaskListByProcessId(loginUser, projectName, 1); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.queryTaskListByProcessId(loginUser, projectCode, 1); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //project auth success - putMsg(result, Status.SUCCESS, projectName); - Project project = getProject(projectName); + putMsg(result, Status.SUCCESS, projectCode); ProcessInstance processInstance = getProcessInstance(); processInstance.setState(ExecutionStatus.SUCCESS); TaskInstance taskInstance = new TaskInstance(); @@ -286,103 +286,107 @@ public class ProcessInstanceServiceTest { Result res = new Result(); res.setCode(Status.SUCCESS.ordinal()); res.setData("xxx"); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findProcessInstanceDetailById(processInstance.getId())).thenReturn(processInstance); when(processService.findValidTaskListByProcessId(processInstance.getId())).thenReturn(taskInstanceList); when(loggerService.queryLog(taskInstance.getId(), 0, 4098)).thenReturn(res); - Map successRes = processInstanceService.queryTaskListByProcessId(loginUser, projectName, 1); + Map successRes = processInstanceService.queryTaskListByProcessId(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); } @Test public void testParseLogForDependentResult() throws IOException { String logString = "[INFO] 2019-03-19 17:11:08.475 org.apache.dolphinscheduler.server.worker.log.TaskLogger:[172]" - + " - [taskAppId=TASK_223_10739_452334] dependent item complete :|| 223-ALL-day-last1Day,SUCCESS\n" - + "[INFO] 2019-03-19 17:11:08.476 org.apache.dolphinscheduler.server.worker.runner.TaskScheduleThread:[172]" - + " - task : 223_10739_452334 exit status code : 0\n" - + "[root@node2 current]# "; + + " - [taskAppId=TASK_223_10739_452334] dependent item complete :|| 223-ALL-day-last1Day,SUCCESS\n" + + "[INFO] 2019-03-19 17:11:08.476 org.apache.dolphinscheduler.server.worker.runner.TaskScheduleThread:[172]" + + " - task : 223_10739_452334 exit status code : 0\n" + + "[root@node2 current]# "; Map resultMap = - processInstanceService.parseLogForDependentResult(logString); + processInstanceService.parseLogForDependentResult(logString); Assert.assertEquals(1, resultMap.size()); } @Test public void testQuerySubProcessInstanceByTaskId() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, 1); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, 1); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //task null - Project project = getProject(projectName); - putMsg(result, Status.SUCCESS, projectName); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + putMsg(result, Status.SUCCESS, projectCode); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findTaskInstanceById(1)).thenReturn(null); - Map taskNullRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, 1); + Map taskNullRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, 1); Assert.assertEquals(Status.TASK_INSTANCE_NOT_EXISTS, taskNullRes.get(Constants.STATUS)); //task not sub process TaskInstance taskInstance = getTaskInstance(); taskInstance.setTaskType(TaskType.HTTP.getDesc()); taskInstance.setProcessInstanceId(1); + putMsg(result, Status.SUCCESS, projectCode); when(processService.findTaskInstanceById(1)).thenReturn(taskInstance); - Map notSubprocessRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, 1); + Map notSubprocessRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, 1); Assert.assertEquals(Status.TASK_INSTANCE_NOT_SUB_WORKFLOW_INSTANCE, notSubprocessRes.get(Constants.STATUS)); //sub process not exist TaskInstance subTask = getTaskInstance(); subTask.setTaskType(TaskType.SUB_PROCESS.getDesc()); subTask.setProcessInstanceId(1); + putMsg(result, Status.SUCCESS, projectCode); when(processService.findTaskInstanceById(subTask.getId())).thenReturn(subTask); when(processService.findSubProcessInstance(subTask.getProcessInstanceId(), subTask.getId())).thenReturn(null); - Map subprocessNotExistRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, 1); + Map subprocessNotExistRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, 1); Assert.assertEquals(Status.SUB_PROCESS_INSTANCE_NOT_EXIST, subprocessNotExistRes.get(Constants.STATUS)); //sub process exist ProcessInstance processInstance = getProcessInstance(); + putMsg(result, Status.SUCCESS, projectCode); when(processService.findSubProcessInstance(taskInstance.getProcessInstanceId(), taskInstance.getId())).thenReturn(processInstance); - Map subprocessExistRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectName, 1); + Map subprocessExistRes = processInstanceService.querySubProcessInstanceByTaskId(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, subprocessExistRes.get(Constants.STATUS)); } @Test public void testUpdateProcessInstance() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.updateProcessInstance(loginUser, projectName, 1, - shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.updateProcessInstance(loginUser, projectCode, 1, + shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //process instance null - Project project = getProject(projectName); - putMsg(result, Status.SUCCESS, projectName); + putMsg(result, Status.SUCCESS, projectCode); ProcessInstance processInstance = getProcessInstance(); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findProcessInstanceDetailById(1)).thenReturn(null); - Map processInstanceNullRes = processInstanceService.updateProcessInstance(loginUser, projectName, 1, - shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); + Map processInstanceNullRes = processInstanceService.updateProcessInstance(loginUser, projectCode, 1, + shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); Assert.assertEquals(Status.PROCESS_INSTANCE_NOT_EXIST, processInstanceNullRes.get(Constants.STATUS)); //process instance not finish when(processService.findProcessInstanceDetailById(1)).thenReturn(processInstance); processInstance.setState(ExecutionStatus.RUNNING_EXECUTION); - Map processInstanceNotFinishRes = processInstanceService.updateProcessInstance(loginUser, projectName, 1, - shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); + putMsg(result, Status.SUCCESS, projectCode); + Map processInstanceNotFinishRes = processInstanceService.updateProcessInstance(loginUser, projectCode, 1, + shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); Assert.assertEquals(Status.PROCESS_INSTANCE_STATE_OPERATION_ERROR, processInstanceNotFinishRes.get(Constants.STATUS)); //process instance finish @@ -402,82 +406,79 @@ public class ProcessInstanceServiceTest { when(processService.updateProcessInstance(processInstance)).thenReturn(1); when(processDefinitionService.checkProcessNodeList(shellJson)).thenReturn(result); when(processService.findProcessDefinition(processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion())).thenReturn(processDefinition); - - Map processInstanceFinishRes = processInstanceService.updateProcessInstance(loginUser, projectName, 1, - shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); + processInstance.getProcessDefinitionVersion())).thenReturn(processDefinition); + putMsg(result, Status.SUCCESS, projectCode); + Map processInstanceFinishRes = processInstanceService.updateProcessInstance(loginUser, projectCode, 1, + shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); Assert.assertEquals(Status.UPDATE_PROCESS_INSTANCE_ERROR, processInstanceFinishRes.get(Constants.STATUS)); //success when(processService.saveProcessDefinition(Mockito.any(), Mockito.any(), - Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), - Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(1); + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), + Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(1); when(processService.findProcessDefinition(46L, 0)).thenReturn(processDefinition); - putMsg(result, Status.SUCCESS, projectName); + putMsg(result, Status.SUCCESS, projectCode); - Map successRes = processInstanceService.updateProcessInstance(loginUser, projectName, 1, - shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); + Map successRes = processInstanceService.updateProcessInstance(loginUser, projectCode, 1, + shellJson, "2020-02-21 00:00:00", true, Flag.YES, ""); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); } @Test public void testQueryParentInstanceBySubId() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - Map proejctAuthFailRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, 1); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); + Map proejctAuthFailRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, 1); Assert.assertEquals(Status.PROJECT_NOT_FOUNT, proejctAuthFailRes.get(Constants.STATUS)); //process instance null - Project project = getProject(projectName); - putMsg(result, Status.SUCCESS, projectName); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + putMsg(result, Status.SUCCESS, projectCode); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findProcessInstanceDetailById(1)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); - Map processInstanceNullRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, 1); + Map processInstanceNullRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, 1); Assert.assertEquals(Status.PROCESS_INSTANCE_NOT_EXIST, processInstanceNullRes.get(Constants.STATUS)); //not sub process ProcessInstance processInstance = getProcessInstance(); processInstance.setIsSubProcess(Flag.NO); + putMsg(result, Status.SUCCESS, projectCode); when(processService.findProcessInstanceDetailById(1)).thenReturn(processInstance); - Map notSubProcessRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, 1); + Map notSubProcessRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, 1); Assert.assertEquals(Status.PROCESS_INSTANCE_NOT_SUB_PROCESS_INSTANCE, notSubProcessRes.get(Constants.STATUS)); //sub process processInstance.setIsSubProcess(Flag.YES); + putMsg(result, Status.SUCCESS, projectCode); when(processService.findParentProcessInstance(1)).thenReturn(null); - Map subProcessNullRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, 1); + Map subProcessNullRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, 1); Assert.assertEquals(Status.SUB_PROCESS_INSTANCE_NOT_EXIST, subProcessNullRes.get(Constants.STATUS)); //success + putMsg(result, Status.SUCCESS, projectCode); when(processService.findParentProcessInstance(1)).thenReturn(processInstance); - Map successRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectName, 1); + Map successRes = processInstanceService.queryParentInstanceBySubId(loginUser, projectCode, 1); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); } @Test public void testDeleteProcessInstanceById() { - String projectName = "project_test1"; + long projectCode = 1L; User loginUser = getAdminUser(); + Project project = getProject(projectCode); Map result = new HashMap<>(); - putMsg(result, Status.PROJECT_NOT_FOUNT, projectName); - - //project auth fail - when(projectMapper.queryByName(projectName)).thenReturn(null); - when(projectService.checkProjectAndAuth(loginUser, null, projectName)).thenReturn(result); - + putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode); //process instance null - Project project = getProject(projectName); - putMsg(result, Status.SUCCESS, projectName); - when(projectMapper.queryByName(projectName)).thenReturn(project); - when(projectService.checkProjectAndAuth(loginUser, project, projectName)).thenReturn(result); + putMsg(result, Status.SUCCESS, projectCode); + when(projectMapper.queryByCode(projectCode)).thenReturn(project); + when(projectService.checkProjectAndAuth(loginUser, project, project.getName())).thenReturn(result); when(processService.findProcessInstanceDetailById(1)).thenReturn(null); } @@ -503,8 +504,8 @@ public class ProcessInstanceServiceTest { taskInstance.setStartTime(new Date()); when(processInstanceMapper.queryDetailById(1)).thenReturn(processInstance); when(processDefinitionLogMapper.queryByDefinitionCodeAndVersion( - processInstance.getProcessDefinitionCode(), - processInstance.getProcessDefinitionVersion() + processInstance.getProcessDefinitionCode(), + processInstance.getProcessDefinitionVersion() )).thenReturn(new ProcessDefinitionLog()); when(processInstanceMapper.queryDetailById(1)).thenReturn(processInstance); when(taskInstanceMapper.queryByInstanceIdAndName(Mockito.anyInt(), Mockito.any())).thenReturn(taskInstance); @@ -514,7 +515,7 @@ public class ProcessInstanceServiceTest { } when(processService.genDagGraph(Mockito.any(ProcessDefinition.class))) - .thenReturn(graph); + .thenReturn(graph); Map successRes = processInstanceService.viewGantt(1); Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS)); @@ -536,14 +537,14 @@ public class ProcessInstanceServiceTest { /** * get mock Project * - * @param projectName projectName + * @param projectCode projectCode * @return Project */ - private Project getProject(String projectName) { + private Project getProject(long projectCode) { Project project = new Project(); - project.setCode(1L); + project.setCode(projectCode); project.setId(1); - project.setName(projectName); + project.setName("project_test1"); project.setUserId(1); return project; }