update 修改流程定义删除
This commit is contained in:
parent
07891edd16
commit
cf81f641bd
@ -2,6 +2,7 @@ package org.dromara.workflow.controller;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -83,14 +84,14 @@ public class ActProcessDefinitionController extends BaseController {
|
||||
/**
|
||||
* 删除流程定义
|
||||
*
|
||||
* @param deploymentId 部署id
|
||||
* @param processDefinitionId 流程定义id
|
||||
* @param deploymentIds 部署id
|
||||
* @param processDefinitionIds 流程定义id
|
||||
*/
|
||||
@Log(title = "流程定义管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{deploymentId}/{processDefinitionId}")
|
||||
public R<Void> deleteDeployment(@NotBlank(message = "流程部署id不能为空") @PathVariable String deploymentId,
|
||||
@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
|
||||
return toAjax(actProcessDefinitionService.deleteDeployment(deploymentId, processDefinitionId));
|
||||
@DeleteMapping("/{deploymentIds}/{processDefinitionIds}")
|
||||
public R<Void> deleteDeployment(@NotNull(message = "流程部署id不能为空") @PathVariable List<String> deploymentIds,
|
||||
@NotNull(message = "流程定义id不能为空") @PathVariable List<String> processDefinitionIds) {
|
||||
return toAjax(actProcessDefinitionService.deleteDeployment(deploymentIds, processDefinitionIds));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,11 +50,11 @@ public interface IActProcessDefinitionService {
|
||||
/**
|
||||
* 删除流程定义
|
||||
*
|
||||
* @param deploymentId 部署id
|
||||
* @param processDefinitionId 流程定义id
|
||||
* @param deploymentIds 部署id
|
||||
* @param processDefinitionIds 流程定义id
|
||||
* @return 结果
|
||||
*/
|
||||
boolean deleteDeployment(String deploymentId, String processDefinitionId);
|
||||
boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds);
|
||||
|
||||
/**
|
||||
* 激活或者挂起流程定义
|
||||
|
@ -35,6 +35,7 @@ import org.dromara.workflow.utils.QueryUtils;
|
||||
import org.flowable.bpmn.model.UserTask;
|
||||
import org.flowable.engine.ProcessMigrationService;
|
||||
import org.flowable.engine.RepositoryService;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil;
|
||||
import org.flowable.engine.repository.*;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
@ -45,9 +46,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
@ -188,24 +187,30 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
|
||||
/**
|
||||
* 删除流程定义
|
||||
*
|
||||
* @param deploymentId 部署id
|
||||
* @param processDefinitionId 流程定义id
|
||||
* @param deploymentIds 部署id
|
||||
* @param processDefinitionIds 流程定义id
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean deleteDeployment(String deploymentId, String processDefinitionId) {
|
||||
public boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds) {
|
||||
try {
|
||||
List<HistoricTaskInstance> taskInstanceList = QueryUtils.hisTaskInstanceQuery()
|
||||
.processDefinitionId(processDefinitionId).list();
|
||||
if (CollectionUtil.isNotEmpty(taskInstanceList)) {
|
||||
throw new ServiceException("当前流程定义已被使用不可删除!");
|
||||
List<HistoricProcessInstance> historicProcessInstances = QueryUtils.hisInstanceQuery().deploymentIdIn(deploymentIds).list();
|
||||
if (CollectionUtil.isNotEmpty(historicProcessInstances)) {
|
||||
Set<String> defIds = StreamUtils.toSet(historicProcessInstances, HistoricProcessInstance::getProcessDefinitionId);
|
||||
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) + "】流程定义已被使用不可删除!");
|
||||
}
|
||||
}
|
||||
//删除流程定义
|
||||
repositoryService.deleteDeployment(deploymentId);
|
||||
for (String deploymentId : deploymentIds) {
|
||||
repositoryService.deleteDeployment(deploymentId);
|
||||
}
|
||||
//删除流程定义配置
|
||||
iWfDefinitionConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId));
|
||||
iWfDefinitionConfigService.deleteByDefIds(processDefinitionIds);
|
||||
//删除节点配置
|
||||
iWfNodeConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId));
|
||||
iWfNodeConfigService.deleteByDefIds(processDefinitionIds);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
Loading…
x
Reference in New Issue
Block a user