1. 更新了节点入参的条件判断:入参类型为IFlowContext(流程上下文)时禁止创建参数来源连接。

2. [Script]脚本节点移除了“getFlowContext”内置方法,改为自动识别入参名称为“context""flowContext""flow_context",如果是,将自动使用 IFlowContext 类型参数(运行时自动给定)
3. NodeFlow项目中,FlowLibraryService添加了GetType(string)以及TryGetType(string,Type?)方法,用于流程环境搜索外部加载的程序集类型。
This commit is contained in:
fengjiayi
2025-08-04 20:13:03 +08:00
parent bf987f4ef0
commit e389dbb967
10 changed files with 103 additions and 37 deletions

View File

@@ -13,10 +13,10 @@ namespace Serein.Script
public class SereinScriptInterpreter
{
private readonly Dictionary<ASTNode, Type> symbolInfos;
/// <summary>
/// 缓存对象方法调用节点
/// </summary>
//private Dictionary<MemberFunctionCallNode, DelegateDetails> MethodNodeDelegateCaches { get; } = new Dictionary<MemberFunctionCallNode, DelegateDetails>();
private static Dictionary<ASTNode, DelegateDetails> ASTDelegateDetails { get; } = new Dictionary<ASTNode, DelegateDetails>();
@@ -322,15 +322,6 @@ namespace Serein.Script
case FunctionCallNode functionCallNode: // 外部挂载的函数调用
async Task<object?> InterpreterFunctionCallNodeAsync(IScriptInvokeContext context, FunctionCallNode functionCallNode)
{
// 获取流程上下文
if (context.FlowContext != null && functionCallNode.FunctionName.Equals("getFlowContext", StringComparison.OrdinalIgnoreCase))
{
return context.FlowContext;
}
else if (functionCallNode.FunctionName.Equals("getScriptContext", StringComparison.OrdinalIgnoreCase))
{
return context;
}
// 获取参数
var arguments = functionCallNode.Arguments.Count == 0 ? [] :