1. 移除了FlipflopContext,统一流程API

2. Script项目脚本修复了 RawString 原始字符串存在的问题
3. Script使用了ValueNode统一了值类型节点,为后续扩展更多的值类型做准备
4. TypeHelper.ToTypeOfString()方法中添加了部分值类型的"Type[]”与“List<Type>”的显式定义,用于脚本在类型中定义数组成员
5. Script项目脚本默认挂载的json方法拆分为jsonObj(String)与jsonStr(Object)以支持序列化与反序列化
6. 项目保存为dnf项目文件时,将不再保存名称为”Default"并且没有节点的画布,避免重复保存时默认画布增多。
This commit is contained in:
fengjiayi
2025-08-02 22:04:13 +08:00
parent 93747ce7fd
commit 79af278b70
26 changed files with 398 additions and 149 deletions

View File

@@ -27,6 +27,14 @@ namespace Serein.Library
RunState = RunState.Running;
}
/// <summary>
/// <para>用于同一个流程上下文中共享、存储任意数据</para>
/// <para>流程完毕时,如果存储的对象实现了 IDisposable 接口,将会自动调用</para>
/// <para>谨慎使用,注意数据的生命周期和内存管理</para>
/// </summary>
public object? Tag { get; set; }
/// <summary>
/// 是否记录流程调用信息
/// </summary>
@@ -78,7 +86,6 @@ namespace Serein.Library
private readonly ConcurrentDictionary<string, ConcurrentDictionary<int, object>> dictNodeParams = new ConcurrentDictionary<string, ConcurrentDictionary<int, object>>();
/// <summary>
/// 记录流程调用信息
@@ -255,11 +262,15 @@ namespace Serein.Library
/// </summary>
public void Reset()
{
if(Tag is IDisposable disposable)
{
disposable.Dispose(); // 释放 Tag 中的资源
}
this.dictNodeFlowData?.Clear();
ExceptionOfRuning = null;
flowInvokeInfos.Clear();
NextOrientation = ConnectionInvokeType.None;
RunState = RunState.Running;
flowInvokeInfos.Clear();
Guid = global::System.Guid.NewGuid().ToString();
}