update 修改流程定义删除

This commit is contained in:
gssong 2024-04-08 22:43:12 +08:00
parent 07891edd16
commit cf81f641bd
3 changed files with 28 additions and 22 deletions

View File

@ -2,6 +2,7 @@ package org.dromara.workflow.controller;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -83,14 +84,14 @@ public class ActProcessDefinitionController extends BaseController {
/** /**
* 删除流程定义 * 删除流程定义
* *
* @param deploymentId 部署id * @param deploymentIds 部署id
* @param processDefinitionId 流程定义id * @param processDefinitionIds 流程定义id
*/ */
@Log(title = "流程定义管理", businessType = BusinessType.DELETE) @Log(title = "流程定义管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deploymentId}/{processDefinitionId}") @DeleteMapping("/{deploymentIds}/{processDefinitionIds}")
public R<Void> deleteDeployment(@NotBlank(message = "流程部署id不能为空") @PathVariable String deploymentId, public R<Void> deleteDeployment(@NotNull(message = "流程部署id不能为空") @PathVariable List<String> deploymentIds,
@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { @NotNull(message = "流程定义id不能为空") @PathVariable List<String> processDefinitionIds) {
return toAjax(actProcessDefinitionService.deleteDeployment(deploymentId, processDefinitionId)); return toAjax(actProcessDefinitionService.deleteDeployment(deploymentIds, processDefinitionIds));
} }
/** /**

View File

@ -50,11 +50,11 @@ public interface IActProcessDefinitionService {
/** /**
* 删除流程定义 * 删除流程定义
* *
* @param deploymentId 部署id * @param deploymentIds 部署id
* @param processDefinitionId 流程定义id * @param processDefinitionIds 流程定义id
* @return 结果 * @return 结果
*/ */
boolean deleteDeployment(String deploymentId, String processDefinitionId); boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds);
/** /**
* 激活或者挂起流程定义 * 激活或者挂起流程定义

View File

@ -35,6 +35,7 @@ import org.dromara.workflow.utils.QueryUtils;
import org.flowable.bpmn.model.UserTask; import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.ProcessMigrationService; import org.flowable.engine.ProcessMigrationService;
import org.flowable.engine.RepositoryService; import org.flowable.engine.RepositoryService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil; import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil;
import org.flowable.engine.repository.*; import org.flowable.engine.repository.*;
import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstance;
@ -45,9 +46,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
@ -188,24 +187,30 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
/** /**
* 删除流程定义 * 删除流程定义
* *
* @param deploymentId 部署id * @param deploymentIds 部署id
* @param processDefinitionId 流程定义id * @param processDefinitionIds 流程定义id
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean deleteDeployment(String deploymentId, String processDefinitionId) { public boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds) {
try { try {
List<HistoricTaskInstance> taskInstanceList = QueryUtils.hisTaskInstanceQuery() List<HistoricProcessInstance> historicProcessInstances = QueryUtils.hisInstanceQuery().deploymentIdIn(deploymentIds).list();
.processDefinitionId(processDefinitionId).list(); if (CollectionUtil.isNotEmpty(historicProcessInstances)) {
if (CollectionUtil.isNotEmpty(taskInstanceList)) { Set<String> defIds = StreamUtils.toSet(historicProcessInstances, HistoricProcessInstance::getProcessDefinitionId);
throw new ServiceException("当前流程定义已被使用不可删除!"); List<ProcessDefinition> processDefinitions = QueryUtils.definitionQuery().processDefinitionIds(defIds).list();
if (CollUtil.isNotEmpty(processDefinitions)) {
Set<String> keys = StreamUtils.toSet(processDefinitions, ProcessDefinition::getKey);
throw new ServiceException("当前【" + String.join(",", keys) + "】流程定义已被使用不可删除!");
}
} }
//删除流程定义 //删除流程定义
for (String deploymentId : deploymentIds) {
repositoryService.deleteDeployment(deploymentId); repositoryService.deleteDeployment(deploymentId);
}
//删除流程定义配置 //删除流程定义配置
iWfDefinitionConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId)); iWfDefinitionConfigService.deleteByDefIds(processDefinitionIds);
//删除节点配置 //删除节点配置
iWfNodeConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId)); iWfNodeConfigService.deleteByDefIds(processDefinitionIds);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();