要保证食物的全局回滚,可以将接口方法上的事务注解修改为"@Transactional(rollbackFor = Exception.class)",表示在遇到任何异常时都进行回滚。\n\n修改后的代码如下:\n\njava\n@PostMapping("startProcessBatch")\n@Transactional(rollbackFor = Exception.class)\npublic List<JsonResult> startProcessBatch(@ApiParam @RequestBody List<ProcessStartCmd> startCmdList) {\n List<JsonResult> result = new ArrayList<>();\n for (ProcessStartCmd startCmd : startCmdList) {\n JsonResult jsonResult = handReq(startCmd);\n if (!jsonResult.isSuccess()) {\n result.add(jsonResult);\n continue;\n }\n BpmDef bpmDef = (BpmDef) jsonResult.getData();\n boolean hasRight = systemClient.findAuthRight("BPM", "def.start", bpmDef.getTreeId());\n if (!hasRight) {\n result.add(JsonResult.Fail("你没有启动权限!"));\n continue;\n }\n\n String operate = startCmd.isHasPk() ? ProcessStartCmd.OPERATE_LIVE : ProcessStartCmd.OPERATE_START;\n try {\n //启动流程\n BpmInst bpmInst = bpmInstService.doStartProcess(startCmd, bpmDef, operate);\n jsonResult.setDetailMsg(JSON.toJSON(startCmd.getVars()).toString());\n //发送任务消息通知\n messageService.sendMsg();\n result.add(jsonResult.setData(bpmInst)\n .setSuccess(true).setMessage("成功启动流程!"));\n } catch (Exception e) {\n bpmInstService.handStartException(e);\n result.add(null);\n }\n }\n return result;\n}\n

Java接口代码事务注解优化:保证全局回滚

原文地址: https://www.cveoy.top/t/topic/qep4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录