mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-13 20:53:42 +08:00
条件分支工作流节点优化
This commit is contained in:
@@ -231,16 +231,22 @@ public class SwitcherNode extends AbstractWfNode {
|
|||||||
private String getValueFromInputs(String nodeUuid, String paramName, List<NodeIOData> inputs) {
|
private String getValueFromInputs(String nodeUuid, String paramName, List<NodeIOData> inputs) {
|
||||||
log.debug("从节点UUID '{}' 搜索参数 '{}'", nodeUuid, paramName);
|
log.debug("从节点UUID '{}' 搜索参数 '{}'", nodeUuid, paramName);
|
||||||
|
|
||||||
|
String result = null;
|
||||||
|
|
||||||
// 首先尝试从当前输入中查找
|
// 首先尝试从当前输入中查找
|
||||||
log.debug("检查当前输入 (数量: {})", inputs.size());
|
log.debug("检查当前输入 (数量: {})", inputs.size());
|
||||||
for (NodeIOData input : inputs) {
|
for (NodeIOData input : inputs) {
|
||||||
log.debug(" - 输入: 名称='{}', 值='{}'", input.getName(), input.valueToString());
|
log.debug(" - 输入: 名称='{}', 值='{}'", input.getName(), input.valueToString());
|
||||||
if (paramName.equals(input.getName())) {
|
if (paramName.equals(input.getName())) {
|
||||||
log.info("在当前输入中找到参数 '{}': '{}'", paramName, input.valueToString());
|
result = input.valueToString();
|
||||||
return input.valueToString();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
log.info("在当前输入中找到参数 '{}': '{}'", paramName, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// 如果当前输入中没有,尝试从工作流状态中查找指定节点的输出
|
// 如果当前输入中没有,尝试从工作流状态中查找指定节点的输出
|
||||||
if (StringUtils.isNotBlank(nodeUuid)) {
|
if (StringUtils.isNotBlank(nodeUuid)) {
|
||||||
List<NodeIOData> nodeOutputs = wfState.getIOByNodeUuid(nodeUuid);
|
List<NodeIOData> nodeOutputs = wfState.getIOByNodeUuid(nodeUuid);
|
||||||
@@ -248,14 +254,27 @@ public class SwitcherNode extends AbstractWfNode {
|
|||||||
for (NodeIOData output : nodeOutputs) {
|
for (NodeIOData output : nodeOutputs) {
|
||||||
log.debug(" - 输出: 名称='{}', 值='{}'", output.getName(), output.valueToString());
|
log.debug(" - 输出: 名称='{}', 值='{}'", output.getName(), output.valueToString());
|
||||||
if (paramName.equals(output.getName())) {
|
if (paramName.equals(output.getName())) {
|
||||||
log.info("在节点 '{}' 的输出中找到参数 '{}': '{}'", nodeUuid, paramName, output.valueToString());
|
result = output.valueToString();
|
||||||
return output.valueToString();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
log.info("在节点 '{}' 的输出中找到参数 '{}': '{}'", nodeUuid, paramName, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.debug("节点UUID为空,跳过工作流状态搜索");
|
log.debug("节点UUID为空,跳过工作流状态搜索");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 特殊处理:如果找的是 'output' 但没找到,尝试找 'input'
|
||||||
|
if ("output".equals(paramName)) {
|
||||||
|
log.debug("未找到参数 'output',尝试查找 'input'");
|
||||||
|
String inputValue = getValueFromInputs(nodeUuid, "input", inputs);
|
||||||
|
if (inputValue != null) {
|
||||||
|
return inputValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.warn("在输入或节点 '{}' 的输出中未找到参数 '{}'", nodeUuid, paramName);
|
log.warn("在输入或节点 '{}' 的输出中未找到参数 '{}'", nodeUuid, paramName);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user