准备添加流程接口调用

This commit is contained in:
fengjiayi
2025-07-04 21:31:07 +08:00
parent 340ff7770f
commit 162dc7bcf8
23 changed files with 1401 additions and 1698 deletions

View File

@@ -159,11 +159,11 @@ namespace Serein.Workbench.Node.View
private void AddParamAsync()
{
this.MyNode.Env.ChangeParameter(MyNode.Guid, true, ArgIndex);
this.MyNode.Env.FlowEdit.ChangeParameter(MyNode.Guid, true, ArgIndex);
}
private void RemoveParamAsync()
{
this.MyNode.Env.ChangeParameter(MyNode.Guid, false, ArgIndex);
this.MyNode.Env.FlowEdit.ChangeParameter(MyNode.Guid, false, ArgIndex);
}
}

View File

@@ -243,11 +243,11 @@ namespace Serein.Workbench.Node.View
var jctEnd = End.JunctionType.ToConnectyionType();
if (jct == JunctionOfConnectionType.Invoke)
{
env.RemoveInvokeConnect(canvasGuid, Start.MyNode.Guid, End.MyNode.Guid, InvokeType);
env.FlowEdit.RemoveInvokeConnect(canvasGuid, Start.MyNode.Guid, End.MyNode.Guid, InvokeType);
}
else if (jct == JunctionOfConnectionType.Arg)
{
env.RemoveArgSourceConnect(canvasGuid,Start.MyNode.Guid, End.MyNode.Guid, ArgIndex) ;
env.FlowEdit.RemoveArgSourceConnect(canvasGuid,Start.MyNode.Guid, End.MyNode.Guid, ArgIndex) ;
}
}
@@ -259,7 +259,7 @@ namespace Serein.Workbench.Node.View
var env = Start.MyNode.Env;
if (Start.JunctionType.ToConnectyionType() == JunctionOfConnectionType.Invoke)
{
env.SetConnectPriorityInvoke(Start.MyNode.Guid, End.MyNode.Guid, InvokeType);
env.FlowEdit.SetConnectPriorityInvoke(Start.MyNode.Guid, End.MyNode.Guid, InvokeType);
}
}

View File

@@ -174,15 +174,15 @@ namespace Serein.Workbench.Services
/// </summary>
private void InitNodeType()
{
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.UI, typeof(UINodeControl), typeof(UINodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.Action, typeof(ActionNodeControl), typeof(ActionNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.Flipflop, typeof(FlipflopNodeControl), typeof(FlipflopNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.ExpOp, typeof(ExpOpNodeControl), typeof(ExpOpNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.ExpCondition, typeof(ConditionNodeControl), typeof(ConditionNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.GlobalData, typeof(GlobalDataControl), typeof(GlobalDataNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.Script, typeof(ScriptNodeControl), typeof(ScriptNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.NetScript, typeof(NetScriptNodeControl), typeof(NetScriptNodeControlViewModel));
flowEnvironment.NodeMVVMManagement.RegisterUI(NodeControlType.FlowCall, typeof(FlowCallNodeControl), typeof(FlowCallNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.UI, typeof(UINodeControl), typeof(UINodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.Action, typeof(ActionNodeControl), typeof(ActionNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.Flipflop, typeof(FlipflopNodeControl), typeof(FlipflopNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.ExpOp, typeof(ExpOpNodeControl), typeof(ExpOpNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.ExpCondition, typeof(ConditionNodeControl), typeof(ConditionNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.GlobalData, typeof(GlobalDataControl), typeof(GlobalDataNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.Script, typeof(ScriptNodeControl), typeof(ScriptNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.NetScript, typeof(NetScriptNodeControl), typeof(NetScriptNodeControlViewModel));
flowEnvironment.FlowEdit.NodeMVVMManagement.RegisterUI(NodeControlType.FlowCall, typeof(FlowCallNodeControl), typeof(FlowCallNodeControlViewModel));
}
/// <summary>
@@ -319,7 +319,7 @@ namespace Serein.Workbench.Services
return;
}
if (!flowEnvironment.NodeMVVMManagement.TryGetType(nodeModel.ControlType, out var nodeMVVM))
if (!flowEnvironment.FlowEdit.NodeMVVMManagement.TryGetType(nodeModel.ControlType, out var nodeMVVM))
{
SereinEnv.WriteLine(InfoType.INFO, $"无法创建{nodeModel.ControlType}节点,节点类型尚未注册。");
return;
@@ -635,7 +635,7 @@ namespace Serein.Workbench.Services
node.Position = new PositionOfUI(positionOfUI.X + offsetX, positionOfUI.Y + offsetY);
}
_ = flowEnvironment.LoadNodeInfosAsync(nodes);
_ = flowEnvironment.FlowEdit.LoadNodeInfosAsync(nodes);
}
catch (Exception ex)
{
@@ -656,7 +656,7 @@ namespace Serein.Workbench.Services
{
int width = 1200;
int height = 780;
flowEnvironment.CreateCanvas("", width, height);
flowEnvironment.FlowEdit.CreateCanvas("", width, height);
}
/// <summary>
@@ -669,7 +669,7 @@ namespace Serein.Workbench.Services
return;
}
var model = ((FlowCanvasViewModel)CurrentSelectCanvas.DataContext).Model;
flowEnvironment.RemoveCanvas(model.Guid);
flowEnvironment.FlowEdit.RemoveCanvas(model.Guid);
}
/// <summary>
@@ -688,7 +688,7 @@ namespace Serein.Workbench.Services
{
return;
}
flowEnvironment.CreateNode(canvasGuid, nodeType, position, methodDetailsInfo);
flowEnvironment.FlowEdit.CreateNode(canvasGuid, nodeType, position, methodDetailsInfo);
}
/// <summary>
@@ -707,7 +707,7 @@ namespace Serein.Workbench.Services
return;
}
flowEnvironment.RemoveNode(model.CanvasDetails.Guid, model.Guid);
flowEnvironment.FlowEdit.RemoveNode(model.CanvasDetails.Guid, model.Guid);
}
#endregion

View File

@@ -142,7 +142,7 @@ namespace Serein.Workbench.Themes
{
try
{
await flowEnvironment.StartFlowFromSelectNodeAsync(tmpNodeTreeModel.RootNode.Guid);
await flowEnvironment.FlowControl.StartFlowFromSelectNodeAsync(tmpNodeTreeModel.RootNode.Guid);
}
catch (Exception ex)
{
@@ -150,7 +150,7 @@ namespace Serein.Workbench.Themes
return;
}
}));
contextMenu.Items.Add(WpfFuncTool.CreateMenuItem("定位", (s, e) => flowEnvironment.NodeLocate(tmpNodeTreeModel.RootNode.Guid)));
contextMenu.Items.Add(WpfFuncTool.CreateMenuItem("定位", (s, e) => flowEnvironment.FlowEdit.NodeLocate(tmpNodeTreeModel.RootNode.Guid)));
treeViewItem.ContextMenu = contextMenu;
treeViewItem.Margin = new Thickness(-20, 0, 0, 0);

View File

@@ -114,7 +114,7 @@ namespace Serein.Workbench.ViewModels
if(canvass.Length > 0)
{
string[] guids = [..canvass.Select(c => c.Guid)];
flowEnvironment.StartFlowAsync(guids);
flowEnvironment.FlowControl.StartFlowAsync(guids);
}
}
@@ -122,7 +122,7 @@ namespace Serein.Workbench.ViewModels
{
var canvas = flowNodeService.CurrentSelectCanvas;
if (canvas is null) return;
flowEnvironment.StartFlowAsync([canvas.Guid]);
flowEnvironment.FlowControl.StartFlowAsync([canvas.Guid]);
}
private void StopCurrentCanvasFlow() { }
private void OpenDynamicCompiler() { }

View File

@@ -370,7 +370,7 @@ namespace Serein.Workbench.Views
if (TryPlaceNodeInRegion(nodeControl, position, out var regionControl)) // 判断添加到区域容器
{
// 通知运行环境调用加载节点子项的方法
flowEnvironment.PlaceNodeToContainer(Guid,
flowEnvironment.FlowEdit.PlaceNodeToContainer(Guid,
nodeControl.ViewModel.NodeModel.Guid, // 待移动的节点
regionControl.ViewModel.NodeModel.Guid); // 目标的容器节点
return;
@@ -557,14 +557,14 @@ namespace Serein.Workbench.Views
if (keyEventService.GetKeyState(Key.LeftCtrl) || keyEventService.GetKeyState(Key.RightCtrl))
{
// Ctrl + F5 调试当前流程
_ = flowEnvironment.StartFlowAsync([flowNodeService.CurrentSelectCanvas.Guid]);
_ = flowEnvironment.FlowControl.StartFlowAsync([flowNodeService.CurrentSelectCanvas.Guid]);
}
else if (selectNodeControls.Count == 1 )
{
// F5 调试当前选定节点
var nodeModel = selectNodeControls[0].ViewModel.NodeModel;
SereinEnv.WriteLine(InfoType.INFO, $"调试运行当前节点:{nodeModel.Guid}");
_ = flowEnvironment.StartFlowFromSelectNodeAsync(nodeModel.Guid);
_ = flowEnvironment.FlowControl.StartFlowFromSelectNodeAsync(nodeModel.Guid);
//_ = nodeModel.StartFlowAsync(new DynamicContext(flowEnvironment), new CancellationToken());
}
@@ -897,7 +897,7 @@ namespace Serein.Workbench.Views
{
var canvasGuid = this.Guid;
flowEnvironment.ConnectInvokeNode(
flowEnvironment.FlowEdit.ConnectInvokeNode(
canvasGuid,
cd.StartJunction.MyNode.Guid,
cd.CurrentJunction.MyNode.Guid,
@@ -921,7 +921,7 @@ namespace Serein.Workbench.Views
}
var canvasGuid = this.Guid;
flowEnvironment.ConnectArgSourceNode(
flowEnvironment.FlowEdit.ConnectArgSourceNode(
canvasGuid,
cd.StartJunction.MyNode.Guid,
cd.CurrentJunction.MyNode.Guid,
@@ -1268,7 +1268,7 @@ namespace Serein.Workbench.Views
if (!string.IsNullOrEmpty(guid))
{
var canvasGuid = this.Guid;
flowEnvironment.RemoveNode(canvasGuid, guid);
flowEnvironment.FlowEdit.RemoveNode(canvasGuid, guid);
}
}
}
@@ -1464,13 +1464,13 @@ namespace Serein.Workbench.Views
{
if (menuItem.Header.ToString() == "启动触发器")
{
flowEnvironment.ActivateFlipflopNode(nodeGuid);
flowEnvironment.FlowControl.ActivateFlipflopNode(nodeGuid);
menuItem.Header = "终结触发器";
}
else
{
flowEnvironment.TerminateFlipflopNode(nodeGuid);
flowEnvironment.FlowControl.TerminateFlipflopNode(nodeGuid);
menuItem.Header = "启动触发器";
}
@@ -1490,10 +1490,10 @@ namespace Serein.Workbench.Views
contextMenu.Items.Add(WpfFuncTool.CreateMenuItem("设为起点", (s, e) => flowEnvironment.SetStartNode(canvasGuid, nodeGuid)));
contextMenu.Items.Add(WpfFuncTool.CreateMenuItem("设为起点", (s, e) => flowEnvironment.FlowEdit.SetStartNode(canvasGuid, nodeGuid)));
contextMenu.Items.Add(WpfFuncTool.CreateMenuItem("删除", async (s, e) =>
{
flowEnvironment.RemoveNode(canvasGuid, nodeGuid);
flowEnvironment.FlowEdit.RemoveNode(canvasGuid, nodeGuid);
}));
#region -

View File

@@ -39,7 +39,7 @@ namespace Serein.Workbench.Views
if (sender is Grid grid && grid.DataContext is IFlowNode nodeModel)
{
NodeInfoViewModel.ViewNodeModel = nodeModel;
App.GetService<IFlowEnvironment>().NodeLocate(nodeModel.Guid);
App.GetService<IFlowEnvironment>().FlowEdit.NodeLocate(nodeModel.Guid);
}
// 定位节点