mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-19 16:06:33 +08:00
准备区分节点、参数、返回值的连接,做个备份
This commit is contained in:
@@ -664,7 +664,7 @@ namespace Serein.Library.Api
|
||||
/// <param name="fromNodeGuid">起始节点Guid</param>
|
||||
/// <param name="toNodeGuid">目标节点Guid</param>
|
||||
/// <param name="connectionType">连接类型</param>
|
||||
Task<bool> ConnectNodeAsync(string fromNodeGuid, string toNodeGuid, ConnectionType connectionType);
|
||||
Task<bool> ConnectNodeAsync(string fromNodeGuid, string toNodeGuid, JunctionType fromNodeJunctionType, JunctionType toNodeJunctionType, ConnectionType connectionType);
|
||||
|
||||
/// <summary>
|
||||
/// 创建节点/区域/基础控件
|
||||
|
||||
@@ -30,7 +30,10 @@ namespace Serein.Library
|
||||
/// 异常发生分支(当前节点对应的方法执行时出现非预期的异常)
|
||||
/// </summary>
|
||||
IsError,
|
||||
|
||||
/// <summary>
|
||||
/// 无视
|
||||
/// </summary>
|
||||
// IsIgnore,
|
||||
}
|
||||
|
||||
|
||||
|
||||
31
Library/Enums/JunctionType.cs
Normal file
31
Library/Enums/JunctionType.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Serein.Library
|
||||
{
|
||||
/// <summary>
|
||||
/// 连接点类型
|
||||
/// </summary>
|
||||
public enum JunctionType
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前执行
|
||||
/// </summary>
|
||||
Execute,
|
||||
/// <summary>
|
||||
/// 入参
|
||||
/// </summary>
|
||||
ArgData,
|
||||
/// <summary>
|
||||
/// 返回值
|
||||
/// </summary>
|
||||
ReturnData,
|
||||
/// <summary>
|
||||
/// 下一步要执行的节点
|
||||
/// </summary>
|
||||
NextStep,
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,13 @@ namespace Serein.Library
|
||||
public partial class MethodDetails
|
||||
{
|
||||
private readonly IFlowEnvironment env;
|
||||
private readonly NodeModelBase nodeModel;
|
||||
|
||||
/// <summary>
|
||||
/// 对应的节点
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeModelBase _nodeModel;
|
||||
|
||||
/// <summary>
|
||||
/// 是否保护参数(目前仅视觉效果参数,不影响运行实现,后续将设置作用在运行逻辑中)
|
||||
/// </summary>
|
||||
@@ -88,7 +94,7 @@ namespace Serein.Library
|
||||
/// <param name="nodeModel">标识属于哪个节点</param>
|
||||
public MethodDetails(IFlowEnvironment env, NodeModelBase nodeModel)
|
||||
{
|
||||
this.nodeModel = nodeModel;
|
||||
NodeModel = nodeModel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -12,14 +12,19 @@ namespace Serein.Library
|
||||
[NodeProperty(ValuePath = NodeValuePath.DebugSetting)]
|
||||
public partial class NodeDebugSetting
|
||||
{
|
||||
private readonly NodeModelBase nodeModel;
|
||||
/// <summary>
|
||||
/// 对应的节点
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeModelBase _nodeModel;
|
||||
|
||||
/// <summary>
|
||||
/// 创建属于某个节点的调试设置
|
||||
/// </summary>
|
||||
/// <param name="nodeModel"></param>
|
||||
public NodeDebugSetting(NodeModelBase nodeModel)
|
||||
{
|
||||
this.nodeModel = nodeModel;
|
||||
NodeModel = nodeModel;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否使能
|
||||
|
||||
@@ -14,61 +14,60 @@ namespace Serein.Library
|
||||
[NodeProperty(ValuePath = NodeValuePath.None)]
|
||||
public abstract partial class NodeModelBase : IDynamicFlowNode
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 节点运行环境
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private IFlowEnvironment _env;
|
||||
|
||||
/// <summary>
|
||||
/// 标识节点对象全局唯一
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private string _guid;
|
||||
|
||||
/// <summary>
|
||||
/// 描述节点对应的控件类型
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeControlType _controlType;
|
||||
|
||||
/// <summary>
|
||||
/// 在画布中的位置
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private PositionOfUI _position ;
|
||||
|
||||
/// <summary>
|
||||
/// 显示名称
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private string _displayName;
|
||||
|
||||
/// <summary>
|
||||
/// 是否为起点控件
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private bool _isStart;
|
||||
|
||||
/// <summary>
|
||||
/// 附加的调试功能
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeDebugSetting _debugSetting ;
|
||||
|
||||
/// <summary>
|
||||
/// 描述节点对应的控件类型
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeControlType _controlType ;
|
||||
|
||||
/// <summary>
|
||||
/// 方法描述。不包含Method与委托,需要通过MethodName从环境中获取委托进行调用。
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private MethodDetails _methodDetails ;
|
||||
|
||||
/// <summary>
|
||||
/// 标识节点对象全局唯一
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private string _guid ;
|
||||
|
||||
/// <summary>
|
||||
/// 显示名称
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private string _displayName ;
|
||||
|
||||
/// <summary>
|
||||
/// 是否为起点控件
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private bool _isStart ;
|
||||
|
||||
/// <summary>
|
||||
/// 运行时的上一节点
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private NodeModelBase _previousNode ;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点执行完毕后需要执行的下一个分支的类别
|
||||
/// </summary>
|
||||
@@ -81,10 +80,11 @@ namespace Serein.Library
|
||||
[PropertyInfo]
|
||||
private Exception _runingException ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public abstract partial class NodeModelBase : IDynamicFlowNode
|
||||
@@ -112,6 +112,7 @@ namespace Serein.Library
|
||||
/// </summary>
|
||||
public Dictionary<ConnectionType, List<NodeModelBase>> SuccessorNodes { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 控制FlowData在同一时间只会被同一个线程更改。
|
||||
/// </summary>
|
||||
|
||||
@@ -15,7 +15,13 @@ namespace Serein.Library
|
||||
public partial class ParameterDetails
|
||||
{
|
||||
private readonly IFlowEnvironment env;
|
||||
private readonly NodeModelBase nodeModel;
|
||||
|
||||
/// <summary>
|
||||
/// 对应的节点
|
||||
/// </summary>
|
||||
[PropertyInfo(IsProtection = true)]
|
||||
private NodeModelBase _nodeModel;
|
||||
|
||||
/// <summary>
|
||||
/// 参数索引
|
||||
/// </summary>
|
||||
@@ -83,7 +89,7 @@ namespace Serein.Library
|
||||
public ParameterDetails(IFlowEnvironment env, NodeModelBase nodeModel)
|
||||
{
|
||||
this.env = env;
|
||||
this.nodeModel = nodeModel;
|
||||
this.NodeModel = nodeModel;
|
||||
}
|
||||
/// <summary>
|
||||
/// 通过参数信息加载实体,用于加载项目文件、远程连接的场景
|
||||
|
||||
@@ -244,26 +244,30 @@ namespace Serein.Library
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 节点于画布中的位置
|
||||
/// 节点于画布中的位置(通用类)
|
||||
/// </summary>
|
||||
public class PositionOfUI
|
||||
{ /// <summary>
|
||||
/// 构造一个坐标
|
||||
/// </summary>
|
||||
public PositionOfUI()
|
||||
{
|
||||
|
||||
}
|
||||
[NodeProperty]
|
||||
public partial class PositionOfUI
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造一个坐标
|
||||
/// </summary>
|
||||
public PositionOfUI(double x, double y)
|
||||
{
|
||||
X = x; Y = y;
|
||||
_x = x; _y = y;
|
||||
}
|
||||
|
||||
public double X { get; set; } = 0;
|
||||
public double Y { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 指示控件在画布的横向向方向上的位置
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private double _x = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 指示控件在画布的纵向方向上的位置
|
||||
/// </summary>
|
||||
[PropertyInfo]
|
||||
private double _y = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,8 +26,21 @@ namespace Serein.Library.Utils
|
||||
result = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 将字符串的字面量枚举值,转为对应的枚举值
|
||||
/// </summary>
|
||||
/// <typeparam name="TEnum">枚举</typeparam>
|
||||
/// <param name="value">枚举字面量</param>
|
||||
/// <returns>转换后的枚举值</returns>
|
||||
public static TEnum ConvertEnum<TEnum>(this string value) where TEnum : struct, Enum
|
||||
{
|
||||
if (!string.IsNullOrEmpty(value) && Enum.TryParse(value, true, out TEnum tempResult) && Enum.IsDefined(typeof(TEnum), tempResult))
|
||||
{
|
||||
return tempResult;
|
||||
}
|
||||
throw new NotImplementedException($"枚举值转换失败:value({value})to enum ( {typeof(TEnum).FullName})");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从枚举值的 BindValueAttribute 特性中 获取绑定的参数(用于绑定了某些内容的枚举值)
|
||||
|
||||
Reference in New Issue
Block a user