diff --git a/pom.xml b/pom.xml index 6ed2b474a..b5b5e5134 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ 8.0.20 2.0.0 3.7.1 + 3.2.5 @@ -93,6 +94,11 @@ arthas-spring-boot-starter ${arthas.version} + + org.apache.maven + maven-artifact + ${apache-maven.version} + diff --git a/workflow-engine-core/pom.xml b/workflow-engine-core/pom.xml index 04373cbac..06a2196bc 100644 --- a/workflow-engine-core/pom.xml +++ b/workflow-engine-core/pom.xml @@ -84,6 +84,9 @@ cn.axzo.workflow workflow-engine-common - + + org.apache.maven + maven-artifact + diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnHistoricTaskInstanceConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnHistoricTaskInstanceConverter.java index fe15ea79f..6694746db 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnHistoricTaskInstanceConverter.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnHistoricTaskInstanceConverter.java @@ -1,7 +1,10 @@ package cn.axzo.workflow.core.service.converter; import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.variable.api.history.HistoricVariableInstance; +import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityImpl; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.springframework.util.CollectionUtils; @@ -13,6 +16,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Stream; +import static cn.axzo.workflow.common.constant.BpmnConstants.FLOW_SERVER_VERSION_130; import static cn.axzo.workflow.common.constant.BpmnConstants.HIDDEN_ASSIGNEE_ID; import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_TASK_ASSIGNEE_SKIP_FLAT; import static cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum.MI_END; @@ -47,7 +51,8 @@ public interface BpmnHistoricTaskInstanceConverter extends EntityConverter toVosSkipSystemOperation(List entities) { + default List toVosSkipSystemOperation(List entities, + HistoricVariableInstance instanceVersion) { if (CollectionUtils.isEmpty(entities)) { return Collections.emptyList(); } @@ -56,7 +61,22 @@ public interface BpmnHistoricTaskInstanceConverter extends EntityConverter !Objects.equals(i.getAssignee(), HIDDEN_ASSIGNEE_ID)) .filter(i -> !Objects.equals(i.getDeleteReason(), HIDDEN_ASSIGNEE_ID)) .filter(i -> !Objects.equals(i.getDeleteReason(), MI_END.getStatus())); - compatibleVersion(taskInstanceStream).forEach(i -> vos.add(toVo(i))); + if (Objects.isNull(instanceVersion)) { + compatibleVersion(taskInstanceStream).forEach(i -> vos.add(toVo(i))); + } else { + if (instanceVersion instanceof HistoricVariableInstanceEntityImpl) { + String textValue = ((HistoricVariableInstanceEntityImpl) instanceVersion).getTextValue(); + DefaultArtifactVersion version = new DefaultArtifactVersion(textValue); + DefaultArtifactVersion supportVersion = new DefaultArtifactVersion(FLOW_SERVER_VERSION_130); + if (version.compareTo(supportVersion) < 0) { + compatibleVersion(taskInstanceStream).forEach(i -> vos.add(toVo(i))); + } else { + taskInstanceStream.forEach(i -> vos.add(toVo(i))); + } + } else { + taskInstanceStream.forEach(i -> vos.add(toVo(i))); + } + } return vos; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index f20c11ed0..1e2360703 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -91,6 +91,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_R import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO; import static cn.axzo.workflow.common.constant.BpmnConstants.NO_ASSIGNEE; import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT; +import static cn.axzo.workflow.common.constant.BpmnConstants.WORKFLOW_ENGINE_VERSION; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.REJECTED; @@ -317,11 +318,6 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { .list(); taskInstances.forEach(task -> ((HistoricTaskInstanceEntity) task).setCreateTime(((HistoricTaskInstanceEntity) task).getLastUpdateTime())); taskInstances.sort(Comparator.comparing(p -> ((HistoricTaskInstanceEntity) p).getLastUpdateTime())); - // 过滤了多实例或签自动完成的任务 - List vos = historicTaskInstanceConverter.toVosSkipSystemOperation(taskInstances); - Map> commentByTaskIdMap = - taskService.getProcessInstanceComments(processInstanceId).stream() - .collect(Collectors.groupingBy(Comment::getTaskId)); Map variableInstanceMap = // 不能使用框架提供的历史变量 API 查询,有 BUG @@ -331,6 +327,13 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { .list().stream() .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, Function.identity(), (s, t) -> s)); + HistoricVariableInstance instanceVersion = variableInstanceMap.getOrDefault(WORKFLOW_ENGINE_VERSION, null); + // 过滤了多实例或签自动完成的任务 + List vos = historicTaskInstanceConverter.toVosSkipSystemOperation(taskInstances, + instanceVersion); + Map> commentByTaskIdMap = + taskService.getProcessInstanceComments(processInstanceId).stream() + .collect(Collectors.groupingBy(Comment::getTaskId)); Map> attachmentByTaskIdMap = taskService.getProcessInstanceAttachments(processInstanceId).stream() diff --git a/workflow-engine-server/pom.xml b/workflow-engine-server/pom.xml index ca73a29b3..dab288f14 100644 --- a/workflow-engine-server/pom.xml +++ b/workflow-engine-server/pom.xml @@ -18,7 +18,6 @@ 1.4.2.Final 0.2.0 3.25.0 - 3.2.5 @@ -115,7 +114,6 @@ org.apache.maven maven-artifact - ${apache-maven.version}