mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-04-07 16:36:35 +08:00
1. 重新设计了Generate项目及相关特性的命名,避免与其他类型混淆。
2. 补充了部分注释。 3. 修改了删除容器节点时,容器内子节点未正确删除的问题。
This commit is contained in:
@@ -14,6 +14,10 @@ namespace Serein.Workbench.Node.View
|
||||
/// </summary>
|
||||
public partial class ActionNodeControl : NodeControlBase, INodeJunction
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数,传入ViewModel
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public ActionNodeControl(ActionNodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -10,6 +10,9 @@ namespace Serein.Workbench.Node.View
|
||||
/// </summary>
|
||||
public partial class ConditionNodeControl : NodeControlBase, INodeJunction
|
||||
{
|
||||
/// <summary>
|
||||
/// 条件节点控件(用于条件控件)
|
||||
/// </summary>
|
||||
public ConditionNodeControl() : base()
|
||||
{
|
||||
|
||||
@@ -22,6 +25,11 @@ namespace Serein.Workbench.Node.View
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 条件节点控件(用于条件控件)
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
|
||||
public ConditionNodeControl(ConditionNodeControlViewModel viewModel):base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -18,7 +18,9 @@ namespace Serein.Workbench.Node.View
|
||||
{
|
||||
#region 连接点相关代码
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 连接点类型
|
||||
/// </summary>
|
||||
|
||||
public class ConnectionModelBase
|
||||
{
|
||||
@@ -48,8 +50,14 @@ namespace Serein.Workbench.Node.View
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 连接点类型
|
||||
/// </summary>
|
||||
public interface IJunctionNode
|
||||
{
|
||||
/// <summary>
|
||||
/// 连接点所属Guid
|
||||
/// </summary>
|
||||
string BoundNodeGuid { get; }
|
||||
}
|
||||
|
||||
@@ -73,26 +81,26 @@ namespace Serein.Workbench.Node.View
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +112,7 @@ namespace Serein.Workbench.Node.View
|
||||
/// <summary>
|
||||
/// 连接控件,表示控件的连接关系
|
||||
/// </summary>
|
||||
public class ConnectionControl
|
||||
internal class ConnectionControl
|
||||
{
|
||||
/// <summary>
|
||||
/// 所在的画布
|
||||
@@ -155,7 +163,9 @@ namespace Serein.Workbench.Node.View
|
||||
/// </summary>
|
||||
/// <param name="Canvas"></param>
|
||||
/// <param name="invokeType"></param>
|
||||
public ConnectionControl(Canvas Canvas,
|
||||
/// <param name="Start"></param>
|
||||
/// <param name="End"></param>
|
||||
internal ConnectionControl(Canvas Canvas,
|
||||
ConnectionInvokeType invokeType,
|
||||
JunctionControlBase Start,
|
||||
JunctionControlBase End)
|
||||
@@ -169,10 +179,15 @@ namespace Serein.Workbench.Node.View
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关于入参
|
||||
/// 关于入参
|
||||
/// </summary>
|
||||
/// <param name="LineType"></param>
|
||||
/// <param name="Canvas"></param>
|
||||
/// <param name="Type"></param>
|
||||
/// <param name="argIndex"></param>
|
||||
/// <param name="argSourceType"></param>
|
||||
/// <param name="Start"></param>
|
||||
/// <param name="End"></param>
|
||||
/// <param name="nodeJunction"></param>
|
||||
public ConnectionControl(LineType LineType,
|
||||
Canvas Canvas,
|
||||
int argIndex,
|
||||
|
||||
@@ -10,6 +10,9 @@ namespace Serein.Workbench.Node.View
|
||||
/// </summary>
|
||||
public partial class ExpOpNodeControl : NodeControlBase, INodeJunction
|
||||
{
|
||||
/// <summary>
|
||||
/// 表达式操作节点控件
|
||||
/// </summary>
|
||||
public ExpOpNodeControl() : base()
|
||||
{
|
||||
// 窗体初始化需要
|
||||
@@ -20,6 +23,11 @@ namespace Serein.Workbench.Node.View
|
||||
DataContext = ViewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表达式操作节点控件构造函数,使用指定的 ViewModel 初始化
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public ExpOpNodeControl(ExpOpNodeControlViewModel viewModel) :base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -9,6 +9,10 @@ namespace Serein.Workbench.Node.View
|
||||
/// </summary>
|
||||
public partial class FlipflopNodeControl : NodeControlBase, INodeJunction
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public FlipflopNodeControl(FlipflopNodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -14,6 +14,10 @@ namespace Serein.Workbench.Node.View
|
||||
public partial class FlowCallNodeControl : NodeControlBase, INodeJunction
|
||||
{
|
||||
private new FlowCallNodeControlViewModel ViewModel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程接口节点控件构造函数
|
||||
/// </summary>
|
||||
public FlowCallNodeControl()
|
||||
{
|
||||
var env = App.GetService<IFlowEnvironment>();
|
||||
@@ -23,6 +27,11 @@ namespace Serein.Workbench.Node.View
|
||||
base.ViewModel.NodeModel.DisplayName = "[流程接口]";
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 流程接口节点控件构造函数,传入ViewModel
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public FlowCallNodeControl(FlowCallNodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -13,10 +13,14 @@ namespace Serein.Workbench.Node.View
|
||||
{
|
||||
private readonly GlobalDataNodeControlViewModel viewModel;
|
||||
|
||||
/// <summary>
|
||||
/// 全局数据控件构造函数,使用默认的全局数据节点模型
|
||||
/// </summary>
|
||||
public GlobalDataControl() : base()
|
||||
{
|
||||
// 窗体初始化需要
|
||||
var env = App.GetService<IFlowEnvironment>();
|
||||
viewModel = new GlobalDataNodeControlViewModel(new SingleGlobalDataNode(env));
|
||||
base.ViewModel = new GlobalDataNodeControlViewModel(new SingleGlobalDataNode(env));
|
||||
base.ViewModel.IsEnabledOnView = false;
|
||||
base.ViewModel.NodeModel.DisplayName = "[全局数据]";
|
||||
@@ -24,6 +28,11 @@ namespace Serein.Workbench.Node.View
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 全局数据控件构造函数,使用指定的全局数据节点模型
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public GlobalDataControl(GlobalDataNodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
@@ -54,6 +63,11 @@ namespace Serein.Workbench.Node.View
|
||||
JunctionControlBase[] INodeJunction.ArgDataJunction => throw new NotImplementedException();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 放置节点控件到全局数据面板中
|
||||
/// </summary>
|
||||
/// <param name="nodeControl"></param>
|
||||
/// <returns></returns>
|
||||
public bool PlaceNode(NodeControlBase nodeControl)
|
||||
{
|
||||
if (GlobalDataPanel.Children.Contains(nodeControl))
|
||||
@@ -65,6 +79,11 @@ namespace Serein.Workbench.Node.View
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从全局数据面板中取出节点控件
|
||||
/// </summary>
|
||||
/// <param name="nodeControl"></param>
|
||||
/// <returns></returns>
|
||||
public bool TakeOutNode(NodeControlBase nodeControl)
|
||||
{
|
||||
if (!GlobalDataPanel.Children.Contains(nodeControl))
|
||||
@@ -75,6 +94,9 @@ namespace Serein.Workbench.Node.View
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出所有节点控件(用于删除容器)
|
||||
/// </summary>
|
||||
public void TakeOutAll()
|
||||
{
|
||||
GlobalDataPanel.Children.Clear();
|
||||
|
||||
@@ -58,7 +58,6 @@ namespace Serein.Workbench.Node.View
|
||||
JunctionControlBase INodeJunction.ReturnDataJunction => throw new Exception();
|
||||
|
||||
|
||||
public JunctionControlBase[] ArgDataJunction => [];
|
||||
|
||||
JunctionControlBase[] INodeJunction.ArgDataJunction => [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,9 +26,11 @@ namespace Serein.Workbench.Node.View
|
||||
public partial class ScriptNodeControl : NodeControlBase , INodeJunction
|
||||
{
|
||||
private ScriptNodeControlViewModel viewModel => (ScriptNodeControlViewModel)ViewModel;
|
||||
private DispatcherTimer _debounceTimer; // 用于延迟更新
|
||||
private bool _isUpdating = false; // 防止重复更新
|
||||
|
||||
/// <summary>
|
||||
/// BaseNodesView.xaml 准备节点预览入口
|
||||
/// </summary>
|
||||
public ScriptNodeControl()
|
||||
{
|
||||
|
||||
@@ -39,6 +41,11 @@ namespace Serein.Workbench.Node.View
|
||||
viewModel.NodeModel.DisplayName = "[脚本节点]";
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 流程运行环境创建节点入口
|
||||
/// </summary>
|
||||
/// <param name="viewModel"></param>
|
||||
public ScriptNodeControl(ScriptNodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
|
||||
@@ -30,25 +30,23 @@ namespace Serein.Workbench.Node.View
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public UINodeControl(UINodeControlViewModel viewModel) : base(viewModel)
|
||||
internal UINodeControl(UINodeControlViewModel viewModel) : base(viewModel)
|
||||
{
|
||||
ViewModel = viewModel;
|
||||
DataContext = viewModel;
|
||||
ViewModel.NodeModel.DisplayName = "[流程UI]";
|
||||
InitializeComponent();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public JunctionControlBase ExecuteJunction => this.ExecuteJunctionControl;
|
||||
JunctionControlBase INodeJunction.ExecuteJunction => this.ExecuteJunctionControl;
|
||||
|
||||
public JunctionControlBase NextStepJunction => throw new NotImplementedException();
|
||||
JunctionControlBase INodeJunction.NextStepJunction => throw new NotImplementedException();
|
||||
|
||||
public JunctionControlBase[] ArgDataJunction => throw new NotImplementedException();
|
||||
JunctionControlBase[] INodeJunction.ArgDataJunction => throw new NotImplementedException();
|
||||
|
||||
public JunctionControlBase ReturnDataJunction => throw new NotImplementedException();
|
||||
JunctionControlBase INodeJunction.ReturnDataJunction => throw new NotImplementedException();
|
||||
|
||||
|
||||
private void NodeControlBase_Loaded(object sender, RoutedEventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user