feat: 添加清理抄送和任务

This commit is contained in:
Lesan 2025-01-19 08:39:32 +08:00
parent 25c86c05b3
commit 6c3afa7c96
4 changed files with 30 additions and 4 deletions

View File

@ -25,4 +25,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInst
BpmProcessInstanceCopyDO::getActivityId, activityId);
}
default void deleteByProcessInstanceId(String processInstanceId) {
delete(BpmProcessInstanceCopyDO::getProcessInstanceId, processInstanceId);
}
}

View File

@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCand
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceCopyService;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
@ -29,11 +30,13 @@ import org.flowable.common.engine.impl.db.SuspensionState;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.repository.Model;
import org.flowable.engine.repository.ModelQuery;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@ -72,6 +75,10 @@ public class BpmModelServiceImpl implements BpmModelService {
private HistoryService historyService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private BpmProcessInstanceCopyService processInstanceCopyService;
@Override
public List<Model> getModelList(String name) {
@ -262,23 +269,28 @@ public class BpmModelServiceImpl implements BpmModelService {
Model model = validateModelManager(id, userId);
// 2. 清理所有流程数据
// TODO @芋艿这里没有找到批量操作的方法会不会有性能问题~
// TODO @lesan建议按照顺序1List<ProcessInstance> processInstances 循环处理然后删除删除一个示实例接着删除它的 history
// 2.1 先取消所有正在运行的流程
List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery()
.processDefinitionKey(model.getKey()).list();
processInstances.forEach(processInstance -> {
runtimeService.deleteProcessInstance(processInstance.getId(),
BpmReasonEnum.CANCEL_BY_SYSTEM.getReason());
historyService.deleteHistoricProcessInstance(processInstance.getId());
processInstanceCopyService.deleteProcessInstanceCopy(processInstance.getId());
});
// 2.2 再从历史中删除所有相关的流程数据
List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery()
.processDefinitionKey(model.getKey()).list();
historicProcessInstances.forEach(historicProcessInstance -> {
historyService.deleteHistoricProcessInstance(historicProcessInstance.getId());
processInstanceCopyService.deleteProcessInstanceCopy(historicProcessInstance.getId());
});
// 2.3 清理所有 Task
List<Task> tasks = taskService.createTaskQuery()
.processDefinitionKey(model.getKey()).list();
tasks.forEach(task -> {
taskService.deleteTask(task.getId());
});
// TODO @lesan流程任务是不是也要清理哈
// TODO @lesan抄送是不是也要清理
}
@Override

View File

@ -50,4 +50,10 @@ public interface BpmProcessInstanceCopyService {
PageResult<BpmProcessInstanceCopyDO> getProcessInstanceCopyPage(Long userId,
BpmProcessInstanceCopyPageReqVO pageReqVO);
/**
* 删除抄送流程
*
* @param processInstanceId 流程实例id
*/
void deleteProcessInstanceCopy(String processInstanceId);
}

View File

@ -87,4 +87,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
return processInstanceCopyMapper.selectPage(userId, pageReqVO);
}
@Override
public void deleteProcessInstanceCopy(String processInstanceId) {
processInstanceCopyMapper.deleteByProcessInstanceId(processInstanceId);
}
}