修改了无法添加基础节点的bug,增加WebSocket JSON ID字段,远程环境交互使用消息ID作为响应key。

This commit is contained in:
fengjiayi
2024-10-22 00:13:13 +08:00
parent 838158f446
commit 0a7e24d318
48 changed files with 1209 additions and 500 deletions

View File

@@ -6,9 +6,16 @@ using System.Threading.Tasks;
namespace Serein.Library
{
/// <summary>
/// 标识一个类中的某些字段需要生成相应代码
/// </summary>
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
internal sealed class AutoPropertyAttribute : Attribute
public sealed class AutoPropertyAttribute : Attribute
{
/// <summary>
/// <para>属性路径</para>
/// <para>CustomNode : 自定义节点</para>
/// </summary>
public string ValuePath = string.Empty;
}
@@ -16,10 +23,19 @@ namespace Serein.Library
/// 自动生成环境的属性
/// </summary>
[AttributeUsage(AttributeTargets.Field, Inherited = true)]
internal sealed class PropertyInfoAttribute : Attribute
public sealed class PropertyInfoAttribute : Attribute
{
/// <summary>
/// 是否通知UI
/// </summary>
public bool IsNotification = false;
/// <summary>
/// 是否使用Console.WriteLine打印
/// </summary>
public bool IsPrint = false;
/// <summary>
/// 是否禁止参数进行修改初始化后不能再通过setter修改
/// </summary>
public bool IsProtection = false;
}

View File

@@ -9,7 +9,7 @@ namespace Serein.Library
/// <summary>
/// 每个节点有独自的MethodDetails实例
/// </summary>
[AutoProperty(ValuePath = nameof(MethodDetails))]
[NodeProperty(ValuePath = NodeValuePath.Method)]
public partial class MethodDetails
{
private readonly IFlowEnvironment env;
@@ -142,7 +142,7 @@ namespace Serein.Library
MethodLockName = this.MethodLockName,
IsProtectionParameter = this.IsProtectionParameter,
};
md.ParameterDetailss = this.ParameterDetailss.Select(p => p.CloneOfClone(env, nodeModel)).ToArray(); // 拷贝属于节点方法的新入参描述
md.ParameterDetailss = this.ParameterDetailss?.Select(p => p?.CloneOfClone(env, nodeModel)).ToArray(); // 拷贝属于节点方法的新入参描述
return md;
}

View File

@@ -9,7 +9,7 @@ namespace Serein.Library
/// <summary>
/// 节点调试设置,用于中断节点的运行
/// </summary>
[AutoProperty(ValuePath = nameof(NodeDebugSetting))]
[NodeProperty(ValuePath = NodeValuePath.DebugSetting)]
public partial class NodeDebugSetting
{
private readonly NodeModelBase nodeModel;
@@ -33,6 +33,13 @@ namespace Serein.Library
[PropertyInfo]
private InterruptClass _interruptClass = InterruptClass.None;
/// <summary>
/// 中断级别,暂时停止继续执行后继分支。
/// </summary>
[PropertyInfo(IsNotification = true)]
private bool _isInterrupt = false;
/// <summary>
/// 取消中断的回调函数
/// </summary>

View File

@@ -1,4 +1,5 @@
using Serein.Library.Api;
using Serein.Library.NodeGenerator;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -10,7 +11,7 @@ namespace Serein.Library
/// <summary>
/// 节点基类(数据):条件控件,动作控件,条件区域,动作区域
/// </summary>
[AutoProperty(ValuePath = nameof(NodeModelBase))] // 是否更名为 NodeProperty?
[NodeProperty(ValuePath = NodeValuePath.None)]
public abstract partial class NodeModelBase : IDynamicFlowNode
{

View File

@@ -86,7 +86,13 @@ namespace Serein.Library
/// <returns></returns>
public virtual NodeModelBase LoadInfo(NodeInfo nodeInfo)
{
this.Guid = nodeInfo.Guid;
this.Guid = nodeInfo.Guid;
if (nodeInfo.Position is null)
{
nodeInfo.Position = new PositionOfUI(0, 0);
}
this.Position = nodeInfo.Position;// 加载位置信息
if (this.MethodDetails != null)
{
for (int i = 0; i < nodeInfo.ParameterData.Length; i++)
@@ -96,7 +102,6 @@ namespace Serein.Library
this.MethodDetails.ParameterDetailss[i].DataValue = pd.Value;
}
}
this.Position = nodeInfo.Position;// 加载位置信息
return this;
}

View File

@@ -11,7 +11,7 @@ namespace Serein.Library
/// <summary>
/// 节点入参参数详情
/// </summary>
[AutoProperty(ValuePath = nameof(ParameterDetails))]
[NodeProperty(ValuePath = NodeValuePath.Parameter)]
public partial class ParameterDetails
{
private readonly IFlowEnvironment env;

View File

@@ -11,7 +11,7 @@ namespace Serein.Library
{
/// <summary>
/// 环境信息(远程控制用)
/// 环境信息
/// </summary>
public class FlowEnvInfo
{
@@ -27,10 +27,18 @@ namespace Serein.Library
// IOC节点对象信息
}
/// <summary>
/// 程序集相关的方法信息
/// </summary>
public class LibraryMds
{
/// <summary>
/// 程序集FullName
/// </summary>
public string LibraryName { get; set; }
/// <summary>
/// 相关的方法详情
/// </summary>
public MethodDetailsInfo[] Mds { get; set; }
}
@@ -70,7 +78,7 @@ namespace Serein.Library
}
/// <summary>
/// 基础
/// 基础,项目文件相关
/// </summary>
public class Basic
{
@@ -87,7 +95,7 @@ namespace Serein.Library
public string Versions { get; set; }
}
/// <summary>
/// 画布
/// 画布信息,项目文件相关
/// </summary>
public class FlowCanvas
{
@@ -122,7 +130,7 @@ namespace Serein.Library
}
/// <summary>
/// DLL
/// 项目依赖的程序集,项目文件相关
/// </summary>
public class Library
{
@@ -144,7 +152,7 @@ namespace Serein.Library
}
/// <summary>
/// 节点
/// 节点信息,项目文件相关
/// </summary>
public class NodeInfo
{
@@ -215,7 +223,7 @@ namespace Serein.Library
}
/// <summary>
/// 显示参数
/// 显示参数,项目文件相关
/// </summary>
public class Parameterdata
{