浏览代码

update 优化 支持工作流关闭租户

疯狂的狮子Li 1 年之前
父节点
当前提交
234d8989d7

+ 28 - 12
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java

@@ -24,10 +24,7 @@ import org.dromara.workflow.service.IActModelService;
 import org.dromara.workflow.utils.ModelUtils;
 import org.flowable.bpmn.model.BpmnModel;
 import org.flowable.engine.RepositoryService;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.Model;
-import org.flowable.engine.repository.ModelQuery;
-import org.flowable.engine.repository.ProcessDefinition;
+import org.flowable.engine.repository.*;
 import org.flowable.validation.ValidationError;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -63,7 +60,9 @@ public class ActModelServiceImpl implements IActModelService {
     @Override
     public TableDataInfo<Model> page(ModelBo modelBo) {
         ModelQuery query = repositoryService.createModelQuery();
-        query.modelTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            query.modelTenantId(TenantHelper.getTenantId());
+        }
         if (StringUtils.isNotEmpty(modelBo.getName())) {
             query.modelNameLike("%" + modelBo.getName() + "%");
         }
@@ -99,7 +98,12 @@ public class ActModelServiceImpl implements IActModelService {
             String description = modelBo.getDescription();
             String categoryCode = modelBo.getCategoryCode();
             String xml = modelBo.getXml();
-            Model checkModel = repositoryService.createModelQuery().modelKey(key).modelTenantId(TenantHelper.getTenantId()).singleResult();
+            ModelQuery query = repositoryService.createModelQuery();
+            query.modelKey(key);
+            if (TenantHelper.isEnable()) {
+                query.modelTenantId(TenantHelper.getTenantId());
+            }
+            Model checkModel = query.singleResult();
             if (ObjectUtil.isNotNull(checkModel)) {
                 throw new ServiceException("模型key已存在!");
             }
@@ -110,7 +114,9 @@ public class ActModelServiceImpl implements IActModelService {
             model.setVersion(version);
             model.setCategory(categoryCode);
             model.setMetaInfo(description);
-            model.setTenantId(TenantHelper.getTenantId());
+            if (TenantHelper.isEnable()) {
+                model.setTenantId(TenantHelper.getTenantId());
+            }
             //保存初始化的模型基本信息数据
             repositoryService.saveModel(model);
             repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml));
@@ -158,7 +164,11 @@ public class ActModelServiceImpl implements IActModelService {
     public boolean update(ModelBo modelBo) {
         try {
             Model model = repositoryService.getModel(modelBo.getId());
-            List<Model> list = repositoryService.createModelQuery().modelTenantId(TenantHelper.getTenantId()).modelKey(modelBo.getKey()).list();
+            ModelQuery query = repositoryService.createModelQuery();
+            if (TenantHelper.isEnable()) {
+                query.modelTenantId(TenantHelper.getTenantId());
+            }
+            List<Model> list = query.modelKey(modelBo.getKey()).list();
             list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> {
                 throw new ServiceException("模型KEY已存在!");
             });
@@ -189,7 +199,11 @@ public class ActModelServiceImpl implements IActModelService {
             BpmnModel bpmnModel = ModelUtils.xmlToBpmnModel(xml);
             ModelUtils.checkBpmnModel(bpmnModel);
             Model model = repositoryService.getModel(modelId);
-            List<Model> list = repositoryService.createModelQuery().modelTenantId(TenantHelper.getTenantId()).modelKey(key).list();
+            ModelQuery query = repositoryService.createModelQuery();
+            if (TenantHelper.isEnable()) {
+                query.modelTenantId(TenantHelper.getTenantId());
+            }
+            List<Model> list = query.modelKey(key).list();
             list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> {
                 throw new ServiceException("模型KEY已存在!");
             });
@@ -254,7 +268,11 @@ public class ActModelServiceImpl implements IActModelService {
             // xml资源的名称 ,对应act_ge_bytearray表中的name_字段
             String processName = model.getName() + ".bpmn20.xml";
             // 调用部署相关的api方法进行部署流程定义
-            Deployment deployment = repositoryService.createDeployment()
+            DeploymentBuilder builder = repositoryService.createDeployment();
+            if (TenantHelper.isEnable()) {
+                builder.tenantId(TenantHelper.getTenantId());
+            }
+            Deployment deployment = builder
                 // 部署名称
                 .name(model.getName())
                 // 部署标识key
@@ -263,8 +281,6 @@ public class ActModelServiceImpl implements IActModelService {
                 .category(model.getCategory())
                 // bpmn20.xml资源
                 .addBytes(processName, xmlBytes)
-                // 租户id
-                .tenantId(TenantHelper.getTenantId())
                 .deploy();
 
             // 更新 部署id 到流程定义模型数据表中

+ 30 - 15
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java

@@ -24,10 +24,7 @@ import org.flowable.engine.HistoryService;
 import org.flowable.engine.ProcessMigrationService;
 import org.flowable.engine.RepositoryService;
 import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.Model;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.engine.repository.ProcessDefinitionQuery;
+import org.flowable.engine.repository.*;
 import org.flowable.task.api.history.HistoricTaskInstance;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -66,7 +63,9 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
     @Override
     public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
         ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
-        query.processDefinitionTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            query.processDefinitionTenantId(TenantHelper.getTenantId());
+        }
         if (StringUtils.isNotEmpty(processDefinitionBo.getKey())) {
             query.processDefinitionKey(processDefinitionBo.getKey());
         }
@@ -110,7 +109,10 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
     public List<ProcessDefinitionVo> getProcessDefinitionListByKey(String key) {
         List<ProcessDefinitionVo> processDefinitionVoList = new ArrayList<>();
         ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
-        List<ProcessDefinition> definitionList = query.processDefinitionTenantId(TenantHelper.getTenantId()).processDefinitionKey(key).list();
+        if (TenantHelper.isEnable()) {
+            query.processDefinitionTenantId(TenantHelper.getTenantId());
+        }
+        List<ProcessDefinition> definitionList = query.processDefinitionKey(key).list();
         List<Deployment> deploymentList = null;
         if (CollUtil.isNotEmpty(definitionList)) {
             List<String> deploymentIds = definitionList.stream().map(ProcessDefinition::getDeploymentId).collect(Collectors.toList());
@@ -192,8 +194,11 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
     @Override
     public boolean updateProcessDefState(String processDefinitionId) {
         try {
-            ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
-                .processDefinitionId(processDefinitionId).processDefinitionTenantId(TenantHelper.getTenantId()).singleResult();
+            ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
+            if (TenantHelper.isEnable()) {
+                query.processDefinitionTenantId(TenantHelper.getTenantId());
+            }
+            ProcessDefinition processDefinition = query.processDefinitionId(processDefinitionId).singleResult();
             //将当前为挂起状态更新为激活状态
             //参数说明:参数1:流程定义id,参数2:是否激活(true是否级联对应流程实例,激活了则对应流程实例都可以审批),
             //参数3:什么时候激活,如果为null则立即激活,如果为具体时间则到达此时间后激活
@@ -247,7 +252,11 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
         ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
             .processDefinitionId(processDefinitionId).singleResult();
         InputStream inputStream = repositoryService.getResourceAsStream(pd.getDeploymentId(), pd.getResourceName());
-        Model model = repositoryService.createModelQuery().modelKey(pd.getKey()).modelTenantId(TenantHelper.getTenantId()).singleResult();
+        ModelQuery query = repositoryService.createModelQuery();
+        if (TenantHelper.isEnable()) {
+            query.modelTenantId(TenantHelper.getTenantId());
+        }
+        Model model = query.modelKey(pd.getKey()).singleResult();
         try {
             if (ObjectUtil.isNotNull(model)) {
                 repositoryService.addModelEditorSource(model.getId(), IoUtil.readBytes(inputStream));
@@ -295,9 +304,12 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
             InputStream inputStream = file.getInputStream();
             Deployment deployment;
             if (FlowConstant.ZIP.equals(suffix)) {
-                deployment = repositoryService.createDeployment()
-                    .tenantId(TenantHelper.getTenantId())
-                    .addZipInputStream(new ZipInputStream(inputStream)).name(processName).key(processKey).category(categoryCode).deploy();
+                DeploymentBuilder query = repositoryService.createDeployment();
+                if (TenantHelper.isEnable()) {
+                    query.tenantId(TenantHelper.getTenantId());
+                }
+                deployment = query.addZipInputStream(new ZipInputStream(inputStream))
+                    .name(processName).key(processKey).category(categoryCode).deploy();
             } else {
                 String[] list = ResourceNameUtil.BPMN_RESOURCE_SUFFIXES;
                 boolean flag = false;
@@ -308,9 +320,12 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
                     }
                 }
                 if (flag) {
-                    deployment = repositoryService.createDeployment()
-                        .tenantId(TenantHelper.getTenantId())
-                        .addInputStream(filename, inputStream).name(processName).key(processKey).category(categoryCode).deploy();
+                    DeploymentBuilder query = repositoryService.createDeployment();
+                    if (TenantHelper.isEnable()) {
+                        query.tenantId(TenantHelper.getTenantId());
+                    }
+                    deployment = query.addInputStream(filename, inputStream)
+                        .name(processName).key(processKey).category(categoryCode).deploy();
                 } else {
                     throw new ServiceException("文件类型上传错误!");
                 }

+ 72 - 25
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java

@@ -45,7 +45,9 @@ import org.flowable.engine.runtime.ProcessInstanceQuery;
 import org.flowable.engine.task.Attachment;
 import org.flowable.engine.task.Comment;
 import org.flowable.task.api.Task;
+import org.flowable.task.api.TaskQuery;
 import org.flowable.task.api.history.HistoricTaskInstance;
+import org.flowable.task.api.history.HistoricTaskInstanceQuery;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -96,7 +98,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) {
         List<ProcessInstanceVo> list = new ArrayList<>();
         ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
-        query.processInstanceTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            query.processInstanceTenantId(TenantHelper.getTenantId());
+        }
         if (StringUtils.isNotBlank(processInstanceBo.getName())) {
             query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
         }
@@ -134,7 +138,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
         List<ProcessInstanceVo> list = new ArrayList<>();
         HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().finished()
             .orderByProcessInstanceEndTime().desc();
-        query.processInstanceTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            query.processInstanceTenantId(TenantHelper.getTenantId());
+        }
         if (StringUtils.isNotEmpty(processInstanceBo.getName())) {
             query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
         }
@@ -315,8 +321,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     public Map<String, Object> getHistoryRecord(String processInstanceId) {
         Map<String, Object> map = new HashMap<>();
         // 查询任务办理记录
-        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
-            .processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
+        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        List<HistoricTaskInstance> list = query.processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
         list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
         List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>();
         List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId);
@@ -454,8 +463,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) {
         try {
-            List<Task> list = taskService.createTaskQuery().processInstanceId(processInvalidBo.getProcessInstanceId())
-                .taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query.processInstanceId(processInvalidBo.getProcessInstanceId()).list();
             List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
             if (CollUtil.isNotEmpty(subTasks)) {
                 subTasks.forEach(e -> taskService.deleteTask(e.getId()));
@@ -467,8 +479,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) {
                 taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason);
             }
-            HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
-                .processInstanceId(processInvalidBo.getProcessInstanceId()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+            HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query1.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            HistoricProcessInstance historicProcessInstance = query1.processInstanceId(processInvalidBo.getProcessInstanceId()).singleResult();
             if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.FINISH.getStatus().equals(historicProcessInstance.getBusinessStatus())) {
                 throw new ServiceException("该单据已完成申请!");
             }
@@ -495,16 +510,22 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) {
         try {
             // 1.删除运行中流程实例
-            List<Task> list = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds)
-                .taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query.processInstanceIdIn(processInstanceIds).list();
             List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
             if (CollUtil.isNotEmpty(subTasks)) {
                 subTasks.forEach(e -> taskService.deleteTask(e.getId()));
             }
             runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
             // 2.删除历史记录
-            List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
-                .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
+            HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query1.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list();
             if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
                 historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
             }
@@ -531,16 +552,22 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
                 return false;
             }
             List<String> processInstanceIds = StreamUtils.toList(actHiProcinsts, ActHiProcinst::getId);
-            List<Task> list = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds)
-                .taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query.processInstanceIdIn(processInstanceIds).list();
             List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
             if (CollUtil.isNotEmpty(subTasks)) {
                 subTasks.forEach(e -> taskService.deleteTask(e.getId()));
             }
             runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
             // 2.删除历史记录
-            List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
-                .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
+            HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query1.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list();
             if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
                 historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
             }
@@ -577,8 +604,12 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     @Transactional(rollbackFor = Exception.class)
     public boolean cancelProcessApply(String processInstanceId) {
         try {
-            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
-                .processInstanceId(processInstanceId).processInstanceTenantId(TenantHelper.getTenantId()).startedBy(String.valueOf(LoginHelper.getUserId())).singleResult();
+            ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            ProcessInstance processInstance = query.processInstanceId(processInstanceId)
+                .startedBy(String.valueOf(LoginHelper.getUserId())).singleResult();
             if (ObjectUtil.isNull(processInstance)) {
                 throw new ServiceException("您不是流程发起人,撤销失败!");
             }
@@ -588,7 +619,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) {
                 throw new ServiceException("该单据已撤销!");
             }
-            List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).list();
+            TaskQuery query1 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query1.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> taskList = query1.processInstanceId(processInstanceId).list();
             for (Task task : taskList) {
                 taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId()));
                 taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.CANCEL.getStatus(), LoginHelper.getLoginUser().getNickname() + ":撤销申请");
@@ -598,7 +633,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             runtimeService.createChangeActivityStateBuilder()
                 .processInstanceId(processInstanceId)
                 .moveActivityIdsToSingleActivityId(nodeIds, historicTaskInstance.getTaskDefinitionKey()).changeState();
-            Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).list().get(0);
+            TaskQuery query2 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query2.taskTenantId(TenantHelper.getTenantId());
+            }
+            Task task = query2.processInstanceId(processInstanceId).list().get(0);
             taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee());
             //获取并行网关执行后保留的执行实例数据
             ExecutionChildByExecutionIdCmd childByExecutionIdCmd = new ExecutionChildByExecutionIdCmd(task.getExecutionId());
@@ -629,7 +668,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) {
         List<ProcessInstanceVo> list = new ArrayList<>();
         HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
-        query.processInstanceTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            query.processInstanceTenantId(TenantHelper.getTenantId());
+        }
         query.startedBy(processInstanceBo.getStartUserId());
         if (StringUtils.isNotBlank(processInstanceBo.getName())) {
             query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
@@ -648,7 +689,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
         List<TaskVo> taskVoList = new ArrayList<>();
         if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
             List<String> processInstanceIds = StreamUtils.toList(historicProcessInstanceList, HistoricProcessInstance::getId);
-            List<Task> taskList = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds).taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query1 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query1.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> taskList = query1.processInstanceIdIn(processInstanceIds).list();
             for (Task task : taskList) {
                 taskVoList.add(BeanUtil.toBean(task, TaskVo.class));
             }
@@ -675,9 +720,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
     @Transactional(rollbackFor = Exception.class)
     public boolean taskUrging(TaskUrgingBo taskUrgingBo) {
         try {
-            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
-                .processInstanceId(taskUrgingBo.getProcessInstanceId())
-                .processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+            ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            ProcessInstance processInstance = query.processInstanceId(taskUrgingBo.getProcessInstanceId()).singleResult();
             if (processInstance == null) {
                 throw new ServiceException("任务已结束!");
             }

+ 101 - 23
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java

@@ -35,10 +35,12 @@ import org.flowable.common.engine.api.FlowableObjectNotFoundException;
 import org.flowable.common.engine.impl.identity.Authentication;
 import org.flowable.engine.*;
 import org.flowable.engine.history.HistoricProcessInstance;
+import org.flowable.engine.history.HistoricProcessInstanceQuery;
 import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
 import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
 import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
 import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.engine.runtime.ProcessInstanceQuery;
 import org.flowable.task.api.Task;
 import org.flowable.task.api.TaskQuery;
 import org.flowable.task.api.history.HistoricTaskInstance;
@@ -84,12 +86,19 @@ public class ActTaskServiceImpl implements IActTaskService {
             throw new ServiceException("启动工作流时必须包含业务ID");
         }
         // 判断当前业务是否启动过流程
-        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceBusinessKey(startProcessBo.getBusinessKey()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+        HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.processInstanceTenantId(TenantHelper.getTenantId());
+        }
+        HistoricProcessInstance historicProcessInstance = query.processInstanceBusinessKey(startProcessBo.getBusinessKey()).singleResult();
         if (ObjectUtil.isNotEmpty(historicProcessInstance)) {
             BusinessStatusEnum.checkStartStatus(historicProcessInstance.getBusinessStatus());
         }
         TaskQuery taskQuery = taskService.createTaskQuery();
-        List<Task> taskResult = taskQuery.processInstanceBusinessKey(startProcessBo.getBusinessKey()).taskTenantId(TenantHelper.getTenantId()).list();
+        if (TenantHelper.isEnable()) {
+            taskQuery.taskTenantId(TenantHelper.getTenantId());
+        }
+        List<Task> taskResult = taskQuery.processInstanceBusinessKey(startProcessBo.getBusinessKey()).list();
         if (CollUtil.isNotEmpty(taskResult)) {
             if (CollUtil.isNotEmpty(startProcessBo.getVariables())) {
                 taskService.setVariables(taskResult.get(0).getId(), startProcessBo.getVariables());
@@ -109,14 +118,22 @@ public class ActTaskServiceImpl implements IActTaskService {
         variables.put(INITIATOR, (String.valueOf(LoginHelper.getUserId())));
         ProcessInstance pi;
         try {
-            pi = runtimeService.startProcessInstanceByKeyAndTenantId(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId());
+            if (TenantHelper.isEnable()) {
+                pi = runtimeService.startProcessInstanceByKeyAndTenantId(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId());
+            } else {
+                pi = runtimeService.startProcessInstanceByKey(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables);
+            }
         } catch (FlowableObjectNotFoundException e) {
             throw new ServiceException("找不到当前【" + startProcessBo.getProcessKey() + "】流程定义!");
         }
         // 将流程定义名称 作为 流程实例名称
         runtimeService.setProcessInstanceName(pi.getProcessInstanceId(), pi.getProcessDefinitionName());
         // 申请人执行流程
-        List<Task> taskList = taskService.createTaskQuery().processInstanceId(pi.getId()).taskTenantId(TenantHelper.getTenantId()).list();
+        TaskQuery taskQuery1 = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            taskQuery.taskTenantId(TenantHelper.getTenantId());
+        }
+        List<Task> taskList = taskQuery1.processInstanceId(pi.getId()).list();
         if (taskList.size() > 1) {
             throw new ServiceException("请检查流程第一个环节是否为申请人!");
         }
@@ -141,7 +158,10 @@ public class ActTaskServiceImpl implements IActTaskService {
             List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles();
             String userId = String.valueOf(LoginHelper.getUserId());
             TaskQuery taskQuery = taskService.createTaskQuery();
-            taskQuery.taskId(completeTaskBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()).taskCandidateOrAssigned(userId);
+            if (TenantHelper.isEnable()) {
+                taskQuery.taskTenantId(TenantHelper.getTenantId());
+            }
+            taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId);
             if (CollUtil.isNotEmpty(roles)) {
                 List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId()));
                 taskQuery.taskCandidateGroupIn(groupIds);
@@ -186,8 +206,11 @@ public class ActTaskServiceImpl implements IActTaskService {
             } else {
                 taskService.complete(completeTaskBo.getTaskId());
             }
-            ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId())
-                .processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+            ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
+            if (TenantHelper.isEnable()) {
+                query.processInstanceTenantId(TenantHelper.getTenantId());
+            }
+            ProcessInstance pi = query.processInstanceId(task.getProcessInstanceId()).singleResult();
             if (pi == null) {
                 UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus());
                 managementService.executeCommand(updateBusinessStatusCmd);
@@ -195,7 +218,11 @@ public class ActTaskServiceImpl implements IActTaskService {
                     processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.FINISH.getStatus(), false);
                 }
             } else {
-                List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
+                TaskQuery query1 = taskService.createTaskQuery();
+                if (TenantHelper.isEnable()) {
+                    query1.taskTenantId(TenantHelper.getTenantId());
+                }
+                List<Task> list = query1.processInstanceId(task.getProcessInstanceId()).list();
                 if (CollUtil.isNotEmpty(list) && CollUtil.isNotEmpty(completeTaskBo.getWfCopyList())) {
                     TaskEntity newTask = WorkflowUtils.createNewTask(task);
                     taskService.addComment(newTask.getId(), task.getProcessInstanceId(), TaskStatusEnum.COPY.getStatus(),
@@ -239,7 +266,7 @@ public class ActTaskServiceImpl implements IActTaskService {
         List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles();
         String userId = String.valueOf(LoginHelper.getUserId());
         queryWrapper.eq("t.business_status_", BusinessStatusEnum.WAITING.getStatus());
-        queryWrapper.eq("t.tenant_id_", TenantHelper.getTenantId());
+        queryWrapper.eq(TenantHelper.isEnable(), "t.tenant_id_", TenantHelper.getTenantId());
         queryWrapper.and(w1 ->
             w1.eq("t.assignee_", userId)
                 .or(w2 -> w2.isNull("t.assignee_")
@@ -272,7 +299,10 @@ public class ActTaskServiceImpl implements IActTaskService {
      */
     @Override
     public TableDataInfo<TaskVo> getAllTaskWaitByPage(TaskBo taskBo) {
-        TaskQuery query = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId());
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
         if (StringUtils.isNotBlank(taskBo.getName())) {
             query.taskNameLike("%" + taskBo.getName() + "%");
         }
@@ -317,7 +347,11 @@ public class ActTaskServiceImpl implements IActTaskService {
     @Override
     public TableDataInfo<TaskVo> getTaskFinishByPage(TaskBo taskBo) {
         String userId = String.valueOf(LoginHelper.getUserId());
-        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery().taskAssignee(userId).taskTenantId(TenantHelper.getTenantId()).finished().orderByHistoricTaskInstanceStartTime().desc();
+        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        query.taskAssignee(userId).finished().orderByHistoricTaskInstanceStartTime().desc();
         if (StringUtils.isNotBlank(taskBo.getName())) {
             query.taskNameLike("%" + taskBo.getName() + "%");
         }
@@ -390,7 +424,11 @@ public class ActTaskServiceImpl implements IActTaskService {
      */
     @Override
     public TableDataInfo<TaskVo> getAllTaskFinishByPage(TaskBo taskBo) {
-        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery().taskTenantId(TenantHelper.getTenantId()).finished().orderByHistoricTaskInstanceStartTime().desc();
+        HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        query.finished().orderByHistoricTaskInstanceStartTime().desc();
         if (StringUtils.isNotBlank(taskBo.getName())) {
             query.taskNameLike("%" + taskBo.getName() + "%");
         }
@@ -432,7 +470,11 @@ public class ActTaskServiceImpl implements IActTaskService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean delegateTask(DelegateBo delegateBo) {
-        TaskEntity task = (TaskEntity) taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
         if (ObjectUtil.isEmpty(task)) {
             throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
         }
@@ -461,7 +503,11 @@ public class ActTaskServiceImpl implements IActTaskService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean terminationTask(TerminationBo terminationBo) {
-        Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(terminationBo.getTaskId()).singleResult();
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        Task task = query.taskId(terminationBo.getTaskId()).singleResult();
 
         if (ObjectUtil.isEmpty(task)) {
             throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
@@ -469,7 +515,11 @@ public class ActTaskServiceImpl implements IActTaskService {
         if (task.isSuspended()) {
             throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED);
         }
-        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceBusinessKey(task.getProcessInstanceId()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+        HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query1.processInstanceTenantId(TenantHelper.getTenantId());
+        }
+        HistoricProcessInstance historicProcessInstance = query1.processInstanceBusinessKey(task.getProcessInstanceId()).singleResult();
         if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.TERMINATION.getStatus().equals(historicProcessInstance.getBusinessStatus())) {
             throw new ServiceException("该单据已终止!");
         }
@@ -480,7 +530,11 @@ public class ActTaskServiceImpl implements IActTaskService {
                 terminationBo.setComment(LoginHelper.getLoginUser().getNickname() + "终止了申请:" + terminationBo.getComment());
             }
             taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.TERMINATION.getStatus(), terminationBo.getComment());
-            List<Task> list = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
+            TaskQuery query2 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query2.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query2.processInstanceId(task.getProcessInstanceId()).list();
             if (CollectionUtil.isNotEmpty(list)) {
                 List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
                 if (CollectionUtil.isNotEmpty(subTasks)) {
@@ -506,7 +560,11 @@ public class ActTaskServiceImpl implements IActTaskService {
      */
     @Override
     public boolean transferTask(TransmitBo transmitBo) {
-        Task task = taskService.createTaskQuery().taskId(transmitBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        Task task = query.taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
         if (ObjectUtil.isEmpty(task)) {
             throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
         }
@@ -534,7 +592,9 @@ public class ActTaskServiceImpl implements IActTaskService {
     public boolean addMultiInstanceExecution(AddMultiBo addMultiBo) {
         TaskQuery taskQuery = taskService.createTaskQuery();
         taskQuery.taskId(addMultiBo.getTaskId());
-        taskQuery.taskTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            taskQuery.taskTenantId(TenantHelper.getTenantId());
+        }
         if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
             taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
         }
@@ -583,7 +643,9 @@ public class ActTaskServiceImpl implements IActTaskService {
     public boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo) {
         TaskQuery taskQuery = taskService.createTaskQuery();
         taskQuery.taskId(deleteMultiBo.getTaskId());
-        taskQuery.taskTenantId(TenantHelper.getTenantId());
+        if (TenantHelper.isEnable()) {
+            taskQuery.taskTenantId(TenantHelper.getTenantId());
+        }
         if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
             taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
         }
@@ -633,7 +695,11 @@ public class ActTaskServiceImpl implements IActTaskService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String backProcess(BackProcessBo backProcessBo) {
-        Task task = taskService.createTaskQuery().taskId(backProcessBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()).taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult();
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        Task task = query.taskId(backProcessBo.getTaskId()).taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult();
         if (ObjectUtil.isEmpty(task)) {
             throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
         }
@@ -651,7 +717,11 @@ public class ActTaskServiceImpl implements IActTaskService {
                 throw new ServiceException("该单据已退回!");
             }
             //判断是否有多个任务
-            List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query1 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query1.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> taskList = query.processInstanceId(processInstanceId).list();
             //申请人节点
             HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
             String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
@@ -663,7 +733,11 @@ public class ActTaskServiceImpl implements IActTaskService {
                 //当前单个节点驳回单个节点
                 runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdTo(task.getTaskDefinitionKey(), backTaskDefinitionKey).changeState();
             }
-            List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query2 = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query1.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query2.processInstanceId(processInstanceId).list();
             for (Task t : list) {
                 taskService.setAssignee(t.getId(), historicTaskInstance.getAssignee());
             }
@@ -696,7 +770,11 @@ public class ActTaskServiceImpl implements IActTaskService {
     @Transactional(rollbackFor = Exception.class)
     public boolean updateAssignee(String[] taskIds, String userId) {
         try {
-            List<Task> list = taskService.createTaskQuery().taskIds(Arrays.asList(taskIds)).taskTenantId(TenantHelper.getTenantId()).list();
+            TaskQuery query = taskService.createTaskQuery();
+            if (TenantHelper.isEnable()) {
+                query.taskTenantId(TenantHelper.getTenantId());
+            }
+            List<Task> list = query.taskIds(Arrays.asList(taskIds)).list();
             for (Task task : list) {
                 taskService.setAssignee(task.getId(), userId);
             }

+ 11 - 2
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java

@@ -29,6 +29,7 @@ import org.flowable.engine.TaskService;
 import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
 import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
 import org.flowable.task.api.Task;
+import org.flowable.task.api.TaskQuery;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -92,8 +93,16 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
     @Override
     @SuppressWarnings("unchecked")
     public List<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
-        Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
-        List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
+        TaskQuery query = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        Task task = query.taskId(taskId).singleResult();
+        TaskQuery query1 = taskService.createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query1.taskTenantId(TenantHelper.getTenantId());
+        }
+        List<Task> taskList = query1.processInstanceId(task.getProcessInstanceId()).list();
         MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
         List<TaskVo> taskListVo = new ArrayList<>();
         if (multiInstance == null) {

+ 32 - 7
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java

@@ -33,11 +33,14 @@ import org.flowable.bpmn.model.*;
 import org.flowable.common.engine.api.delegate.Expression;
 import org.flowable.engine.ProcessEngine;
 import org.flowable.engine.history.HistoricProcessInstance;
+import org.flowable.engine.history.HistoricProcessInstanceQuery;
 import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
 import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
 import org.flowable.identitylink.api.history.HistoricIdentityLink;
 import org.flowable.task.api.Task;
+import org.flowable.task.api.TaskQuery;
 import org.flowable.task.api.history.HistoricTaskInstance;
+import org.flowable.task.api.history.HistoricTaskInstanceQuery;
 import org.flowable.task.service.impl.persistence.entity.TaskEntity;
 
 import java.util.*;
@@ -78,7 +81,9 @@ public class WorkflowUtils {
             task.setTaskDefinitionKey(currentTask.getTaskDefinitionKey());
             task.setPriority(currentTask.getPriority());
             task.setCreateTime(new Date());
-            task.setTenantId(TenantHelper.getTenantId());
+            if (TenantHelper.isEnable()) {
+                task.setTenantId(TenantHelper.getTenantId());
+            }
             PROCESS_ENGINE.getTaskService().saveTask(task);
         }
         if (ObjectUtil.isNotNull(task)) {
@@ -105,7 +110,9 @@ public class WorkflowUtils {
                 newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId());
                 newTask.setProcessInstanceId(parentTask.getProcessInstanceId());
                 newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
-                newTask.setTenantId(TenantHelper.getTenantId());
+                if (TenantHelper.isEnable()) {
+                    newTask.setTenantId(TenantHelper.getTenantId());
+                }
                 list.add(newTask);
             }
         }
@@ -118,7 +125,9 @@ public class WorkflowUtils {
             actHiTaskinst.setProcDefId(processDefinitionId);
             actHiTaskinst.setProcInstId(processInstanceId);
             actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus());
-            actHiTaskinst.setTenantId(TenantHelper.getTenantId());
+            if (TenantHelper.isEnable()) {
+                actHiTaskinst.setTenantId(TenantHelper.getTenantId());
+            }
             LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.in(ActHiTaskinst::getId, taskIds);
             ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper);
@@ -136,7 +145,11 @@ public class WorkflowUtils {
     public static ParticipantVo getCurrentTaskParticipant(String taskId) {
         ParticipantVo participantVo = new ParticipantVo();
         List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId);
-        Task task = PROCESS_ENGINE.getTaskService().createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
+        TaskQuery query = PROCESS_ENGINE.getTaskService().createTaskQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        Task task = query.taskId(taskId).singleResult();
         if (task != null && CollUtil.isNotEmpty(linksForTask)) {
             List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
             if (CollUtil.isNotEmpty(groupList)) {
@@ -220,8 +233,16 @@ public class WorkflowUtils {
      * @param taskId 任务id
      */
     public static String getBusinessStatusByTaskId(String taskId) {
-        HistoricTaskInstance historicTaskInstance = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery().taskId(taskId).taskTenantId(TenantHelper.getTenantId()).singleResult();
-        HistoricProcessInstance historicProcessInstance = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(historicTaskInstance.getProcessInstanceId()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+        HistoricTaskInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.taskTenantId(TenantHelper.getTenantId());
+        }
+        HistoricTaskInstance historicTaskInstance = query.taskId(taskId).singleResult();
+        HistoricProcessInstanceQuery query1 = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query1.processInstanceTenantId(TenantHelper.getTenantId());
+        }
+        HistoricProcessInstance historicProcessInstance = query1.processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult();
         return historicProcessInstance.getBusinessStatus();
     }
 
@@ -231,7 +252,11 @@ public class WorkflowUtils {
      * @param processInstanceId 流程实例id
      */
     public static String getBusinessStatus(String processInstanceId) {
-        HistoricProcessInstance historicProcessInstance = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
+        HistoricProcessInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
+        if (TenantHelper.isEnable()) {
+            query.processInstanceTenantId(TenantHelper.getTenantId());
+        }
+        HistoricProcessInstance historicProcessInstance = query.processInstanceId(processInstanceId).singleResult();
         return historicProcessInstance.getBusinessStatus();
     }