REQ-2596-调整自动过审代码逻辑
This commit is contained in:
parent
c94b7e0377
commit
cf394d9120
@ -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);
|
||||
@ -5,4 +5,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||
public interface Versioned {
|
||||
|
||||
DefaultArtifactVersion getVersion();
|
||||
|
||||
DefaultArtifactVersion UNKNOWN_VERSION = new DefaultArtifactVersion("0.0.0");
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user