REQ-2596-调整自动过审代码逻辑

This commit is contained in:
yangqicheng 2024-07-09 15:50:33 +08:00
parent c94b7e0377
commit cf394d9120
5 changed files with 34 additions and 13 deletions

View File

@ -10,17 +10,36 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GetSpecifiedVersionBeanUtils {
public static <T extends Versioned> T getSpecialVersionBean(Class<T> clazz, String version) {
import static cn.axzo.workflow.core.version.Versioned.UNKNOWN_VERSION;
public class MultiVersionBeanUtils {
/**
* 获取支持指定版本的bean
*
* @param clazz 类型
* @param version 版本号
* @param <T>
* @return
*/
public static <T extends Versioned> T getSpecifiedVersionBean(Class<T> clazz, String version) {
Map<String, T> beans = SpringContentUtils.getBeansOfType(clazz);
if (CollectionUtils.isEmpty(beans)) {
throw new NullPointerException("no beans of type " + clazz.getName());
}
if (StringUtils.isEmpty(version)) {
//todo 版本为空需要一个默认处理类
T t = beans.values().stream().filter(bean -> bean.getVersion() == null).findFirst().orElse(null);
if (t != null) {
return t;
}
throw new IllegalArgumentException("no default version bean found for version: " + version);
}
//根据版本号排序
List<T> sortedList = beans.values().stream().sorted().collect(Collectors.toList());
List<T> sortedList = beans.values().stream().sorted((o1, o2) -> {
DefaultArtifactVersion version1 = o1.getVersion() == null ? UNKNOWN_VERSION : o1.getVersion();
DefaultArtifactVersion version2 = o2.getVersion() == null ? UNKNOWN_VERSION : o2.getVersion();
return version1.compareTo(version2);
}).collect(Collectors.toList());
DefaultArtifactVersion targetVersion = new DefaultArtifactVersion(version);
for (int i = sortedList.size() - 1; i >= 0; i--) {
int flag = sortedList.get(i).getVersion().compareTo(targetVersion);

View File

@ -5,4 +5,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
public interface Versioned {
DefaultArtifactVersion getVersion();
DefaultArtifactVersion UNKNOWN_VERSION = new DefaultArtifactVersion("0.0.0");
}

View File

@ -11,8 +11,8 @@ import cn.axzo.workflow.core.engine.operation.DeleteProcessInstanceOperation;
import cn.axzo.workflow.core.listener.AbstractBpmnEventListener;
import cn.axzo.workflow.core.listener.BpmnTaskEventListener;
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import cn.axzo.workflow.core.version.GetSpecifiedVersionBeanUtils;
import cn.axzo.workflow.server.controller.listener.task.service.CheckApproveService;
import cn.axzo.workflow.core.version.MultiVersionBeanUtils;
import cn.axzo.workflow.server.controller.listener.task.service.CheckApproverService;
import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -92,8 +92,8 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
if (approvalTypeEnumOpt.isPresent() && approvalTypeEnumOpt.get() == AutoApprovalTypeEnum.CONTINUOUS_NODES_AUTO_APPROVAL) {
Object versionVar = delegateTask.getVariable(WORKFLOW_ENGINE_VERSION);
String version = versionVar == null ? null : String.valueOf(versionVar);
CheckApproveService checkApproveService = GetSpecifiedVersionBeanUtils.getSpecialVersionBean(CheckApproveService.class, version);
boolean exists = checkApproveService.checkApproverExists(delegateTask, userTask, mainProcess, getContext());
CheckApproverService checkApproverService = MultiVersionBeanUtils.getSpecifiedVersionBean(CheckApproverService.class, version);
boolean exists = checkApproverService.checkApproverExists(delegateTask, userTask, mainProcess, getContext());
log.info("是否需要自动过程判断 exists:{},processInstId:{},taskDefinitionKey:{}", exists, delegateTask.getProcessInstanceId(), delegateTask.getTaskDefinitionKey());
if (exists) {
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), COMMENT_TYPE_ADVICE,

View File

@ -6,7 +6,7 @@ import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask;
import org.flowable.task.service.delegate.DelegateTask;
public interface CheckApproveService extends Versioned {
public interface CheckApproverService extends Versioned {
boolean checkApproverExists(DelegateTask delegateTask, UserTask userTask, Process mainProcess, TaskOperationContext taskOperationContext);

View File

@ -10,7 +10,7 @@ import cn.axzo.workflow.core.common.context.TaskOperationContext;
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import cn.axzo.workflow.server.controller.listener.task.service.CheckApproveService;
import cn.axzo.workflow.server.controller.listener.task.service.CheckApproverService;
import lombok.AllArgsConstructor;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.flowable.bpmn.model.FlowElement;
@ -30,7 +30,6 @@ import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import static cn.axzo.workflow.common.constant.BpmnConstants.FLOW_SERVER_VERSION_130;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_EMPTY;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
@ -45,7 +44,7 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROV
*/
@Component
@AllArgsConstructor
public class CheckApproverServiceImpl implements CheckApproveService {
public class CheckApproverServiceImpl implements CheckApproverService {
private final ExtAxHiTaskInstService extAxHiTaskInstService;
@ -129,6 +128,7 @@ public class CheckApproverServiceImpl implements CheckApproveService {
@Override
public DefaultArtifactVersion getVersion() {
return new DefaultArtifactVersion(FLOW_SERVER_VERSION_130);
// return new DefaultArtifactVersion(FLOW_SERVER_VERSION_130);
return null;
}
}