diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessDefinitionServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessDefinitionServiceImpl.java index 79f295903..d8e1e09f9 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessDefinitionServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessDefinitionServiceImpl.java @@ -188,19 +188,27 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe @Override public BpmnProcessDefinitionVO getActiveProcessDefinitionByKey(String key, String tenantId) { - ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery() + List list = repositoryService.createProcessDefinitionQuery() .processDefinitionKey(key) - .latestVersion(); - if (StringUtils.hasLength(tenantId)) { - query.processDefinitionTenantId(tenantId); - } else { - // 公共模型没有租户 - query.processDefinitionTenantId(""); - } - ProcessDefinition processDefinition = query.singleResult(); - if (Objects.isNull(processDefinition)) { + .list(); + + if (CollectionUtils.isEmpty(list)) { throw new WorkflowEngineException(PROCESS_DEFINITION_KEY_NOT_EXISTS, key); } + + ProcessDefinition processDefinition; + List filterDefinitions = list.stream() + .filter(i -> Objects.equals(tenantId, i.getTenantId()) || Objects.equals("", i.getTenantId())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filterDefinitions)) { + throw new WorkflowEngineException(PROCESS_DEFINITION_KEY_NOT_EXISTS, key); + } else if (filterDefinitions.size() == 1) { + processDefinition = filterDefinitions.get(0); + } else { + processDefinition = filterDefinitions.stream().filter(i -> Objects.equals(tenantId, i.getKey())).findFirst() + .orElseThrow(() -> new WorkflowEngineException(PROCESS_DEFINITION_ID_NOT_EXISTS)); + } + return processDefinitionConverter.toVo(processDefinition); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 1ef80c0ca..ed57d0aa1 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -248,7 +248,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic .businessKey(dto.getBusinessKey()) .variables(dto.getVariables()) .name(name) - .tenantId(dto.getInitiator().getTenantId()) + .overrideProcessDefinitionTenantId(dto.getTenantId()) .start(); return instance.getProcessInstanceId(); }