改写NodeModelBase类,使其继承Serein.Library.Api下的IFlowNode接口,而实现类迁移到NodeModel项目,方便后续节点运行逻辑修改时不用重新编译类库。

This commit is contained in:
fengjiayi
2025-05-31 12:15:01 +08:00
parent cc0b084c84
commit 84390b574f
36 changed files with 562 additions and 121 deletions

View File

@@ -26,18 +26,18 @@ namespace Serein.Workbench.Themes
/// <summary>
/// 保存的节点数据
/// </summary>
private NodeModelBase nodeModel;
private IFlowNode nodeModel;
private IFlowEnvironment flowEnvironment { get; set; }
private class NodeTreeModel
{
public NodeModelBase RootNode { get; set; }
public Dictionary<ConnectionInvokeType, List<NodeModelBase>> ChildNodes { get; set; }
public IFlowNode RootNode { get; set; }
public Dictionary<ConnectionInvokeType, List<IFlowNode>> ChildNodes { get; set; }
}
public void InitAndLoadTree(IFlowEnvironment flowEnvironment, NodeModelBase nodeModel)
public void InitAndLoadTree(IFlowEnvironment flowEnvironment, IFlowNode nodeModel)
{
this.flowEnvironment = flowEnvironment;
this.nodeModel = nodeModel;
@@ -46,11 +46,11 @@ namespace Serein.Workbench.Themes
public TreeViewItem RefreshTree()
{
NodeModelBase rootNodeModel = this.nodeModel;
IFlowNode rootNodeModel = this.nodeModel;
NodeTreeModel nodeTreeModel = new NodeTreeModel
{
RootNode = rootNodeModel,
ChildNodes = new Dictionary<ConnectionInvokeType, List<NodeModelBase>>()
ChildNodes = new Dictionary<ConnectionInvokeType, List<IFlowNode>>()
{
{ConnectionInvokeType.Upstream, []},
{ConnectionInvokeType.IsSucceed, [rootNodeModel]},

View File

@@ -18,14 +18,14 @@ namespace Serein.Workbench.Themes
private Dictionary<string, NodeTreeItemViewControl> globalFlipflopNodes = [];
private Dictionary<string, NodeTreeItemViewControl> unemployedNodes = [];
public void LoadNodeTreeOfStartNode(IFlowEnvironment flowEnvironment, NodeModelBase nodeModel)
public void LoadNodeTreeOfStartNode(IFlowEnvironment flowEnvironment, IFlowNode nodeModel)
{
startNodeGuid = nodeModel.Guid;
StartNodeViewer.InitAndLoadTree(flowEnvironment, nodeModel);
}
#region
public void AddGlobalFlipFlop(IFlowEnvironment flowEnvironment, NodeModelBase nodeModel)
public void AddGlobalFlipFlop(IFlowEnvironment flowEnvironment, IFlowNode nodeModel)
{
if (!globalFlipflopNodes.ContainsKey(nodeModel.Guid))
{
@@ -35,14 +35,14 @@ namespace Serein.Workbench.Themes
GlobalFlipflopNodeListbox.Items.Add(flipflopTreeViewer);
}
}
public void RefreshGlobalFlipFlop(NodeModelBase nodeModel)
public void RefreshGlobalFlipFlop(IFlowNode nodeModel)
{
if (globalFlipflopNodes.TryGetValue(nodeModel.Guid, out var viewer))
{
viewer.RefreshTree();
}
}
public void RemoveGlobalFlipFlop(NodeModelBase nodeModel)
public void RemoveGlobalFlipFlop(IFlowNode nodeModel)
{
if (globalFlipflopNodes.TryGetValue(nodeModel.Guid, out var viewer))
{
@@ -54,7 +54,7 @@ namespace Serein.Workbench.Themes
#region
public void AddUnemployed(IFlowEnvironment flowEnvironment, NodeModelBase nodeModel)
public void AddUnemployed(IFlowEnvironment flowEnvironment, IFlowNode nodeModel)
{
if (!unemployedNodes.ContainsKey(nodeModel.Guid))
{
@@ -64,14 +64,14 @@ namespace Serein.Workbench.Themes
GlobalFlipflopNodeListbox.Items.Add(flipflopTreeViewer);
}
}
public void RefreshUnemployed(NodeModelBase nodeModel)
public void RefreshUnemployed(IFlowNode nodeModel)
{
if (unemployedNodes.TryGetValue(nodeModel.Guid, out var viewer))
{
viewer.RefreshTree();
}
}
public void RemoteUnemployed(NodeModelBase nodeModel)
public void RemoteUnemployed( IFlowNode nodeModel)
{
if (unemployedNodes.TryGetValue(nodeModel.Guid, out var viewer))
{