Commit 281d3d1d53d15835a15f741b8f724a2353096366
Committed by
Gitee
!1194 BPM:流程清理(添加任务和抄送)
Merge pull request !1194 from Lesan/feature/bpm-流程清理
Showing
4 changed files
with
30 additions
and
4 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java
| @@ -25,4 +25,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInst | @@ -25,4 +25,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInst | ||
| 25 | BpmProcessInstanceCopyDO::getActivityId, activityId); | 25 | BpmProcessInstanceCopyDO::getActivityId, activityId); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | + default void deleteByProcessInstanceId(String processInstanceId) { | ||
| 29 | + delete(BpmProcessInstanceCopyDO::getProcessInstanceId, processInstanceId); | ||
| 30 | + } | ||
| 28 | } | 31 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
| @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCand | @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCand | ||
| 19 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; | 19 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; |
| 20 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils; | 20 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils; |
| 21 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils; | 21 | import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils; |
| 22 | +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceCopyService; | ||
| 22 | import jakarta.annotation.Resource; | 23 | import jakarta.annotation.Resource; |
| 23 | import jakarta.validation.Valid; | 24 | import jakarta.validation.Valid; |
| 24 | import lombok.extern.slf4j.Slf4j; | 25 | import lombok.extern.slf4j.Slf4j; |
| @@ -29,11 +30,13 @@ import org.flowable.common.engine.impl.db.SuspensionState; | @@ -29,11 +30,13 @@ import org.flowable.common.engine.impl.db.SuspensionState; | ||
| 29 | import org.flowable.engine.HistoryService; | 30 | import org.flowable.engine.HistoryService; |
| 30 | import org.flowable.engine.RepositoryService; | 31 | import org.flowable.engine.RepositoryService; |
| 31 | import org.flowable.engine.RuntimeService; | 32 | import org.flowable.engine.RuntimeService; |
| 33 | +import org.flowable.engine.TaskService; | ||
| 32 | import org.flowable.engine.history.HistoricProcessInstance; | 34 | import org.flowable.engine.history.HistoricProcessInstance; |
| 33 | import org.flowable.engine.repository.Model; | 35 | import org.flowable.engine.repository.Model; |
| 34 | import org.flowable.engine.repository.ModelQuery; | 36 | import org.flowable.engine.repository.ModelQuery; |
| 35 | import org.flowable.engine.repository.ProcessDefinition; | 37 | import org.flowable.engine.repository.ProcessDefinition; |
| 36 | import org.flowable.engine.runtime.ProcessInstance; | 38 | import org.flowable.engine.runtime.ProcessInstance; |
| 39 | +import org.flowable.task.api.Task; | ||
| 37 | import org.springframework.stereotype.Service; | 40 | import org.springframework.stereotype.Service; |
| 38 | import org.springframework.transaction.annotation.Transactional; | 41 | import org.springframework.transaction.annotation.Transactional; |
| 39 | import org.springframework.validation.annotation.Validated; | 42 | import org.springframework.validation.annotation.Validated; |
| @@ -72,6 +75,10 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -72,6 +75,10 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 72 | private HistoryService historyService; | 75 | private HistoryService historyService; |
| 73 | @Resource | 76 | @Resource |
| 74 | private RuntimeService runtimeService; | 77 | private RuntimeService runtimeService; |
| 78 | + @Resource | ||
| 79 | + private TaskService taskService; | ||
| 80 | + @Resource | ||
| 81 | + private BpmProcessInstanceCopyService processInstanceCopyService; | ||
| 75 | 82 | ||
| 76 | @Override | 83 | @Override |
| 77 | public List<Model> getModelList(String name) { | 84 | public List<Model> getModelList(String name) { |
| @@ -262,23 +269,28 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -262,23 +269,28 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 262 | Model model = validateModelManager(id, userId); | 269 | Model model = validateModelManager(id, userId); |
| 263 | 270 | ||
| 264 | // 2. 清理所有流程数据 | 271 | // 2. 清理所有流程数据 |
| 265 | - // TODO @芋艿:这里没有找到批量操作的方法,会不会有性能问题~; | ||
| 266 | - // TODO @lesan:建议按照顺序?1)List<ProcessInstance> processInstances 循环处理;然后删除删除一个示实例,接着删除它的 history; | ||
| 267 | // 2.1 先取消所有正在运行的流程 | 272 | // 2.1 先取消所有正在运行的流程 |
| 268 | List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery() | 273 | List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery() |
| 269 | .processDefinitionKey(model.getKey()).list(); | 274 | .processDefinitionKey(model.getKey()).list(); |
| 270 | processInstances.forEach(processInstance -> { | 275 | processInstances.forEach(processInstance -> { |
| 271 | runtimeService.deleteProcessInstance(processInstance.getId(), | 276 | runtimeService.deleteProcessInstance(processInstance.getId(), |
| 272 | BpmReasonEnum.CANCEL_BY_SYSTEM.getReason()); | 277 | BpmReasonEnum.CANCEL_BY_SYSTEM.getReason()); |
| 278 | + historyService.deleteHistoricProcessInstance(processInstance.getId()); | ||
| 279 | + processInstanceCopyService.deleteProcessInstanceCopy(processInstance.getId()); | ||
| 273 | }); | 280 | }); |
| 274 | // 2.2 再从历史中删除所有相关的流程数据 | 281 | // 2.2 再从历史中删除所有相关的流程数据 |
| 275 | List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery() | 282 | List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery() |
| 276 | .processDefinitionKey(model.getKey()).list(); | 283 | .processDefinitionKey(model.getKey()).list(); |
| 277 | historicProcessInstances.forEach(historicProcessInstance -> { | 284 | historicProcessInstances.forEach(historicProcessInstance -> { |
| 278 | historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); | 285 | historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); |
| 286 | + processInstanceCopyService.deleteProcessInstanceCopy(historicProcessInstance.getId()); | ||
| 287 | + }); | ||
| 288 | + // 2.3 清理所有 Task | ||
| 289 | + List<Task> tasks = taskService.createTaskQuery() | ||
| 290 | + .processDefinitionKey(model.getKey()).list(); | ||
| 291 | + tasks.forEach(task -> { | ||
| 292 | + taskService.deleteTask(task.getId()); | ||
| 279 | }); | 293 | }); |
| 280 | - // TODO @lesan:流程任务,是不是也要清理哈? | ||
| 281 | - // TODO @lesan:抄送是不是也要清理; | ||
| 282 | } | 294 | } |
| 283 | 295 | ||
| 284 | @Override | 296 | @Override |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java
| @@ -50,4 +50,10 @@ public interface BpmProcessInstanceCopyService { | @@ -50,4 +50,10 @@ public interface BpmProcessInstanceCopyService { | ||
| 50 | PageResult<BpmProcessInstanceCopyDO> getProcessInstanceCopyPage(Long userId, | 50 | PageResult<BpmProcessInstanceCopyDO> getProcessInstanceCopyPage(Long userId, |
| 51 | BpmProcessInstanceCopyPageReqVO pageReqVO); | 51 | BpmProcessInstanceCopyPageReqVO pageReqVO); |
| 52 | 52 | ||
| 53 | + /** | ||
| 54 | + * 删除抄送流程 | ||
| 55 | + * | ||
| 56 | + * @param processInstanceId 流程实例id | ||
| 57 | + */ | ||
| 58 | + void deleteProcessInstanceCopy(String processInstanceId); | ||
| 53 | } | 59 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java
| @@ -87,4 +87,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -87,4 +87,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 87 | return processInstanceCopyMapper.selectPage(userId, pageReqVO); | 87 | return processInstanceCopyMapper.selectPage(userId, pageReqVO); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | + @Override | ||
| 91 | + public void deleteProcessInstanceCopy(String processInstanceId) { | ||
| 92 | + processInstanceCopyMapper.deleteByProcessInstanceId(processInstanceId); | ||
| 93 | + } | ||
| 94 | + | ||
| 90 | } | 95 | } |