diff --git a/lab-ops/lab-log/src/main/java/org/springblade/core/log/feign/LogClient.java b/lab-ops/lab-log/src/main/java/org/springblade/core/log/feign/LogClient.java index aa6fda1..9bf64da 100644 --- a/lab-ops/lab-log/src/main/java/org/springblade/core/log/feign/LogClient.java +++ b/lab-ops/lab-log/src/main/java/org/springblade/core/log/feign/LogClient.java @@ -50,4 +50,5 @@ public class LogClient implements ILogClient { log.setParams(log.getParams().replace("&", "&")); return R.data(errorLogService.save(log)); } + } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TskPoolConfig.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TskPoolConfig.java new file mode 100644 index 0000000..dbb4e70 --- /dev/null +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TskPoolConfig.java @@ -0,0 +1,30 @@ +package org.springblade.plugin.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @Description 自定义线程池 + * @Author ytl + * @Date 2023/3/17 0017 9:21 + */ +@Configuration +@EnableAsync +public class TskPoolConfig { + @Bean("taskExecutor") + public Executor taskExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(10); + executor.setMaxPoolSize(20); + executor.setQueueCapacity(200); + executor.setKeepAliveSeconds(60); + executor.setThreadNamePrefix("taskExecutor-"); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return executor; + } +} diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java index b38ce84..188fa32 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java @@ -1,15 +1,19 @@ package org.springblade.plugin.listener; +import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.ExecutionListener; import org.springblade.core.log.model.LogError; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.plugin.config.SpringContextHolder; import org.springblade.plugin.workbench.enumutil.RepeatEnum; +import org.springblade.plugin.workbench.feign.ProcessErrorLogClient; import org.springblade.plugin.workbench.service.IAutoStartModelService; import org.springblade.plugin.workbench.service.impl.AutoStartModelServiceImpl; +import org.springblade.plugin.workflow.core.utils.WfTaskUtil; import org.springblade.resource.enums.SysTypeEnum; import org.springblade.resource.feign.IMessageClient; @@ -19,6 +23,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import javax.annotation.PostConstruct; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -31,8 +36,6 @@ import java.util.Map; */ @Component public class ProcessEndListener implements ExecutionListener { - @Autowired - private IMessageClient messageClient; @Override public void notify(DelegateExecution delegateExecution) { @@ -41,14 +44,17 @@ public class ProcessEndListener implements ExecutionListener { Map variables = delegateExecution.getVariables(); Map variablesMap = new HashMap<>(); variablesMap.putAll(variables); - ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); -// HttpServletResponse response = servletRequestAttributes.getResponse(); + String paramsMap = variablesMap.toString(); + String paramsStr = paramsMap.substring(1, paramsMap.length() - 1).replace(",","&"); + switch (event) { case "start": System.out.println("ProcessEndListener-start event-------------------"); //中止或撤销的工作流不做任何处理了 if(variablesMap.containsKey("wf_process_terminate")) return; + IAutoStartModelService autoStartModelService = (IAutoStartModelService) SpringContextHolder.getBean(AutoStartModelServiceImpl.class); + //判断工作流的的重复模式,重复的任务生成工单、保存任务信息,计算下次任务开始时间 if (Func.isNotEmpty(variablesMap.get("chongfumoshi")) && !StringUtils.equals(RepeatEnum.不重复.getCode(), variablesMap.get("chongfumoshi").toString())) { String s = autoStartModelService.saveStartProcess(processInstanceId, variablesMap); @@ -56,10 +62,27 @@ public class ProcessEndListener implements ExecutionListener { //发送消息 // messageClient.event(SysTypeEnum.INFORM.getValue(), "生成工单", // "你发起的工作流生成工单失败", 1, 5, variablesMap.get("applyUser").toString(), "/plugin/workflow/process/workorder"); + //保存错误日志 + LogError logError = new LogError(); + logError.setMessage(s); + logError.setCreateTime(DateUtil.now()); + logError.setTenantId(WfTaskUtil.getTenantId()); + + logError.setParams(paramsStr); + autoStartModelService.saveProcessErrorLog(logError); } } else {//不重复任务,生成工单 - autoStartModelService.newWorkOrder(processInstanceId, variablesMap); + boolean b = autoStartModelService.newWorkOrder(processInstanceId, variablesMap); + if(!b){ + //保存错误日志 + LogError logError = new LogError(); + logError.setMessage("生成工单失败"); + logError.setCreateTime(DateUtil.now()); + logError.setTenantId(WfTaskUtil.getTenantId()); + logError.setParams(paramsStr); + autoStartModelService.saveProcessErrorLog(logError); + } } break; case "end": diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/WorkBenchController.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/WorkBenchController.java index 88bade1..ae725e0 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/WorkBenchController.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/WorkBenchController.java @@ -47,10 +47,11 @@ public class WorkBenchController extends BladeController { @ApiOperationSupport(order = 1) @ApiOperation(value = "重复开启工作流", notes = "重复开启工作流") public void repeat(){ - System.out.println("执行工作台调度任务重复开启工作流。。。。。。"); autoStartModelService.autoCreateWorkOrderByQuartz(); } + + //一下2个方法待删除 @GetMapping("/bladeManMadeVariabList") @ApiOperationSupport(order = 2) @ApiOperation(value = "bladeManMadeVariabList", notes = "bladeManMadeVariabList") diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/IFlowClient.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/IFlowClient.java index cca741c..bfe2f9e 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/IFlowClient.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/IFlowClient.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; /** - * @Description + * @Description 废弃 * @Author ytl * @Date 2023/2/21 0021 15:09 */ diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/ProcessErrorLogClient.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/ProcessErrorLogClient.java new file mode 100644 index 0000000..200e7b7 --- /dev/null +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/feign/ProcessErrorLogClient.java @@ -0,0 +1,22 @@ +package org.springblade.plugin.workbench.feign; + +import org.springblade.core.log.model.LogError; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @Description + * @Author ytl + * @Date 2023/3/16 0016 13:41 + */ +@FeignClient( + value = "blade-log" +) +public interface ProcessErrorLogClient { + String API_PREFIX = "/log/saveErrorLog"; + + @PostMapping(API_PREFIX) + void saveErrorLog(@RequestBody LogError logError); + +} diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java index efb6a30..e715045 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java @@ -1,10 +1,12 @@ package org.springblade.plugin.workbench.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.log.model.LogError; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; import org.springblade.plugin.workbench.entity.AutoStartModel; import org.springblade.plugin.workbench.vo.AutoStartModelVO; +import org.springframework.web.bind.annotation.RequestBody; import javax.validation.constraints.NotEmpty; import java.util.List; @@ -33,4 +35,7 @@ public interface IAutoStartModelService extends BaseService { String newWorkOrderAndSaveModel(String processinstanceId,Map variables); void autoCreateWorkOrderByQuartz(); + + void saveProcessErrorLog(@RequestBody LogError logError); + } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java index 3cfbc91..90231ff 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils; import org.flowable.engine.HistoryService; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.variable.api.history.HistoricVariableInstance; +import org.springblade.core.log.model.LogError; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; @@ -27,6 +28,7 @@ import org.springblade.plugin.operation.workorder.service.IWorkOrderService; import org.springblade.plugin.workbench.cache.FlowCache; import org.springblade.plugin.workbench.entity.AutoStartModel; import org.springblade.plugin.workbench.enumutil.RepeatEnum; +import org.springblade.plugin.workbench.feign.ProcessErrorLogClient; import org.springblade.plugin.workbench.mapper.BladeManMadeMapper; import org.springblade.plugin.workbench.service.IAutoStartModelService; import org.springblade.plugin.workbench.util.MyDateUtil; @@ -40,6 +42,8 @@ import org.springblade.system.user.cache.UserCache; import org.springblade.system.user.entity.User; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; + import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.TemporalAdjusters; @@ -70,13 +74,23 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl> bladeManMadeVariabList() { + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); // status = 10 isBreak = 0才是可以自动任务,status = 1,isBreak = 0刚建立,status=1 ,isBreak = 1删除,不自动执行了 queryWrapper.ne(AutoStartModel::getIsBreak, 1); List autoStartModels = baseMapper.selectList(queryWrapper); + List> maps = new ArrayList<>(); if(autoStartModels.size() > 0){ autoStartModels.forEach(bl ->{ @@ -116,10 +130,10 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl listHisInstance = historyService.createHistoricTaskInstanceQuery().processInstanceId(l.getProcessInstanceId()) + .orderByHistoricTaskInstanceStartTime().desc().list(); - copy.setTaskId(historicTaskInstance.getId()); + copy.setTaskId(Func.isEmpty(listHisInstance) ? "" : listHisInstance.get(0).getId()); //模块和数据表 Integer type = l.getType(); if(type == 1){//系统 @@ -153,7 +167,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl variables){ - + boolean save = false; WorkOrder workOrder = new WorkOrder(); - workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); - workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); - workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); - workOrder.setType(Integer.parseInt(variables.get("type").toString())); - workOrder.setTaskParent(variables.get("renwufulei").toString()); - workOrder.setTaskType(variables.get("renwuzhonglei").toString()); - workOrder.setTaskLevel(variables.get("renwudengji").toString()); - workOrder.setApplyUser(variables.get("applyUser").toString()); - workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); - workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); - workOrder.setApplyUser(variables.get("applyUser").toString()); - workOrder.setManagement(variables.get("guanlibumen").toString()); - workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString()); - workOrder.setTenantId(WfTaskUtil.getTenantId()); - workOrder.setProcessInstanceId(processInstanceId); - workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString().substring(0,10) + " 23:59:59","yyyy-MM-dd HH:mm:ss")); - workOrder.setRepeatMode(variables.get("chongfumoshi").toString()); - //如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成 - User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString())); - String roleId = applyUser.getRoleId(); + try{ + workOrder.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord"))); + workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); + workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); + workOrder.setType(Integer.parseInt(variables.get("type").toString())); + workOrder.setTaskParent(variables.get("renwufulei").toString()); + workOrder.setTaskType(variables.get("renwuzhonglei").toString()); + workOrder.setTaskLevel(variables.get("renwudengji").toString()); + workOrder.setApplyUser(variables.get("applyUser").toString()); + workOrder.setOperateSys(variables.get("xitongmingchengshujuku").toString()); + workOrder.setOperateModule(variables.get("xitongmokuaishujubiao").toString()); + workOrder.setApplyUser(variables.get("applyUser").toString()); + workOrder.setManagement(variables.get("guanlibumen").toString()); + workOrder.setMaintenanceCompany(variables.get("yunweigongsi").toString()); + workOrder.setTenantId(WfTaskUtil.getTenantId()); + workOrder.setProcessInstanceId(processInstanceId); + workOrder.setExpectedCompletionTime(DateUtil.parse(variables.get("qiwangwanchengshijian").toString().substring(0,10) + " 23:59:59","yyyy-MM-dd HH:mm:ss")); + workOrder.setRepeatMode(variables.get("chongfumoshi").toString()); + //如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成 + User applyUser = UserCache.getUser(Long.valueOf(variables.get("applyUser").toString())); + String roleId = applyUser.getRoleId(); + + if(StringUtils.equals(roleId,"1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(),"1625035000825049090")){ + workOrder.setIsFinish(1); + workOrder.setFinishTime(new Date()); + } - if(StringUtils.equals(roleId,"1623514957507272705") && StringUtils.equals(variables.get("renwudengji").toString(),"1625035000825049090")){ - workOrder.setIsFinish(1); - workOrder.setFinishTime(new Date()); - } - boolean save = false; - save = workOrderService.save(workOrder); + save = workOrderService.save(workOrder); - int retryNum = 0; - while(retryNum < 5 && !save){ - try{ - save = workOrderService.save(workOrder); - }catch (Exception e){ - e.printStackTrace(); - }finally { - retryNum ++; + int retryNum = 0; + while(retryNum < 5 && !save){ + try{ + save = workOrderService.save(workOrder); + }catch (Exception e){ + e.printStackTrace(); + }finally { + retryNum ++; + } } + }catch (Exception e){ + e.printStackTrace(); + }finally { + return save; } - return save; } /** diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/controller/WfDeploymentController.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/controller/WfDeploymentController.java index 8d7e19f..3e47f4f 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/controller/WfDeploymentController.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/controller/WfDeploymentController.java @@ -11,6 +11,8 @@ import org.springblade.plugin.workflow.design.entity.WfProcessDef; import org.springblade.plugin.workflow.design.service.IWfDesignService; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @AllArgsConstructor @RequestMapping("/design/deployment") @@ -30,8 +32,13 @@ public class WfDeploymentController { public R remove(@RequestBody String body) { JSONObject data = JSON.parseObject(body); String id = data.getString("deploymentId"); - + //查询出本次部署相关的processinstanceids + List processinstanceIds = flowDesignService.getProcessinstanceIdList(id); + //删除部署信息 flowDesignService.deleteDeployment(id); + //异步删除autostartmodel + if(processinstanceIds.size() > 0) flowDesignService.stopAutoStartModel(processinstanceIds); + return R.success("操作成功"); } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/IWfDesignService.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/IWfDesignService.java index 5e8ec73..2190fcb 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/IWfDesignService.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/IWfDesignService.java @@ -6,6 +6,8 @@ import org.springblade.core.mp.support.Query; import org.springblade.plugin.workflow.design.entity.WfModel; import org.springblade.plugin.workflow.design.entity.WfProcessDef; +import java.util.List; + /** * 服务类 */ @@ -18,4 +20,8 @@ public interface IWfDesignService extends IService { void changeDeploymentCategory(String deploymentId, String category); void deleteDeployment(String deploymentId); + + List getProcessinstanceIdList(String deploymentId); + + void stopAutoStartModel(List processinstanceIds); } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/impl/WfDesignServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/impl/WfDesignServiceImpl.java index 60e788d..67c4969 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/impl/WfDesignServiceImpl.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/design/service/impl/WfDesignServiceImpl.java @@ -3,6 +3,7 @@ package org.springblade.plugin.workflow.design.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; @@ -10,8 +11,10 @@ import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.ExtensionAttribute; import org.flowable.common.engine.impl.db.SuspensionState; +import org.flowable.engine.HistoryService; import org.flowable.engine.ProcessEngineConfiguration; import org.flowable.engine.RepositoryService; +import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; @@ -19,6 +22,8 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.core.tool.utils.StringUtil; +import org.springblade.plugin.workbench.entity.AutoStartModel; +import org.springblade.plugin.workbench.service.IAutoStartModelService; import org.springblade.plugin.workflow.core.constant.WfExtendConstant; import org.springblade.plugin.workflow.core.constant.WfProcessConstant; import org.springblade.plugin.workflow.core.query.WfProcessDefinitionQuery; @@ -30,6 +35,7 @@ import org.springblade.plugin.workflow.design.entity.*; import org.springblade.plugin.workflow.design.entity.WfProcessDef; import org.springblade.plugin.workflow.design.mapper.WfSerialMapper; import org.springblade.plugin.workflow.design.service.IWfDesignService; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +52,8 @@ public class WfDesignServiceImpl extends ServiceImpl imp private final WfSerialMapper wfSerialMapper; private final RepositoryService repositoryService; private final ProcessEngineConfiguration processEngineConfiguration; + private final HistoryService historyService; + private final IAutoStartModelService autoStartModelService; @Override public IPage deploymentPage(WfProcessDef process, Query query) { @@ -165,6 +173,7 @@ public class WfDesignServiceImpl extends ServiceImpl imp @Override @Transactional(rollbackFor = Exception.class) public void deleteDeployment(String deploymentId) { + repositoryService.deleteDeployment(deploymentId, true); WfDeploymentForm form = new WfDeploymentForm(); @@ -176,4 +185,45 @@ public class WfDesignServiceImpl extends ServiceImpl imp wfSerialMapper.delete(new QueryWrapper<>(serial)); } + /** + * 根据部署id查询出相关的工作流id + * @param deploymentId + * @return + */ + @Override + public List getProcessinstanceIdList(String deploymentId){ + List result = new ArrayList<>(); + //deploymentId查询出ProcessDefinition,根据ProcessDefinition查询Processinstanceid,根据Processinstanceid到 autoStartModel表将is_deleted = 1 + List list = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).list(); + if(list.size() > 0){ + list.forEach(processDefinition ->{ + List instances = historyService.createHistoricProcessInstanceQuery().processDefinitionId(processDefinition.getId()).list(); + instances.forEach(instance ->{ + result.add(instance.getId()); + }); + }); + } + + return result; + } + + /** + * 逻辑删除autostartModel + * @param processinstanceIds + */ + @Override + @Async + public void stopAutoStartModel(List processinstanceIds){ + processinstanceIds.forEach(processinstanceId ->{ + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(AutoStartModel::getProcessInstanceId,processinstanceId); + List list = autoStartModelService.list(wrapper); + if(list.size() > 0){ + list.forEach(autoStartModel -> { + autoStartModelService.removeById(autoStartModel.getId()); + }); + } + + }); + } } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java index 236f3fc..6e099d6 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java @@ -1021,11 +1021,11 @@ public class WfProcessService implements IWfProcessService { .setType(WfNotice.Type.TERMINATE)); //清空FLOW_CACHE缓存,并删除blade_flow_autostart_model中processinstanceid = 的记录 - CacheUtil.clear(FLOW_CACHE, Boolean.FALSE); + //CacheUtil.clear(FLOW_CACHE, Boolean.FALSE); //task.getProcessInstanceId() - LambdaQueryWrapper autoStartModelWrapper = Wrappers.lambdaQuery(); - autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, task.getProcessInstanceId()); - autoStartModelService.remove(autoStartModelWrapper); +// LambdaQueryWrapper autoStartModelWrapper = Wrappers.lambdaQuery(); +// autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, task.getProcessInstanceId()); +// autoStartModelService.remove(autoStartModelWrapper); return R.success("终止成功"); } @@ -1122,11 +1122,11 @@ public class WfProcessService implements IWfProcessService { this.dispatchTaskTo(task.getProcessInstanceId(), endEvent.getId()); //清空FLOW_CACHE缓存,并删除blade_flow_autostart_model中processinstanceid 的记录 - CacheUtil.clear(FLOW_CACHE, Boolean.FALSE); + //CacheUtil.clear(FLOW_CACHE, Boolean.FALSE); //task.getProcessInstanceId() - LambdaQueryWrapper autoStartModelWrapper = Wrappers.lambdaQuery(); - autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, task.getProcessInstanceId()); - autoStartModelService.remove(autoStartModelWrapper); +// LambdaQueryWrapper autoStartModelWrapper = Wrappers.lambdaQuery(); +// autoStartModelWrapper.eq(AutoStartModel::getProcessInstanceId, task.getProcessInstanceId()); +// autoStartModelService.remove(autoStartModelWrapper); return R.success("撤销成功"); }