mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-04-04 23:36:35 +08:00
1. 更新了节点入参的条件判断:入参类型为IFlowContext(流程上下文)时禁止创建参数来源连接。
2. [Script]脚本节点移除了“getFlowContext”内置方法,改为自动识别入参名称为“context""flowContext""flow_context",如果是,将自动使用 IFlowContext 类型参数(运行时自动给定) 3. NodeFlow项目中,FlowLibraryService添加了GetType(string)以及TryGetType(string,Type?)方法,用于流程环境搜索外部加载的程序集类型。
This commit is contained in:
@@ -7,10 +7,6 @@ namespace Serein.Script
|
||||
/// </summary>
|
||||
public interface IScriptInvokeContext
|
||||
{
|
||||
/// <summary>
|
||||
/// 脚本运行的流程上下文,包含了流程上下文和变量等信息
|
||||
/// </summary>
|
||||
IFlowContext FlowContext { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否该退出了(由 TokenSource 控制,用于响应外部发出停止信号)
|
||||
|
||||
@@ -4,15 +4,6 @@ namespace Serein.Script
|
||||
{
|
||||
public sealed class ScriptInvokeContext : IScriptInvokeContext
|
||||
{
|
||||
/// <summary>
|
||||
/// 脚本使用流程上下文
|
||||
/// </summary>
|
||||
/// <param name="flowContext"></param>
|
||||
public ScriptInvokeContext(IFlowContext flowContext)
|
||||
{
|
||||
FlowContext = flowContext;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 不使用流程上下文
|
||||
/// </summary>
|
||||
@@ -20,10 +11,6 @@ namespace Serein.Script
|
||||
{
|
||||
}
|
||||
|
||||
#pragma warning disable CS8766 // 返回类型中引用类型的为 Null 性与隐式实现的成员不匹配(可能是由于为 Null 性特性)。
|
||||
public IFlowContext? FlowContext{ get; }
|
||||
#pragma warning restore CS8766 // 返回类型中引用类型的为 Null 性与隐式实现的成员不匹配(可能是由于为 Null 性特性)。
|
||||
|
||||
/// <summary>
|
||||
/// 定义的变量
|
||||
/// </summary>
|
||||
|
||||
@@ -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 ? [] :
|
||||
|
||||
Reference in New Issue
Block a user