bug #I5KJFP Switch组件如果被spring动态代理后,无法取到跳转到的目标节点的问题

This commit is contained in:
everywhere.z
2022-08-03 18:08:41 +08:00
parent ffb4dca6a9
commit e288593b89

View File

@@ -3,6 +3,7 @@ package com.yomahub.liteflow.flow.element.condition;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.yomahub.liteflow.core.proxy.ComponentProxy;
import com.yomahub.liteflow.enums.ConditionTypeEnum;
import com.yomahub.liteflow.enums.NodeTypeEnum;
import com.yomahub.liteflow.exception.NoSwitchTargetNodeException;
@@ -12,6 +13,7 @@ import com.yomahub.liteflow.flow.element.Executable;
import com.yomahub.liteflow.flow.element.Node;
import com.yomahub.liteflow.slot.DataBus;
import com.yomahub.liteflow.slot.Slot;
import com.yomahub.liteflow.util.LiteFlowProxyUtil;
import java.util.HashMap;
import java.util.Map;
@@ -34,7 +36,9 @@ public class SwitchCondition extends Condition{
//根据switch节点执行出来的结果选择
Slot slot = DataBus.getSlot(slotIndex);
String targetId = slot.getSwitchResult(this.getSwitchNode().getInstance().getClass().getName());
//这里可能会有spring代理过的bean所以拿到user原始的class
Class<?> originalClass = LiteFlowProxyUtil.getUserClass(this.getSwitchNode().getInstance().getClass());
String targetId = slot.getSwitchResult(originalClass.getName());
if (StrUtil.isNotBlank(targetId)) {
Executable targetExecutor = targetMap.get(targetId);
if (ObjectUtil.isNotNull(targetExecutor)) {