Loading escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java +26 −0 Original line number Diff line number Diff line Loading @@ -282,4 +282,30 @@ public class ProcessInstanceController extends BaseController{ return error(Status.ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getCode(),ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getMsg()); } } /** * batch delete process instance by ids, at the same time, * delete task instance and their mapping relation data * * @param loginUser * @param projectName * @param processInstanceIds * @return */ @GetMapping(value="/batch-delete") @ResponseStatus(HttpStatus.OK) public Result batchDeleteProcessInstanceByIds(@RequestAttribute(value = Constants.SESSION_USER) User loginUser, @PathVariable String projectName, @RequestParam("processInstanceIds") String processInstanceIds ){ try{ logger.info("delete process instance by ids, login user:{}, project name:{}, process instance ids :{}", loginUser.getUserName(), projectName, processInstanceIds); Map<String, Object> result = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, projectName, processInstanceIds); return returnDataList(result); }catch (Exception e){ logger.error(BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg(),e); return error(Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getCode(), Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg()); } } } escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ public enum Status { NAME_EXIST(10135, "name {0} already exists"), SAVE_ERROR(10136, "save error"), DELETE_PROJECT_ERROR_DEFINES_NOT_NULL(10137, "please delete the process definitions in project first!"), BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR(10117,"batch delete process instance by ids {0} error"), Loading escheduler-api/src/main/java/cn/escheduler/api/service/ProcessInstanceService.java +43 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,7 @@ public class ProcessInstanceService extends BaseDAGService { putMsg(result, Status.PROCESS_INSTANCE_NOT_EXIST, workflowId); return result; } int delete = processDao.deleteWorkProcessInstanceById(workflowId); processDao.deleteAllSubWorkProcessByParentId(workflowId); processDao.deleteWorkProcessMapByParentId(workflowId); Loading @@ -479,6 +480,48 @@ public class ProcessInstanceService extends BaseDAGService { return result; } /** * batch delete process instance by ids, at the same time,delete task instance and their mapping relation data * * @param loginUser * @param projectName * @param processInstanceIds * @return */ public Map<String, Object> batchDeleteProcessInstanceByIds(User loginUser, String projectName, String processInstanceIds) { Map<String, Object> result = new HashMap<>(5); List<Integer> deleteFailedIdList = new ArrayList<Integer>(); Project project = projectMapper.queryByName(projectName); Map<String, Object> checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); Status resultEnum = (Status) checkResult.get(Constants.STATUS); if (resultEnum != Status.SUCCESS) { return checkResult; } if(StringUtils.isNotEmpty(processInstanceIds)){ String[] processInstanceIdArray = processInstanceIds.split(","); for (String strProcessInstanceId:processInstanceIdArray) { int processInstanceId = Integer.parseInt(strProcessInstanceId); try { deleteProcessInstanceById(loginUser, projectName, processInstanceId); } catch (Exception e) { deleteFailedIdList.add(processInstanceId); } } } if(deleteFailedIdList.size() > 0){ putMsg(result, Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR,StringUtils.join(deleteFailedIdList.toArray(),",")); }else{ putMsg(result, Status.SUCCESS); } return result; } /** * view process instance variables * Loading escheduler-api/src/test/java/cn/escheduler/api/service/ProcessInstanceServiceTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -75,4 +75,16 @@ public class ProcessInstanceServiceTest { Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS)); logger.info(JSON.toJSONString(map)); } @Test public void batchDeleteProcessInstanceByIds() throws Exception { User loginUser = new User(); loginUser.setId(2); loginUser.setUserType(UserType.GENERAL_USER); Map<String, Object> map = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, "li_test_1", "4,2,300"); Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS)); logger.info(JSON.toJSONString(map)); } } No newline at end of file Loading
escheduler-api/src/main/java/cn/escheduler/api/controller/ProcessInstanceController.java +26 −0 Original line number Diff line number Diff line Loading @@ -282,4 +282,30 @@ public class ProcessInstanceController extends BaseController{ return error(Status.ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getCode(),ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getMsg()); } } /** * batch delete process instance by ids, at the same time, * delete task instance and their mapping relation data * * @param loginUser * @param projectName * @param processInstanceIds * @return */ @GetMapping(value="/batch-delete") @ResponseStatus(HttpStatus.OK) public Result batchDeleteProcessInstanceByIds(@RequestAttribute(value = Constants.SESSION_USER) User loginUser, @PathVariable String projectName, @RequestParam("processInstanceIds") String processInstanceIds ){ try{ logger.info("delete process instance by ids, login user:{}, project name:{}, process instance ids :{}", loginUser.getUserName(), projectName, processInstanceIds); Map<String, Object> result = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, projectName, processInstanceIds); return returnDataList(result); }catch (Exception e){ logger.error(BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg(),e); return error(Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getCode(), Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg()); } } }
escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java +1 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ public enum Status { NAME_EXIST(10135, "name {0} already exists"), SAVE_ERROR(10136, "save error"), DELETE_PROJECT_ERROR_DEFINES_NOT_NULL(10137, "please delete the process definitions in project first!"), BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR(10117,"batch delete process instance by ids {0} error"), Loading
escheduler-api/src/main/java/cn/escheduler/api/service/ProcessInstanceService.java +43 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,7 @@ public class ProcessInstanceService extends BaseDAGService { putMsg(result, Status.PROCESS_INSTANCE_NOT_EXIST, workflowId); return result; } int delete = processDao.deleteWorkProcessInstanceById(workflowId); processDao.deleteAllSubWorkProcessByParentId(workflowId); processDao.deleteWorkProcessMapByParentId(workflowId); Loading @@ -479,6 +480,48 @@ public class ProcessInstanceService extends BaseDAGService { return result; } /** * batch delete process instance by ids, at the same time,delete task instance and their mapping relation data * * @param loginUser * @param projectName * @param processInstanceIds * @return */ public Map<String, Object> batchDeleteProcessInstanceByIds(User loginUser, String projectName, String processInstanceIds) { Map<String, Object> result = new HashMap<>(5); List<Integer> deleteFailedIdList = new ArrayList<Integer>(); Project project = projectMapper.queryByName(projectName); Map<String, Object> checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); Status resultEnum = (Status) checkResult.get(Constants.STATUS); if (resultEnum != Status.SUCCESS) { return checkResult; } if(StringUtils.isNotEmpty(processInstanceIds)){ String[] processInstanceIdArray = processInstanceIds.split(","); for (String strProcessInstanceId:processInstanceIdArray) { int processInstanceId = Integer.parseInt(strProcessInstanceId); try { deleteProcessInstanceById(loginUser, projectName, processInstanceId); } catch (Exception e) { deleteFailedIdList.add(processInstanceId); } } } if(deleteFailedIdList.size() > 0){ putMsg(result, Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR,StringUtils.join(deleteFailedIdList.toArray(),",")); }else{ putMsg(result, Status.SUCCESS); } return result; } /** * view process instance variables * Loading
escheduler-api/src/test/java/cn/escheduler/api/service/ProcessInstanceServiceTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -75,4 +75,16 @@ public class ProcessInstanceServiceTest { Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS)); logger.info(JSON.toJSONString(map)); } @Test public void batchDeleteProcessInstanceByIds() throws Exception { User loginUser = new User(); loginUser.setId(2); loginUser.setUserType(UserType.GENERAL_USER); Map<String, Object> map = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, "li_test_1", "4,2,300"); Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS)); logger.info(JSON.toJSONString(map)); } } No newline at end of file