Flowable工程化改造相关文档
本章将针对前期进行的Flowable流程引擎研究,进行相应的工程化改造,改造过程分别为对Flowable引擎流程文件远程化处理,流程过程接口化升级,等方面进行改造,以适配其他项目对流程引擎的API调用
首先对流程引擎项目主要流转功能进行API封装暴露出接口
/*** 根据流程Key创建一个流程* @response* @return*/@RequestMapping(value = "/pushFlowable",method = RequestMethod.POST)public R<String> pushFlowable(@RequestBody FlowableCreateDTO flowableCreate) {Map<String, Object> map = new HashMap<>();for (FlowableMapDTO flowable : flowableCreate.getMapList()){map.put(flowable.getKey(),flowable.getValue());}ProcessInstance studentLeave = runtimeService.startProcessInstanceByKey(flowableCreate.getFlowableKey(), map);Task task = taskService.createTaskQuery().processInstanceId(studentLeave.getId()).singleResult();taskService.complete(task.getId());return R.data(studentLeave.getId());}/*** 根据分组信息查询当前分组下的任务列表* @param queryDTO* @return*/@RequestMapping(value = "/getTaskListByGroup",method = RequestMethod.POST)public R<List<FlowableTaskInfoDTO>> getTaskListByGroup(@RequestBody FlowableTaskQueryDTO queryDTO) {List<Task> teacherTaskList = taskService.createTaskQuery().taskCandidateGroup(queryDTO.getGroupKey()).list();List<FlowableTaskInfoDTO> infoDTOList = new ArrayList<>();for (Task task : teacherTaskList){FlowableTaskInfoDTO infoDTO = new FlowableTaskInfoDTO();BeanUtils.copyProperties(task,infoDTO);infoDTOList.add(infoDTO);}return R.data(infoDTOList);}/*** 根据用户信息查询当前用户的任务列表* @param queryDTO* @return*/@RequestMapping(value = "/getTaskListByUser",method = RequestMethod.POST)public R<List<FlowableTaskInfoDTO>> getTaskListByUser(@RequestBody FlowableTaskQueryDTO queryDTO) {List<Task> teacherTaskList = taskService.createTaskQuery().taskCandidateUser(queryDTO.getUserKey()).list();List<FlowableTaskInfoDTO> infoDTOList = new ArrayList<>();for (Task task : teacherTaskList){FlowableTaskInfoDTO infoDTO = new FlowableTaskInfoDTO();BeanUtils.copyProperties(task,infoDTO);infoDTOList.add(infoDTO);}return R.data(infoDTOList);}/*** 根据任务ID执行下一步* @response* @return*/@RequestMapping(value = "/completeTaskById",method = RequestMethod.POST)public R<String> completeTaskById(@RequestBody FlowableCreateDTO flowableCreate) {Map<String, Object> map = new HashMap<>();for (FlowableMapDTO flowable : flowableCreate.getMapList()){map.put(flowable.getKey(),flowable.getValue());}taskService.complete(flowableCreate.getTaskId(), map);return R.data("success");}/*** 根据任务ID查询流程流转记录* @response* @return*/@RequestMapping(value = "/getHistoricActivityListById",method = RequestMethod.POST)public R<List<FlowableHistoricActivityDTO>> getHistoricActivityListById(@RequestBody FlowableCreateDTO flowableCreate) {// 查看历史List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(flowableCreate.getProcessInstanceId()).finished().orderByHistoricActivityInstanceEndTime().asc().list();List<FlowableHistoricActivityDTO> historicActivityDTOList = new ArrayList<>();for (HistoricActivityInstance activity : activities) {FlowableHistoricActivityDTO dto = new FlowableHistoricActivityDTO();BeanUtils.copyProperties(activity,dto);historicActivityDTOList.add(dto);}return R.data(historicActivityDTOList);}