diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java index 487ffd375..84a8a5c2a 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java @@ -42,7 +42,7 @@ public class DataBaseHelper { String databaseProductName = metaData.getDatabaseProductName(); return DataBaseType.find(databaseProductName); } catch (SQLException e) { - throw new ServiceException(e.getMessage()); + throw new RuntimeException("获取数据库类型失败", e); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index ffa4216b3..4de669da7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -211,27 +211,17 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { Function.identity() ); - try { - // 逐一触发删除事件 - instances.forEach(instance -> { - Definition definition = definitionMap.get(instance.getDefinitionId()); - if (ObjectUtil.isNull(definition)) { - log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); - return; - } - flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); - }); - // 删除实例 - boolean remove = insService.remove(instanceIds); - if (!remove) { - log.warn("删除流程实例失败!"); - throw new ServiceException("删除流程实例失败"); + // 逐一触发删除事件 + instances.forEach(instance -> { + Definition definition = definitionMap.get(instance.getDefinitionId()); + if (ObjectUtil.isNull(definition)) { + log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); + return; } - } catch (Exception e) { - log.warn("操作失败!{}", e.getMessage()); - throw new ServiceException(e.getMessage()); - } - return true; + flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); + }); + // 删除实例 + return insService.remove(instanceIds); } /** @@ -254,27 +244,22 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { Definition::getId, Function.identity() ); - try { - // 逐一触发删除事件 - instances.forEach(instance -> { - Definition definition = definitionMap.get(instance.getDefinitionId()); - if (ObjectUtil.isNull(definition)) { - log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); - return; - } - flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); - }); - List flowTaskList = flwTaskService.selectByInstIds(instanceIds); - if (CollUtil.isNotEmpty(flowTaskList)) { - FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId)); + // 逐一触发删除事件 + instances.forEach(instance -> { + Definition definition = definitionMap.get(instance.getDefinitionId()); + if (ObjectUtil.isNull(definition)) { + log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); + return; } - FlowEngine.taskService().deleteByInsIds(instanceIds); - FlowEngine.hisTaskService().deleteByInsIds(instanceIds); - FlowEngine.insService().removeByIds(instanceIds); - } catch (Exception e) { - log.warn("操作失败!{}", e.getMessage()); - throw new ServiceException(e.getMessage()); + flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); + }); + List flowTaskList = flwTaskService.selectByInstIds(instanceIds); + if (CollUtil.isNotEmpty(flowTaskList)) { + FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId)); } + FlowEngine.taskService().deleteByInsIds(instanceIds); + FlowEngine.hisTaskService().deleteByInsIds(instanceIds); + FlowEngine.insService().removeByIds(instanceIds); return true; } @@ -286,29 +271,24 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean cancelProcessApply(FlowCancelBo bo) { - try { - Instance instance = selectInstByBusinessId(bo.getBusinessId()); - if (instance == null) { - throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); - } - Definition definition = defService.getById(instance.getDefinitionId()); - if (definition == null) { - throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF); - } - String message = bo.getMessage(); - String userIdStr = LoginHelper.getUserIdStr(); - BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus()); - FlowParams flowParams = FlowParams.build() - .message(message) - .flowStatus(BusinessStatusEnum.CANCEL.getStatus()) - .hisStatus(BusinessStatusEnum.CANCEL.getStatus()) - .handler(userIdStr) - .ignore(true); - taskService.revoke(instance.getId(), flowParams); - } catch (Exception e) { - log.error("撤销失败: {}", e.getMessage(), e); - throw new ServiceException(e.getMessage()); + Instance instance = selectInstByBusinessId(bo.getBusinessId()); + if (instance == null) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); } + Definition definition = defService.getById(instance.getDefinitionId()); + if (definition == null) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF); + } + String message = bo.getMessage(); + String userIdStr = LoginHelper.getUserIdStr(); + BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus()); + FlowParams flowParams = FlowParams.build() + .message(message) + .flowStatus(BusinessStatusEnum.CANCEL.getStatus()) + .hisStatus(BusinessStatusEnum.CANCEL.getStatus()) + .handler(userIdStr) + .ignore(true); + taskService.revoke(instance.getId(), flowParams); return true; } @@ -422,20 +402,14 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { if (flowInstance == null) { throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); } - try { - Map variableMap = new HashMap<>(Optional.ofNullable(flowInstance.getVariableMap()).orElse(Collections.emptyMap())); - if (!variableMap.containsKey(bo.getKey())) { - log.error("变量不存在: {}", bo.getKey()); - return false; - } - variableMap.put(bo.getKey(), bo.getValue()); - flowInstance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); - flowInstanceMapper.updateById(flowInstance); - } catch (Exception e) { - log.error("设置流程变量失败: {}", e.getMessage(), e); - throw new ServiceException(e.getMessage()); + Map variableMap = new HashMap<>(Optional.ofNullable(flowInstance.getVariableMap()).orElse(Collections.emptyMap())); + if (!variableMap.containsKey(bo.getKey())) { + log.error("变量不存在: {}", bo.getKey()); + return false; } - return true; + variableMap.put(bo.getKey(), bo.getValue()); + flowInstance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); + return flowInstanceMapper.updateById(flowInstance) > 0; } /** @@ -480,21 +454,16 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean processInvalid(FlowInvalidBo bo) { - try { - Instance instance = insService.getById(bo.getId()); - if (instance != null) { - BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); - } - FlowParams flowParams = FlowParams.build() - .message(bo.getComment()) - .flowStatus(BusinessStatusEnum.INVALID.getStatus()) - .hisStatus(TaskStatusEnum.INVALID.getStatus()) - .ignore(true); - taskService.terminationByInsId(bo.getId(), flowParams); - return true; - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); + Instance instance = insService.getById(bo.getId()); + if (instance != null) { + BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); } + FlowParams flowParams = FlowParams.build() + .message(bo.getComment()) + .flowStatus(BusinessStatusEnum.INVALID.getStatus()) + .hisStatus(TaskStatusEnum.INVALID.getStatus()) + .ignore(true); + taskService.terminationByInsId(bo.getId(), flowParams); + return true; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index eaad21849..2607dfd21 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -150,12 +150,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { .flowCode(startProcessBo.getFlowCode()) .variable(startProcessBo.getVariables()) .flowStatus(BusinessStatusEnum.DRAFT.getStatus()); - Instance instance; - try { - instance = insService.start(businessId, flowParams); - } catch (Exception e) { - throw new ServiceException(e.getMessage()); - } + Instance instance = insService.start(businessId, flowParams); // 保存流程实例业务信息 this.buildFlowInstanceBizExt(instance, bizExt); // 申请人执行流程 @@ -202,52 +197,47 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean completeTask(CompleteTaskBo completeTaskBo) { - try { - // 获取任务ID并查询对应的流程任务和实例信息 - Long taskId = completeTaskBo.getTaskId(); - List messageType = completeTaskBo.getMessageType(); - String notice = completeTaskBo.getNotice(); - // 获取抄送人 - List flowCopyList = completeTaskBo.getFlowCopyList(); - // 设置抄送人 - Map variables = completeTaskBo.getVariables(); - variables.put(FlowConstant.FLOW_COPY_LIST, flowCopyList); - // 消息类型 - variables.put(FlowConstant.MESSAGE_TYPE, messageType); - // 消息通知 - variables.put(FlowConstant.MESSAGE_NOTICE, notice); + // 获取任务ID并查询对应的流程任务和实例信息 + Long taskId = completeTaskBo.getTaskId(); + List messageType = completeTaskBo.getMessageType(); + String notice = completeTaskBo.getNotice(); + // 获取抄送人 + List flowCopyList = completeTaskBo.getFlowCopyList(); + // 设置抄送人 + Map variables = completeTaskBo.getVariables(); + variables.put(FlowConstant.FLOW_COPY_LIST, flowCopyList); + // 消息类型 + variables.put(FlowConstant.MESSAGE_TYPE, messageType); + // 消息通知 + variables.put(FlowConstant.MESSAGE_NOTICE, notice); - FlowTask flowTask = flowTaskMapper.selectById(taskId); - if (ObjectUtil.isNull(flowTask)) { - throw new ServiceException("流程任务不存在或任务已审批!"); - } - Instance ins = insService.getById(flowTask.getInstanceId()); - // 检查流程状态是否为草稿、已撤销或已退回状态,若是则执行流程提交监听 - if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { - variables.put(FlowConstant.SUBMIT, true); - } - // 设置弹窗处理人 - Map assigneeMap = setPopAssigneeMap(completeTaskBo.getAssigneeMap(), ins.getVariableMap()); - if (CollUtil.isNotEmpty(assigneeMap)) { - variables.putAll(assigneeMap); - } - // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 - FlowParams flowParams = FlowParams.build() - .handler(completeTaskBo.getHandler()) - .variable(variables) - .skipType(SkipType.PASS.getKey()) - .message(completeTaskBo.getMessage()) - .flowStatus(BusinessStatusEnum.WAITING.getStatus()) - .hisStatus(TaskStatusEnum.PASS.getStatus()) - .hisTaskExt(completeTaskBo.getFileId()); - Boolean autoPass = Convert.toBool(variables.getOrDefault(AUTO_PASS, false)); - skipTask(taskId, flowParams, flowTask.getInstanceId(), autoPass); - return true; - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); + FlowTask flowTask = flowTaskMapper.selectById(taskId); + if (ObjectUtil.isNull(flowTask)) { + throw new ServiceException("流程任务不存在或任务已审批!"); } + Instance ins = insService.getById(flowTask.getInstanceId()); + // 检查流程状态是否为草稿、已撤销或已退回状态,若是则执行流程提交监听 + if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { + variables.put(FlowConstant.SUBMIT, true); + } + // 设置弹窗处理人 + Map assigneeMap = setPopAssigneeMap(completeTaskBo.getAssigneeMap(), ins.getVariableMap()); + if (CollUtil.isNotEmpty(assigneeMap)) { + variables.putAll(assigneeMap); + } + // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 + FlowParams flowParams = FlowParams.build() + .handler(completeTaskBo.getHandler()) + .variable(variables) + .skipType(SkipType.PASS.getKey()) + .message(completeTaskBo.getMessage()) + .flowStatus(BusinessStatusEnum.WAITING.getStatus()) + .hisStatus(TaskStatusEnum.PASS.getStatus()) + .hisTaskExt(completeTaskBo.getFileId()); + Boolean autoPass = Convert.toBool(variables.getOrDefault(AUTO_PASS, false)); + skipTask(taskId, flowParams, flowTask.getInstanceId(), autoPass); + return true; } /** @@ -478,40 +468,35 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean backProcess(BackProcessBo bo) { - try { - Long taskId = bo.getTaskId(); - String notice = bo.getNotice(); - List messageType = bo.getMessageType(); - String message = bo.getMessage(); - FlowTask task = flowTaskMapper.selectById(taskId); - if (ObjectUtil.isNull(task)) { - throw new ServiceException("任务不存在!"); - } - Instance inst = insService.getById(task.getInstanceId()); - BusinessStatusEnum.checkBackStatus(inst.getFlowStatus()); - Long definitionId = task.getDefinitionId(); - String applyNodeCode = flwCommonService.applyNodeCode(definitionId); - - Map variable = new HashMap<>(); - // 消息类型 - variable.put(FlowConstant.MESSAGE_TYPE, messageType); - // 消息通知 - variable.put(FlowConstant.MESSAGE_NOTICE, notice); - - FlowParams flowParams = FlowParams.build() - .nodeCode(bo.getNodeCode()) - .variable(variable) - .message(message) - .skipType(SkipType.REJECT.getKey()) - .flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus()) - .hisStatus(TaskStatusEnum.BACK.getStatus()) - .hisTaskExt(bo.getFileId()); - taskService.skip(task.getId(), flowParams); - return true; - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); + Long taskId = bo.getTaskId(); + String notice = bo.getNotice(); + List messageType = bo.getMessageType(); + String message = bo.getMessage(); + FlowTask task = flowTaskMapper.selectById(taskId); + if (ObjectUtil.isNull(task)) { + throw new ServiceException("任务不存在!"); } + Instance inst = insService.getById(task.getInstanceId()); + BusinessStatusEnum.checkBackStatus(inst.getFlowStatus()); + Long definitionId = task.getDefinitionId(); + String applyNodeCode = flwCommonService.applyNodeCode(definitionId); + + Map variable = new HashMap<>(); + // 消息类型 + variable.put(FlowConstant.MESSAGE_TYPE, messageType); + // 消息通知 + variable.put(FlowConstant.MESSAGE_NOTICE, notice); + + FlowParams flowParams = FlowParams.build() + .nodeCode(bo.getNodeCode()) + .variable(variable) + .message(message) + .skipType(SkipType.REJECT.getKey()) + .flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus()) + .hisStatus(TaskStatusEnum.BACK.getStatus()) + .hisTaskExt(bo.getFileId()); + taskService.skip(task.getId(), flowParams); + return true; } /** @@ -565,26 +550,21 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean terminationTask(FlowTerminationBo bo) { - try { - Long taskId = bo.getTaskId(); - Task task = taskService.getById(taskId); - if (task == null) { - throw new ServiceException("任务不存在!"); - } - Instance instance = insService.getById(task.getInstanceId()); - if (ObjectUtil.isNotNull(instance)) { - BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); - } - FlowParams flowParams = FlowParams.build() - .message(bo.getComment()) - .flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) - .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); - taskService.termination(taskId, flowParams); - return true; - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); + Long taskId = bo.getTaskId(); + Task task = taskService.getById(taskId); + if (task == null) { + throw new ServiceException("任务不存在!"); } + Instance instance = insService.getById(task.getInstanceId()); + if (ObjectUtil.isNotNull(instance)) { + BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); + } + FlowParams flowParams = FlowParams.build() + .message(bo.getComment()) + .flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) + .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); + taskService.termination(taskId, flowParams); + return true; } /** @@ -806,23 +786,18 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (CollUtil.isEmpty(taskIdList)) { return false; } - try { - List flowTasks = this.selectByIdList(taskIdList); - // 批量删除现有任务的办理人记录 - if (CollUtil.isNotEmpty(flowTasks)) { - FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); - List userList = StreamUtils.toList(flowTasks, flowTask -> - new FlowUser() - .setType(TaskAssigneeType.APPROVER.getCode()) - .setProcessedBy(userId) - .setAssociated(flowTask.getId())); - if (CollUtil.isNotEmpty(userList)) { - FlowEngine.userService().saveBatch(userList); - } + List flowTasks = this.selectByIdList(taskIdList); + // 批量删除现有任务的办理人记录 + if (CollUtil.isNotEmpty(flowTasks)) { + FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); + List userList = StreamUtils.toList(flowTasks, flowTask -> + new FlowUser() + .setType(TaskAssigneeType.APPROVER.getCode()) + .setProcessedBy(userId) + .setAssociated(flowTask.getId())); + if (CollUtil.isNotEmpty(userList)) { + FlowEngine.userService().saveBatch(userList); } - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); } return true; } @@ -862,21 +837,16 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public boolean urgeTask(FlowUrgeTaskBo bo) { - try { - if (CollUtil.isEmpty(bo.getTaskIdList())) { - return false; - } - List userList = this.currentTaskAllUser(bo.getTaskIdList()); - if (CollUtil.isEmpty(userList)) { - return false; - } - List messageType = bo.getMessageType(); - String message = bo.getMessage(); - flwCommonService.sendMessage(messageType, message, "单据审批提醒", userList); - } catch (Exception e) { - log.error(e.getMessage(), e); - throw new ServiceException(e.getMessage()); + if (CollUtil.isEmpty(bo.getTaskIdList())) { + return false; } + List userList = this.currentTaskAllUser(bo.getTaskIdList()); + if (CollUtil.isEmpty(userList)) { + return false; + } + List messageType = bo.getMessageType(); + String message = bo.getMessage(); + flwCommonService.sendMessage(messageType, message, "单据审批提醒", userList); return true; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 6e174c2b4..8d6b8d211 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -6,7 +6,6 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.CompleteTaskDTO; import org.dromara.common.core.domain.dto.StartProcessDTO; import org.dromara.common.core.domain.dto.StartProcessReturnDTO; -import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.StringUtils; import org.dromara.warm.flow.orm.entity.FlowInstance; @@ -161,28 +160,19 @@ public class WorkflowServiceImpl implements WorkflowService { @Override @Transactional(rollbackFor = Exception.class) public boolean startCompleteTask(StartProcessDTO startProcess) { - try { - StartProcessBo processBo = new StartProcessBo(); - processBo.setBusinessId(startProcess.getBusinessId()); - processBo.setFlowCode(startProcess.getFlowCode()); - processBo.setVariables(startProcess.getVariables()); - processBo.setHandler(startProcess.getHandler()); - processBo.setBizExt(BeanUtil.toBean(startProcess.getBizExt(), FlowInstanceBizExt.class)); + StartProcessBo processBo = new StartProcessBo(); + processBo.setBusinessId(startProcess.getBusinessId()); + processBo.setFlowCode(startProcess.getFlowCode()); + processBo.setVariables(startProcess.getVariables()); + processBo.setHandler(startProcess.getHandler()); + processBo.setBizExt(BeanUtil.toBean(startProcess.getBizExt(), FlowInstanceBizExt.class)); - StartProcessReturnDTO result = flwTaskService.startWorkFlow(processBo); - CompleteTaskBo taskBo = new CompleteTaskBo(); - taskBo.setTaskId(result.getTaskId()); - taskBo.setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); - taskBo.setVariables(startProcess.getVariables()); - taskBo.setHandler(startProcess.getHandler()); - - boolean flag = flwTaskService.completeTask(taskBo); - if (!flag) { - throw new ServiceException("流程发起异常"); - } - return true; - } catch (Exception e) { - throw new ServiceException(e.getMessage()); - } + StartProcessReturnDTO result = flwTaskService.startWorkFlow(processBo); + CompleteTaskBo taskBo = new CompleteTaskBo(); + taskBo.setTaskId(result.getTaskId()); + taskBo.setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); + taskBo.setVariables(startProcess.getVariables()); + taskBo.setHandler(startProcess.getHandler()); + return flwTaskService.completeTask(taskBo); } }