流程上下文添加了调用信息记录

This commit is contained in:
fengjiayi
2025-07-28 17:38:51 +08:00
parent ccb8e49abc
commit 74961fa2c4
22 changed files with 480 additions and 144 deletions

View File

@@ -58,7 +58,7 @@ namespace Serein.Workbench.Node.View
var result = nodeContainerControl.PlaceNode(this);
if (!result) // 检查是否放置成功,如果不成功,需要重新添加回来
{
FlowCanvas.Add(this); // 从画布上移除
FlowCanvas.Add(this);
}
}

View File

@@ -57,7 +57,7 @@
<TextBox IsEnabled="{Binding IsEnabledOnView}" MinWidth="50" Margin="2" Text="{Binding NodeModel.KeyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Stretch" VerticalAlignment="Center">
</TextBox>
<Button Content="EXP" Command="{Binding CommandCopyDataExp}" Height="17.2"></Button>
<!--<Button Content="EXP" Command="{Binding CommandCopyDataExp}" Height="17.2"></Button>-->
<!--<Button Content="刷新 " Command="{Binding CommandCopyDataExp}" Height="17.2" Margin="2,0,0,0"></Button>-->
</StackPanel>

View File

@@ -10,6 +10,8 @@ namespace Serein.Workbench.Node.View
/// </summary>
public partial class GlobalDataControl : NodeControlBase, INodeJunction, INodeContainerControl
{
private readonly GlobalDataNodeControlViewModel viewModel;
public GlobalDataControl() : base()
{
// 窗体初始化需要
@@ -26,6 +28,7 @@ namespace Serein.Workbench.Node.View
DataContext = viewModel;
viewModel.NodeModel.DisplayName = "[全局数据]";
InitializeComponent();
this.viewModel = viewModel;
}
@@ -56,6 +59,7 @@ namespace Serein.Workbench.Node.View
{
return false;
}
//viewModel.NodeModel is SingleGlobalDataNode
GlobalDataPanel.Children.Add(nodeControl);
return true;
}

View File

@@ -261,11 +261,15 @@ namespace Serein.Workbench.Services
private void FlowEEForwardingService_OnNodeTakeOut(NodeTakeOutEventArgs eventArgs)
{
string nodeGuid = eventArgs.NodeGuid;
if (!TryGetControl(nodeGuid, out var nodeControl))
string containerNodeGuid = eventArgs.ContainerNodeGuid;
if (!TryGetControl(containerNodeGuid, out var containerNodeControl) || !TryGetControl(nodeGuid, out var nodeControl))
{
return;
}
nodeControl.TakeOutContainer(); // 从容器节点中取出
(double x, double y) = (Canvas.GetLeft(containerNodeControl), Canvas.GetRight(containerNodeControl));
Canvas.SetLeft(nodeControl, x + 400);
Canvas.SetRight(nodeControl, y + 200);
}
private void FlowEEForwardingService_OnNodePlace(NodePlaceEventArgs eventArgs)

View File

@@ -14,7 +14,7 @@
<!--<nodeView:NetScriptNodeControl x:Name="NetScriptNodeControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>-->
<nodeView:FlowCallNodeControl MaxWidth="110" MaxHeight="160" x:Name="FlowCallNodeControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>
<nodeView:ScriptNodeControl MaxWidth="110" MaxHeight="160" x:Name="ScriptNodeControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>
<!--<nodeView:GlobalDataControl MaxWidth="110" MaxHeight="160" x:Name="GlobalDataControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>-->
<nodeView:GlobalDataControl MaxWidth="110" MaxHeight="160" x:Name="GlobalDataControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>
<!--<nodeView:ExpOpNodeControl MaxWidth="110" MaxHeight="160" x:Name="ExpOpNodeControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>-->
<!--<nodeView:ConditionNodeControl MaxWidth="110" MaxHeight="160" x:Name="ConditionNodeControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>-->
<!--<nodeView:ConditionRegionControl x:Name="ConditionRegionControl" Margin="10" AllowDrop="True" PreviewMouseMove="BaseNodeControl_PreviewMouseMove"/>-->

View File

@@ -122,7 +122,7 @@ namespace Serein.Workbench.Views
private readonly TranslateTransform translateTransform;
#endregion
#region
#region
public FlowCanvasView(FlowCanvasDetails model)
{
@@ -173,11 +173,9 @@ namespace Serein.Workbench.Views
}
private void InitEvent()
{
keyEventService.OnKeyDown += KeyEventService_OnKeyDown;
//flowNodeService.OnRemoveConnectionLine += FlowNodeService_OnRemoveConnectionLine;
flowEEForwardingService.NodeLocated += FlowEEForwardingService_OnNodeLocated;
}
@@ -357,8 +355,7 @@ namespace Serein.Workbench.Views
}
#endregion
#region
#region
private IFlowCanvas Api => this;
/// <inheritdoc/>
@@ -568,14 +565,20 @@ namespace Serein.Workbench.Views
if (keyEventService.GetKeyState(Key.LeftCtrl) || keyEventService.GetKeyState(Key.RightCtrl))
{
// Ctrl + F5 调试当前流程
_ = flowEnvironment.FlowControl.StartFlowAsync([flowNodeService.CurrentSelectCanvas.Guid]);
Task.Run(() =>
{
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.FlowControl.StartFlowAsync<FlowResult>(nodeModel.Guid);
Task.Run(() =>
{
flowEnvironment.FlowControl.StartFlowAsync<FlowResult>(nodeModel.Guid);
});
//_ = nodeModel.StartFlowAsync(new DynamicContext(flowEnvironment), new CancellationToken());
}