删除流程定义 - Java代码优化示例
@Override @Transactional public void deleteProcessDefinition(String processDefinitionId) { // 查询流程定义 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionId(processDefinitionId) .suspended() .singleResult();
// 检查流程定义是否存在
if (processDefinition == null) {
throw new ServiceException(400, '删除失败');
}
// 将流程定义标记为已删除
boolean isDeleted = UpdateChain.of(ProcessTemplate.class)
.set(ProcessTemplate::getIsDeleted, 1)
.where(ProcessTemplate::getProcessDefinitionId).eq(processDefinitionId)
.update();
// 检查更新是否成功
if (!isDeleted) {
throw new ServiceException(400, '删除失败');
}
// 删除流程定义
repositoryService.deleteProcessDefinition(processDefinitionId);
}
// 优化说明:
// 1. 将Optional
// 注释说明: // 1. 在删除ProcessDefinition之前,先通过processDefinitionId查询对应的ProcessDefinition对象。 // 2. 如果ProcessDefinition对象为空,则抛出ServiceException异常,表示删除失败。 // 3. 使用UpdateChain.of()方法更新ProcessTemplate表的isDeleted字段,将其设置为1,表示已删除。 // 4. 更新成功后,再调用repositoryService.deleteProcessDefinition()方法删除ProcessDefinition。
原文地址: https://www.cveoy.top/t/topic/qlAf 著作权归作者所有。请勿转载和采集!