From b1dc641c847f56b3280a53570b5d83924dd77411 Mon Sep 17 00:00:00 2001
From: fengjiayi <12821976+ning_xi@user.noreply.gitee.com>
Date: Mon, 2 Jun 2025 16:38:37 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E7=B1=BB=EF=BC=8C=E5=B0=86=E6=B5=81=E7=A8=8B=E8=BF=90?=
=?UTF-8?q?=E8=A1=8C=E7=8E=AF=E5=A2=83=E5=92=8CIOC=E8=A7=A3=E8=80=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FlowStartTool/FlowEnv.cs | 4 +-
Library/Api/IFlowEnvironment.cs | 58 +-
Library/Api/ISereinIoc.cs | 20 +
Library/FlowNode/DelegateDetails.cs | 67 +-
Library/Utils/SereinIoc.cs | 84 +-
Library/Utils/UIContextOperation.cs | 4 +-
NodeFlow/Env/FlowEnvironment.cs | 2686 +++--------------
NodeFlow/Env/FlowEnvironmentDecorator.cs | 710 -----
NodeFlow/Env/LocalFlowEnvironment.cs | 2213 ++++++++++++++
NodeFlow/Env/MsgControllerOfClient.cs | 6 +-
NodeFlow/Env/MsgControllerOfServer.cs | 10 +-
NodeFlow/Env/RemoteFlowEnvironment.cs | 7 +-
Workbench/ServiceCollectionExtensions.cs | 32 +-
Workbench/Services/FlowEEForwardingService.cs | 18 +-
14 files changed, 2874 insertions(+), 3045 deletions(-)
delete mode 100644 NodeFlow/Env/FlowEnvironmentDecorator.cs
create mode 100644 NodeFlow/Env/LocalFlowEnvironment.cs
diff --git a/FlowStartTool/FlowEnv.cs b/FlowStartTool/FlowEnv.cs
index 7faf082..c8667e2 100644
--- a/FlowStartTool/FlowEnv.cs
+++ b/FlowStartTool/FlowEnv.cs
@@ -31,11 +31,11 @@ namespace Serein.FlowStartTool
//}
//else
//{
- // env = new FlowEnvironmentDecorator(uIContextOperation);
+ // env = new FlowEnvironment(uIContextOperation);
// this.window = window;
//}
- Env = new FlowEnvironmentDecorator();
+ Env = new FlowEnvironment();
Env.SetUIContextOperation(uIContextOperation);
Env.LoadProject(new FlowEnvInfo { Project = flowProjectData }, fileDataPath); // 加载项目
diff --git a/Library/Api/IFlowEnvironment.cs b/Library/Api/IFlowEnvironment.cs
index d095342..e608640 100644
--- a/Library/Api/IFlowEnvironment.cs
+++ b/Library/Api/IFlowEnvironment.cs
@@ -739,6 +739,7 @@ namespace Serein.Library.Api
}
+
///
/// 运行环境
///
@@ -758,7 +759,6 @@ namespace Serein.Library.Api
///
string EnvName { get; }
-
///
/// 项目文件位置
///
@@ -785,11 +785,6 @@ namespace Serein.Library.Api
///
RunState FlowState { get; set; }
- ///
- /// 全局触发器运行状态
- ///
- //RunState FlipFlopState { get; set; }
-
///
/// 表示当前环境
///
@@ -811,8 +806,9 @@ namespace Serein.Library.Api
///
/// 输出信息
///
- ///
- ///
+ /// 消息
+ /// 输出类型
+ /// 输出级别
void WriteLine(InfoType type, string message, InfoClass @class = InfoClass.Trivial);
///
@@ -840,7 +836,6 @@ namespace Serein.Library.Api
///
Task LoadNodeInfosAsync(List nodeInfos);
-
#endregion
#region 远程相关
@@ -906,6 +901,7 @@ namespace Serein.Library.Api
///
/// 移动了某个节点(远程插件使用)
///
+ /// 所在画布
///
///
///
@@ -914,6 +910,7 @@ namespace Serein.Library.Api
///
/// 设置流程起点节点
///
+ /// 所在画布
/// 尝试设置为起始节点的节点Guid
/// 被设置为起始节点的Guid
Task SetStartNodeAsync(string canvasGuid, string nodeGuid);
@@ -921,6 +918,7 @@ namespace Serein.Library.Api
///
/// 在两个节点之间创建连接关系
///
+ /// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 起始节点控制点
@@ -936,6 +934,7 @@ namespace Serein.Library.Api
///
/// 在两个节点之间创建连接关系
///
+ /// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 起始节点控制点
@@ -950,26 +949,32 @@ namespace Serein.Library.Api
ConnectionArgSourceType argSourceType,
int argIndex);
-
+
///
/// 创建节点
///
+ /// 所在画布
/// 控件类型
/// 节点在画布上的位置(
/// 节点绑定的方法说明
Task CreateNodeAsync(string canvasGuid, NodeControlType nodeType, PositionOfUI position, MethodDetailsInfo methodDetailsInfo = null);
+
///
- /// 将节点放置在容器中
+ /// 将节点放置在容器中
///
+ /// 所在画布
+ /// 需要放置的节点Guid
+ /// 存放节点的容器Guid
///
Task PlaceNodeToContainerAsync(string canvasGuid, string nodeGuid, string containerNodeGuid);
///
- /// 将节点从容器中脱离
+ /// 将节点放置在容器中
///
- ///
+ /// 所在画布
+ /// 需要取出的节点Guid
Task TakeOutNodeToContainerAsync(string canvasGuid, string nodeGuid);
@@ -984,7 +989,8 @@ namespace Serein.Library.Api
///
/// 移除两个节点之间的方法调用关系
- ///
+ ///
+ /// 所在画布
/// 起始节点
/// 目标节点
/// 连接类型
@@ -993,15 +999,16 @@ namespace Serein.Library.Api
///
/// 移除连接节点之间参数传递的关系
///
+ /// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 连接到第几个参数
- /// 参数来源类型
Task RemoveConnectArgSourceAsync(string canvasGuid, string fromNodeGuid, string toNodeGuid, int argIndex);
///
/// 移除节点/区域/基础控件
///
+ /// 所在画布
/// 待移除的节点Guid
Task RemoveNodeAsync(string canvasGuid, string nodeGuid);
@@ -1089,11 +1096,21 @@ namespace Serein.Library.Api
bool TryGetDelegateDetails(string assemblyName, string methodName, out DelegateDetails del);
///
- /// 提供设置UI上下文的能力
+ /// 提供设置UI上下文的能力
+ /// 提供设置UI上下文的能力,在WinForm/WPF项目中,在UI线程外对UI元素的修改将会导致异常
+ /// 需要你提供
///
///
void SetUIContextOperation(UIContextOperation uiContextOperation);
+ ///
+ /// 需要你提供一个由你实现的ISereinIOC接口实现类
+ /// 当你将流程运行环境集成在你的项目时,并希望流程运行时使用你提供的对象,而非自动创建
+ /// 就需要你调用这个方法,用来替换运行环境的IOC容器
+ ///
+ ///
+ void UseExternalIOC(ISereinIOC ioc);
+
///
/// 开始运行流程
///
@@ -1101,7 +1118,6 @@ namespace Serein.Library.Api
///
Task StartFlowAsync(string[] canvasGuids);
-
///
/// 从选定的节点开始运行
///
@@ -1142,14 +1158,6 @@ namespace Serein.Library.Api
/// 中断类型。0主动监视,1表达式
void TriggerInterrupt(string nodeGuid, string expression, InterruptTriggerEventArgs.InterruptTriggerType type);
- ///
- /// 立刻调用某个节点,并获取其返回值
- ///
- /// 调用时的上下文
- /// 节点Guid
- ///
- // Task