2024-10-15 10:55:41 +08:00
|
|
|
|
using Serein.Library.Api;
|
2024-10-22 00:13:13 +08:00
|
|
|
|
using Serein.Library.NodeGenerator;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2024-10-20 21:59:42 +08:00
|
|
|
|
using System.ComponentModel;
|
2024-10-24 23:32:43 +08:00
|
|
|
|
using System.Net.Mime;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
using System.Threading;
|
|
|
|
|
|
|
2024-10-20 12:10:57 +08:00
|
|
|
|
namespace Serein.Library
|
2024-10-15 10:55:41 +08:00
|
|
|
|
{
|
2024-10-20 21:59:42 +08:00
|
|
|
|
|
2024-11-08 17:30:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 节点基类(数据):条件控件,动作控件,条件区域,动作区域
|
|
|
|
|
|
/// </summary>
|
2024-10-22 00:13:13 +08:00
|
|
|
|
[NodeProperty(ValuePath = NodeValuePath.None)]
|
2024-10-15 10:55:41 +08:00
|
|
|
|
public abstract partial class NodeModelBase : IDynamicFlowNode
|
|
|
|
|
|
{
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 节点运行环境
|
|
|
|
|
|
/// </summary>
|
2024-10-20 21:59:42 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
|
|
|
|
|
private IFlowEnvironment _env;
|
2024-10-20 12:10:57 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 标识节点对象全局唯一
|
2024-10-20 12:10:57 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
|
|
|
|
|
private string _guid;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 描述节点对应的控件类型
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
|
|
|
|
|
private NodeControlType _controlType;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 在画布中的位置
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-20 21:59:42 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
2024-10-23 19:22:27 +08:00
|
|
|
|
private PositionOfUI _position ;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 显示名称
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo]
|
|
|
|
|
|
private string _displayName;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 是否为起点控件
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo]
|
|
|
|
|
|
private bool _isStart;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 附加的调试功能
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
|
|
|
|
|
private NodeDebugSetting _debugSetting ;
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
/// 方法描述。不包含Method与委托,需要通过MethodName从环境中获取委托进行调用。
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-23 19:22:27 +08:00
|
|
|
|
[PropertyInfo(IsProtection = true)]
|
|
|
|
|
|
private MethodDetails _methodDetails ;
|
|
|
|
|
|
}
|
2024-10-20 21:59:42 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public abstract partial class NodeModelBase : IDynamicFlowNode
|
|
|
|
|
|
{
|
|
|
|
|
|
public NodeModelBase(IFlowEnvironment environment)
|
|
|
|
|
|
{
|
2024-10-24 23:32:43 +08:00
|
|
|
|
PreviousNodes = new Dictionary<ConnectionInvokeType, List<NodeModelBase>>();
|
|
|
|
|
|
SuccessorNodes = new Dictionary<ConnectionInvokeType, List<NodeModelBase>>();
|
|
|
|
|
|
foreach (ConnectionInvokeType ctType in NodeStaticConfig.ConnectionTypes)
|
2024-10-20 21:59:42 +08:00
|
|
|
|
{
|
|
|
|
|
|
PreviousNodes[ctType] = new List<NodeModelBase>();
|
|
|
|
|
|
SuccessorNodes[ctType] = new List<NodeModelBase>();
|
|
|
|
|
|
}
|
|
|
|
|
|
DebugSetting = new NodeDebugSetting(this);
|
|
|
|
|
|
this.Env = environment;
|
|
|
|
|
|
}
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
2024-10-24 23:32:43 +08:00
|
|
|
|
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// <summary>
|
2024-10-20 21:59:42 +08:00
|
|
|
|
/// 不同分支的父节点
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-24 23:32:43 +08:00
|
|
|
|
public Dictionary<ConnectionInvokeType, List<NodeModelBase>> PreviousNodes { get; }
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-10-20 21:59:42 +08:00
|
|
|
|
/// 不同分支的子节点
|
2024-10-15 10:55:41 +08:00
|
|
|
|
/// </summary>
|
2024-10-24 23:32:43 +08:00
|
|
|
|
public Dictionary<ConnectionInvokeType, List<NodeModelBase>> SuccessorNodes { get; }
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
2024-10-27 00:54:10 +08:00
|
|
|
|
}
|
2024-10-15 10:55:41 +08:00
|
|
|
|
|
|
|
|
|
|
|