解释一下代码 @Transactional(value = MerakDataSourceConfiguration.MERAK_TRANSACTION_MANAGEMENT, rollbackFor = Exception.class, timeout = 10) public BaseResult<Boolean> cancelTaskInstance(GalaxyInstanceRequestDto galaxyInstanceRequestDto) { String taskInstanceId = galaxyInstanceRequestDto.getTaskInstanceId(); String appCode = galaxyInstanceRequestDto.getAppCode(); if (StringUtils.isEmpty(taskInstanceId) || StringUtils.isEmpty(appCode)) { throw new RuntimeException("参数不可为空"); } //taskInstanceId必须存在 GalaxyCalSchedulerDO calSchedulerDO = getGalaxyCalSchedulerDO(taskInstanceId); //任务状态为queue或者running状态可操作取消 if (TaskStatus.QUEUE.name().equals(calSchedulerDO.getExecuteStatus()) || TaskStatus.RUNNING.name().equals(calSchedulerDO.getExecuteStatus()) ) { taskCancel(taskInstanceId, appCode, calSchedulerDO.getExecuteEngine(), calSchedulerDO.getExecuteResult()); } //查询最新结果,更改为取消状态 GalaxyCalSchedulerDO schedulerDO = getGalaxyCalSchedulerDO(taskInstanceId); schedulerDO.setExecuteStatus(TaskStatus.DELETED.name());//更改为取消 galaxyCalSchedulerDAO.updateByPrimaryKeyWithBLOBs(schedulerDO); return new BaseResult<>(true); }
时间: 2024-04-11 18:31:15 浏览: 115
uapbd_bom_src.zip_JAVA实现保存和审核时间的代码
这段代码是一个取消任务实例的方法。代码中使用了 `@Transactional` 注解来标记该方法需要在事务中执行,其中 `value` 属性指定了事务管理器的名称,`rollbackFor` 属性指定了需要回滚的异常类型,`timeout` 属性指定了事务的超时时间。
首先,代码会从 `galaxyInstanceRequestDto` 对象中获取任务实例ID和应用程序代码。如果其中任何一个为空,则抛出一个运行时异常。
接下来,代码会根据任务实例ID获取对应的 `GalaxyCalSchedulerDO` 对象,该对象保存了任务的调度信息。如果任务的执行状态是队列(QUEUE)或正在运行(RUNNING),则可以执行取消操作。
执行取消操作后,代码会再次查询最新的任务调度信息,并将执行状态更改为取消(DELETED),然后将更新后的调度信息保存到数据库中。
最后,方法返回一个 `BaseResult<Boolean>` 对象,表示取消操作是否成功。
阅读全文