From b25fd9c83cb1ea4625e21452de15026269dee7b4 Mon Sep 17 00:00:00 2001
From: fengjiayi <12821976+ning_xi@user.noreply.gitee.com>
Date: Sun, 6 Jul 2025 14:34:49 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=B0=86=E8=8A=82=E7=82=B9?=
=?UTF-8?q?=E6=B5=81=E5=AF=BC=E5=87=BA=E4=B8=BAc#=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FlowStartTool/FlowEnv.cs | 2 +-
Library/Api/IDynamicContext.cs | 44 +-
Library/Api/IFlowControl.cs | 24 +-
Library/Api/IFlowEnvironment.cs | 9 +-
Library/Enums/ConnectionInvokeType.cs | 2 +-
Library/Extension/FlowModelExtension.cs | 129 +++-
Library/FlowNode/DynamicContext.cs | 97 ++-
Library/FlowNode/FlowCanvasDetails.cs | 9 +-
Library/FlowNode/FlowResult.cs | 14 +-
.../FlowNode/LightweightFlowEnvironment.cs | 625 ++++++++++++++++++
Library/FlowNode/ParameterDetails.cs | 110 ++-
Library/Utils/UIContextOperation.cs | 3 +-
NodeFlow/Env/FlowControl.cs | 58 +-
NodeFlow/Env/FlowEdit.cs | 151 +++--
NodeFlow/Env/FlowEnvironment.cs | 24 +-
NodeFlow/Env/LocalFlowEnvironment.cs | 125 +++-
NodeFlow/FlowNodeExtension.cs | 29 +
NodeFlow/Model/Node/NodeModelBaseFunc.cs | 2 +-
NodeFlow/Model/Node/SingleConditionNode.cs | 12 +-
NodeFlow/Model/Node/SingleExpOpNode.cs | 12 +-
NodeFlow/Model/Node/SingleFlipflopNode.cs | 2 +-
NodeFlow/Model/Node/SingleFlowCallNode.cs | 12 +-
NodeFlow/Model/Node/SingleGlobalDataNode.cs | 8 +-
NodeFlow/Model/Node/SingleScriptNode.cs | 13 +-
NodeFlow/Model/Node/SingleUINode.cs | 6 +-
.../ChangeNodeConnectionOperation.cs | 161 +++--
.../Operation/ChangeParameterOperation.cs | 13 +-
.../Operation/ContainerPlaceNodeOperation.cs | 13 +-
.../ContainerTakeOutNodeOperation.cs | 7 +-
.../Model/Operation/CreateCanvasOperation.cs | 8 +-
.../Model/Operation/CreateNodeOperation.cs | 8 +-
NodeFlow/Model/Operation/OperationBase.cs | 28 +-
.../Model/Operation/RemoveCanvasOperation.cs | 8 +-
.../Model/Operation/RemoveNodeOperation.cs | 26 +-
.../SetConnectPriorityInvokeOperation.cs | 6 +-
.../Model/Operation/SetStartNodeOperation.cs | 8 +-
NodeFlow/Serein.NodeFlow.csproj | 4 +
NodeFlow/Services/FlowModelService.cs | 49 ++
NodeFlow/Services/FlowOperationService.cs | 8 +-
NodeFlow/Services/FlowWorkManagement.cs | 12 +-
Workbench/App.xaml.cs | 8 +-
Workbench/Serein.WorkBench.csproj | 2 +-
Workbench/ServiceCollectionExtensions.cs | 8 +-
Workbench/Services/FlowEEForwardingService.cs | 77 ++-
Workbench/Services/FlowProjectService.cs | 10 +-
45 files changed, 1625 insertions(+), 361 deletions(-)
create mode 100644 Library/FlowNode/LightweightFlowEnvironment.cs
diff --git a/FlowStartTool/FlowEnv.cs b/FlowStartTool/FlowEnv.cs
index 9668d1d..0cfecba 100644
--- a/FlowStartTool/FlowEnv.cs
+++ b/FlowStartTool/FlowEnv.cs
@@ -20,7 +20,7 @@ namespace Serein.FlowStartTool
SynchronizationContext? uiContext = SynchronizationContext.Current; // 在UI线程上获取UI线程上下文信息
var uIContextOperation = new UIContextOperation(uiContext); // 封装一个调用UI线程的工具类
flowEnvironment.SetUIContextOperation(uIContextOperation);
- flowEnvironment.LoadProject(new FlowEnvInfo { Project = flowProjectData }, fileDataPath); // 加载项目
+ flowEnvironment.LoadProject(fileDataPath); // 加载项目
flowEnvironment.Event.EnvOutput += (infoType, value) =>
{
diff --git a/Library/Api/IDynamicContext.cs b/Library/Api/IDynamicContext.cs
index 22d0344..ca3667f 100644
--- a/Library/Api/IDynamicContext.cs
+++ b/Library/Api/IDynamicContext.cs
@@ -37,22 +37,23 @@ namespace Serein.Library.Api
///
Exception ExceptionOfRuning { get; set; }
- /* ///
- /// 忽略处理该节点流程
- ///
- void IgnoreFlowHandle(NodeModelBase node);
+
///
- /// 获取此次流程处理状态
+ /// 获取节点的运行时参数数据
///
- ///
- ///
- bool GetIgnodeFlowStateUpload(NodeModelBase node);
+ /// 节点
+ /// 第几个参数
+ /// 数据
+ void SetParamsTempData(string nodeModel, int index, object data);
+
///
- /// 恢复流程处理状态
+ /// 获取节点的运行时参数数据
///
- ///
- ///
- void RecoverIgnodeFlowStateUpload(NodeModelBase node);*/
+ /// 节点
+ /// 第几个参数
+ /// 获取到的参数
+ bool TryGetParamsTempData(string nodeModel, int index, out object data);
+
///
@@ -60,33 +61,33 @@ namespace Serein.Library.Api
///
/// 当前节点
/// 运行时上一节点
- void SetPreviousNode(IFlowNode currentNodeModel, IFlowNode PreviousNode);
+ void SetPreviousNode(string currentNodeModel, string PreviousNode);
///
/// 获取当前节点的运行时上一节点,用以流程中获取数据
///
///
///
- IFlowNode GetPreviousNode(IFlowNode currentNodeModel);
+ string GetPreviousNode(string currentNodeModel);
///
/// 获取节点的数据(当前节点需要获取上一节点数据时,需要从 运行时上一节点 的Guid 通过这个方法进行获取
///
///
///
- FlowResult GetFlowData(IFlowNode nodeModel);
+ FlowResult GetFlowData(string nodeModel);
///
/// 上一节点数据透传到下一节点
///
///
- FlowResult TransmissionData(IFlowNode nodeModel);
+ FlowResult TransmissionData(string nodeModel);
///
/// 添加或更新当前节点的数据
///
///
///
- void AddOrUpdate(IFlowNode nodeModel, FlowResult flowData);
+ void AddOrUpdate(string nodeModel, FlowResult flowData);
///
/// 重置流程状态(用于对象池回收)
@@ -97,14 +98,5 @@ namespace Serein.Library.Api
/// 用以提前结束当前上下文流程的运行
///
void Exit();
-
- /*///
- /// 定时循环触发
- ///
- ///
- ///
- ///
- ///
- // Task CreateTimingTask(Action callback, int time = 100, int count = -1);*/
}
}
diff --git a/Library/Api/IFlowControl.cs b/Library/Api/IFlowControl.cs
index 36df475..53e0823 100644
--- a/Library/Api/IFlowControl.cs
+++ b/Library/Api/IFlowControl.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using System.Threading.Tasks;
namespace Serein.Library.Api
{
@@ -62,6 +63,27 @@ namespace Serein.Library.Api
/// 被触发的表达式
/// 中断类型。0主动监视,1表达式
void TriggerInterrupt(string nodeGuid, string expression, InterruptTriggerEventArgs.InterruptTriggerType type);
+
+
+ ///
+ /// 调用流程接口,将返回 FlowResult.Value。如果需要 FlowResult 对象,请使用该方法的泛型版本。
+ ///
+ /// 流程接口节点Guid
+ /// 调用时入参参数
+ ///
+ Task