mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-04-11 02:16:34 +08:00
取消使用流程上下文自定义的字典数据;更改流程环境接口的输出方式
This commit is contained in:
@@ -96,7 +96,7 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("结束远程管理异常:" + ex);
|
||||
SereinEnv.WriteLine(InfoType.ERROR, "结束远程管理异常:" + ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,6 +192,10 @@ namespace Serein.NodeFlow.Env
|
||||
/// </summary>
|
||||
public UIContextOperation UIContextOperation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 信息输出等级
|
||||
/// </summary>
|
||||
public InfoClass InfoClass { get ; set ; } = InfoClass.General;
|
||||
|
||||
/// <summary>
|
||||
/// 如果没有全局触发器,且没有循环分支,流程执行完成后自动为 Completion 。
|
||||
@@ -325,29 +329,44 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
#region 环境对外接口
|
||||
|
||||
/// <summary>
|
||||
/// 重定向Console输出
|
||||
/// </summary>
|
||||
public void SetConsoleOut()
|
||||
{
|
||||
var logTextWriter = new LogTextWriter(msg => Output(msg));
|
||||
Console.SetOut(logTextWriter);
|
||||
}
|
||||
///// <summary>
|
||||
///// 重定向Console输出
|
||||
///// </summary>
|
||||
//public void SetConsoleOut()
|
||||
//{
|
||||
// var logTextWriter = new LogTextWriter(msg => Output(msg));
|
||||
// Console.SetOut(logTextWriter);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// 使用JSON处理库输出对象信息
|
||||
/// 输出信息
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
public void WriteLineObjToJson(object obj)
|
||||
/// <param name="message">日志内容</param>
|
||||
/// <param name="type">日志类别</param>
|
||||
/// <param name="class">日志级别</param>
|
||||
public void WriteLine(InfoType type, string message, InfoClass @class = InfoClass.Trivial)
|
||||
{
|
||||
var msg = JsonConvert.SerializeObject(obj);
|
||||
if (OperatingSystem.IsWindows())
|
||||
if (@class >= this.InfoClass)
|
||||
{
|
||||
UIContextOperation?.Invoke(() => OnEnvOut?.Invoke(msg + Environment.NewLine));
|
||||
|
||||
}
|
||||
|
||||
OnEnvOut?.Invoke(type, message);
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// 使用JSON处理库输出对象信息
|
||||
///// </summary>
|
||||
///// <param name="obj"></param>
|
||||
//public void WriteLineObjToJson(object obj)
|
||||
//{
|
||||
// var msg = JsonConvert.SerializeObject(obj);
|
||||
// if (OperatingSystem.IsWindows())
|
||||
// {
|
||||
// UIContextOperation?.Invoke(() => OnEnvOut?.Invoke(msg + Environment.NewLine));
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// 异步运行
|
||||
/// </summary>
|
||||
@@ -391,7 +410,7 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
if (flowStarter is null)
|
||||
{
|
||||
Console.WriteLine("没有启动流程,无法运行单个节点");
|
||||
SereinEnv.WriteLine(InfoType.ERROR, "没有启动流程,无法运行单个节点");
|
||||
return;
|
||||
}
|
||||
if (true || FlowState == RunState.Running || FlipFlopState == RunState.Running)
|
||||
@@ -488,7 +507,7 @@ namespace Serein.NodeFlow.Env
|
||||
var libraryMdss = this.FlowLibraryManagement.GetAllLibraryMds().ToArray();
|
||||
// 获取当前项目的信息(节点相关的数据)
|
||||
var project = await GetProjectInfoAsync();
|
||||
Console.WriteLine("已将当前环境信息发送到远程客户端");
|
||||
SereinEnv.WriteLine(InfoType.INFO, "已将当前环境信息发送到远程客户端");
|
||||
return new FlowEnvInfo
|
||||
{
|
||||
Project = project, // 项目信息
|
||||
@@ -747,7 +766,7 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"{ex}");
|
||||
SereinEnv.WriteLine(InfoType.ERROR, $"无法加载DLL文件:{ex}");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -775,7 +794,7 @@ namespace Serein.NodeFlow.Env
|
||||
NodeModelBase? node = groupedNodes[i];
|
||||
sb.AppendLine($"{i} => {node.Guid}");
|
||||
}
|
||||
Console.WriteLine($"无法卸载[{assemblyName}]程序集,因为这些节点依赖于此程序集:{sb.ToString()}");
|
||||
SereinEnv.WriteLine(InfoType.ERROR, $"无法卸载[{assemblyName}]程序集,因为这些节点依赖于此程序集:{sb.ToString()}");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -964,7 +983,7 @@ namespace Serein.NodeFlow.Env
|
||||
(var type, var state) = CheckConnect(fromNode, toNode, fromNodeJunctionType, toNodeJunctionType);
|
||||
if (!state)
|
||||
{
|
||||
Console.WriteLine("出现非预期的连接行为");
|
||||
SereinEnv.WriteLine(InfoType.WARN, "出现非预期的连接行为");
|
||||
return false; // 出现不符预期的连接行为,忽略此次连接行为
|
||||
}
|
||||
|
||||
@@ -1026,7 +1045,7 @@ namespace Serein.NodeFlow.Env
|
||||
(var type, var state) = CheckConnect(fromNode, toNode, fromNodeJunctionType, toNodeJunctionType);
|
||||
if (!state)
|
||||
{
|
||||
Console.WriteLine("出现非预期的连接行为");
|
||||
SereinEnv.WriteLine(InfoType.WARN, "出现非预期的连接行为");
|
||||
return false; // 出现不符预期的连接行为,忽略此次连接行为
|
||||
}
|
||||
|
||||
@@ -1585,99 +1604,6 @@ namespace Serein.NodeFlow.Env
|
||||
return true;
|
||||
}
|
||||
|
||||
#region 暂时注释
|
||||
/*/// <summary>
|
||||
/// 动态加载程序集
|
||||
/// </summary>
|
||||
/// <param name="assembly">程序集本身</param>
|
||||
/// <returns></returns>
|
||||
private (Dictionary<RegisterSequence, List<Type>>, List<MethodDetails>) LoadAssembly(Assembly assembly)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<Type> types = assembly.GetTypes().ToList(); // 获取程序集中的所有类型
|
||||
|
||||
#region 获取所有需要注册的类型
|
||||
Dictionary<RegisterSequence, List<Type>> autoRegisterTypes = new Dictionary<RegisterSequence, List<Type>>();
|
||||
foreach (Type type in types)
|
||||
{
|
||||
var autoRegisterAttribute = type.GetCustomAttribute<AutoRegisterAttribute>();
|
||||
if (autoRegisterAttribute is not null)
|
||||
{
|
||||
if (!autoRegisterTypes.TryGetValue(autoRegisterAttribute.Class, out var valus))
|
||||
{
|
||||
valus = new List<Type>();
|
||||
autoRegisterTypes.Add(autoRegisterAttribute.Class, valus);
|
||||
}
|
||||
valus.Add(type);
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 获取 DynamicFlow 特性的流程控制器,如果没有返回空
|
||||
List<(Type, string)> scanTypes = types.Select(t =>
|
||||
{
|
||||
if (t.GetCustomAttribute<DynamicFlowAttribute>() is DynamicFlowAttribute dynamicFlowAttribute
|
||||
&& dynamicFlowAttribute.Scan == true)
|
||||
{
|
||||
return (t, dynamicFlowAttribute.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (null, null);
|
||||
}
|
||||
}).Where(it => it.t is not null).ToList();
|
||||
if (scanTypes.Count == 0)
|
||||
{
|
||||
return ([], []);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 创建对应的方法元数据
|
||||
List<MethodDetails> methodDetails = new List<MethodDetails>();
|
||||
// 遍历扫描的类型
|
||||
foreach ((var type, var flowName) in scanTypes)
|
||||
{
|
||||
// 加载DLL,创建 MethodDetails、实例作用对象、委托方法
|
||||
var assemblyName = type.Assembly.GetName().Name;
|
||||
if (string.IsNullOrEmpty(assemblyName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var methods = NodeMethodDetailsHelper.GetMethodsToProcess(type);
|
||||
foreach (var method in methods)
|
||||
{
|
||||
(var md, var del) = NodeMethodDetailsHelper.CreateMethodDetails(type, method, assemblyName);
|
||||
if (md is null || del is null)
|
||||
{
|
||||
Console.WriteLine($"无法加载方法信息:{assemblyName}-{type}-{method}");
|
||||
continue;
|
||||
}
|
||||
md.MethodAnotherName = flowName + md.MethodAnotherName;
|
||||
if (MethodDelegates.TryAdd(md.MethodName, del))
|
||||
{
|
||||
methodDetails.Add(md);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"节点委托创建失败:{md.MethodName}");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
return (autoRegisterTypes, methodDetails);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
return ([], []);
|
||||
}
|
||||
}*/
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 创建节点
|
||||
@@ -1801,7 +1727,7 @@ namespace Serein.NodeFlow.Env
|
||||
FromExistInTo = ToOnF.Length > 0;
|
||||
if (ToExistOnFrom && FromExistInTo)
|
||||
{
|
||||
Console.WriteLine("起始节点已与目标节点存在连接");
|
||||
SereinEnv.WriteLine(InfoType.WARN, "起始节点已与目标节点存在连接");
|
||||
isPass = false;
|
||||
}
|
||||
else
|
||||
@@ -1809,13 +1735,13 @@ namespace Serein.NodeFlow.Env
|
||||
// 检查是否可能存在异常
|
||||
if (!ToExistOnFrom && FromExistInTo)
|
||||
{
|
||||
Console.WriteLine("目标节点不是起始节点的子节点,起始节点却是目标节点的父节点");
|
||||
SereinEnv.WriteLine(InfoType.WARN, "目标节点不是起始节点的子节点,起始节点却是目标节点的父节点");
|
||||
isPass = false;
|
||||
}
|
||||
else if (ToExistOnFrom && !FromExistInTo)
|
||||
{
|
||||
//
|
||||
Console.WriteLine(" 起始节点不是目标节点的父节点,目标节点却是起始节点的子节点");
|
||||
SereinEnv.WriteLine(InfoType.WARN, " 起始节点不是目标节点的父节点,目标节点却是起始节点的子节点");
|
||||
isPass = false;
|
||||
}
|
||||
else
|
||||
@@ -1871,16 +1797,6 @@ namespace Serein.NodeFlow.Env
|
||||
if (!string.IsNullOrEmpty(toNodeArgSourceGuid))
|
||||
{
|
||||
await RemoteConnectAsync(fromNode, toNode, argIndex);
|
||||
//Console.WriteLine("目标入参已确定参数来源,不可连接");
|
||||
//return false;
|
||||
//if (toNodeArgSourceGuid.Equals(fromNode.Guid))
|
||||
//{
|
||||
// //await RemoteConnectAsync(fromNode, toNode, argIndex); // 相同起始节点不同控制点已经连接,将其移除
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
|
||||
//}
|
||||
}
|
||||
toNode.MethodDetails.ParameterDetailss[argIndex].ArgDataSourceNodeGuid = fromNode.Guid;
|
||||
toNode.MethodDetails.ParameterDetailss[argIndex].ArgDataSourceType = connectionArgSourceType;
|
||||
@@ -1914,18 +1830,18 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 输出内容
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
private void Output(string msg)
|
||||
{
|
||||
if (OperatingSystem.IsWindows())
|
||||
{
|
||||
UIContextOperation?.Invoke(() => OnEnvOut?.Invoke(msg));
|
||||
}
|
||||
///// <summary>
|
||||
///// 输出内容
|
||||
///// </summary>
|
||||
///// <param name="msg"></param>
|
||||
//private void Output(string msg)
|
||||
//{
|
||||
// if (OperatingSystem.IsWindows())
|
||||
// {
|
||||
// UIContextOperation?.Invoke(() => OnEnvOut?.Invoke(msg));
|
||||
// }
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ namespace Serein.NodeFlow.Env
|
||||
flowEnvironment = new FlowEnvironment(uiContextOperation);
|
||||
// 默认使用本地环境
|
||||
currentFlowEnvironment = flowEnvironment;
|
||||
|
||||
SereinEnv.SetEnv(currentFlowEnvironment);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -65,14 +67,18 @@ namespace Serein.NodeFlow.Env
|
||||
public UIContextOperation UIContextOperation => currentFlowEnvironment.UIContextOperation;
|
||||
|
||||
public ISereinIOC IOC => (ISereinIOC)currentFlowEnvironment;
|
||||
|
||||
|
||||
|
||||
public string EnvName => currentFlowEnvironment.EnvName;
|
||||
|
||||
public bool IsGlobalInterrupt => currentFlowEnvironment.IsGlobalInterrupt;
|
||||
|
||||
public bool IsControlRemoteEnv => currentFlowEnvironment.IsControlRemoteEnv;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 信息输出等级
|
||||
/// </summary>
|
||||
public InfoClass InfoClass { get => currentFlowEnvironment.InfoClass; set => currentFlowEnvironment.InfoClass = value; }
|
||||
public RunState FlowState { get => currentFlowEnvironment.FlowState; set => currentFlowEnvironment.FlowState = value; }
|
||||
public RunState FlipFlopState { get => currentFlowEnvironment.FlipFlopState; set => currentFlowEnvironment.FlipFlopState = value; }
|
||||
|
||||
@@ -335,9 +341,20 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
|
||||
|
||||
public void SetConsoleOut()
|
||||
//public void SetConsoleOut()
|
||||
//{
|
||||
// currentFlowEnvironment.SetConsoleOut();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// 输出信息
|
||||
/// </summary>
|
||||
/// <param name="message">日志内容</param>
|
||||
/// <param name="type">日志类别</param>
|
||||
/// <param name="class">日志级别</param>
|
||||
public void WriteLine(InfoType type, string message, InfoClass @class = InfoClass.Trivial)
|
||||
{
|
||||
currentFlowEnvironment.SetConsoleOut();
|
||||
currentFlowEnvironment.WriteLine(type, message, @class);
|
||||
}
|
||||
|
||||
public void SetMonitorObjState(string key, bool isMonitor)
|
||||
@@ -400,10 +417,10 @@ namespace Serein.NodeFlow.Env
|
||||
return currentFlowEnvironment.TryGetMethodDetailsInfo(libraryName, methodName, out mdInfo);
|
||||
}
|
||||
|
||||
public void WriteLineObjToJson(object obj)
|
||||
{
|
||||
currentFlowEnvironment.WriteLineObjToJson(obj);
|
||||
}
|
||||
//public void WriteLineObjToJson(object obj)
|
||||
//{
|
||||
// currentFlowEnvironment.WriteLineObjToJson(obj);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// (用于远程)通知节点属性变更
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
|
||||
var msgId = MsgIdHelper.GenerateId().ToString();
|
||||
Console.WriteLine($"[{msgId}] => {theme}");
|
||||
SereinEnv.WriteLine(InfoType.INFO, $"[{msgId}] => {theme}");
|
||||
await SendCommandAsync(msgId, theme, data); // 客户端发送消息
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
if (string.IsNullOrEmpty(token))
|
||||
{
|
||||
Console.WriteLine("当前没有设置token,但使用了token验证的服务端");
|
||||
SereinEnv.WriteLine(InfoType.WARN, "当前没有设置token,但使用了token验证的服务端");
|
||||
|
||||
}
|
||||
this.environment = environment;
|
||||
@@ -96,7 +96,7 @@ namespace Serein.NodeFlow.Env
|
||||
catch (Exception ex)
|
||||
{
|
||||
FlowEnvRemoteWebSocket.MsgHandleHelper.RemoveModule(this);
|
||||
Console.WriteLine("打开远程管理异常:" + ex);
|
||||
SereinEnv.WriteLine(InfoType.ERROR, "打开远程管理异常:" + ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("结束远程管理异常:" + ex);
|
||||
SereinEnv.WriteLine(InfoType.ERROR, "结束远程管理异常:" + ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ namespace Serein.NodeFlow.Env
|
||||
// [AutoSocketHandle]
|
||||
public void ExitRemoteEnv()
|
||||
{
|
||||
Console.WriteLine("暂未实现远程退出远程环境");
|
||||
SereinEnv.WriteLine(InfoType.ERROR, "暂未实现远程退出远程环境");
|
||||
IsLcR = false;
|
||||
}
|
||||
|
||||
@@ -385,10 +385,9 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
return new { state = false }; // 非预期的控制点连接
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"起始节点:{fromNodeGuid}");
|
||||
Console.WriteLine($"目标节点:{toNodeGuid}");
|
||||
Console.WriteLine($"链接请求:{(tmpFromJunctionType, tmpToJunctionType)}");
|
||||
SereinEnv.WriteLine(InfoType.INFO, $"起始节点:{fromNodeGuid}");
|
||||
SereinEnv.WriteLine(InfoType.INFO, $"目标节点:{toNodeGuid}");
|
||||
SereinEnv.WriteLine(InfoType.INFO, $"链接请求:{(tmpFromJunctionType, tmpToJunctionType)}");
|
||||
|
||||
var result = await environment.ConnectInvokeNodeAsync(fromNodeGuid, toNodeGuid, tmpFromJunctionType, tmpToJunctionType, tmpConnectionType);
|
||||
return new { state = result };
|
||||
@@ -477,10 +476,7 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
return new { state = false }; // 非预期的控制点连接
|
||||
}
|
||||
//Console.WriteLine();
|
||||
//Console.WriteLine($"起始节点:{fromNodeGuid}");
|
||||
//Console.WriteLine($"目标节点:{toNodeGuid}");
|
||||
//Console.WriteLine($"链接请求:{(tmpFromJunctionType, tmpToJunctionType)}");
|
||||
|
||||
// 调用环境接口进行连接
|
||||
var result = await environment.ConnectArgSourceNodeAsync(fromNodeGuid, toNodeGuid, tmpFromJunctionType, tmpToJunctionType, tmpArgSourceType, argIndex);
|
||||
return new { state = result };
|
||||
|
||||
@@ -66,6 +66,10 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public bool IsControlRemoteEnv => true;
|
||||
|
||||
/// <summary>
|
||||
/// 信息输出等级
|
||||
/// </summary>
|
||||
public InfoClass InfoClass { get; set; }
|
||||
|
||||
public RunState FlowState { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
||||
public RunState FlipFlopState { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
||||
@@ -82,28 +86,40 @@ namespace Serein.NodeFlow.Env
|
||||
/// </summary>
|
||||
private bool IsLoadingNode = false;
|
||||
|
||||
public void SetConsoleOut()
|
||||
//public void SetConsoleOut()
|
||||
//{
|
||||
// var logTextWriter = new LogTextWriter(msg =>
|
||||
// {
|
||||
// OnEnvOut?.Invoke(msg);
|
||||
// });
|
||||
// Console.SetOut(logTextWriter);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// 输出信息
|
||||
/// </summary>
|
||||
/// <param name="message">日志内容</param>
|
||||
/// <param name="type">日志类别</param>
|
||||
/// <param name="class">日志级别</param>
|
||||
public void WriteLine(InfoType type, string message, InfoClass @class = InfoClass.Trivial)
|
||||
{
|
||||
var logTextWriter = new LogTextWriter(msg =>
|
||||
{
|
||||
OnEnvOut?.Invoke(msg);
|
||||
});
|
||||
Console.SetOut(logTextWriter);
|
||||
OnEnvOut?.Invoke(type, message);
|
||||
}
|
||||
|
||||
public void WriteLineObjToJson(object obj)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:WriteLineObjToJson");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:WriteLineObjToJson");
|
||||
}
|
||||
|
||||
public async Task StartRemoteServerAsync(int port = 7525)
|
||||
{
|
||||
await Console.Out.WriteLineAsync("远程环境尚未实现的接口:StartRemoteServerAsync");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:StartRemoteServerAsync");
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
public void StopRemoteServer()
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:StopRemoteServer");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:StopRemoteServer");
|
||||
}
|
||||
|
||||
public async Task<SereinProjectData> GetProjectInfoAsync()
|
||||
@@ -119,7 +135,7 @@ namespace Serein.NodeFlow.Env
|
||||
/// <param name="filePath"></param>
|
||||
public void LoadProject(FlowEnvInfo flowEnvInfo, string filePath)
|
||||
{
|
||||
Console.WriteLine("加载远程环境");
|
||||
this.WriteLine(InfoType.INFO, "加载远程环境");
|
||||
IsLoadingProject = true;
|
||||
#region DLL功能区创建
|
||||
var libmds = flowEnvInfo.LibraryMds;
|
||||
@@ -339,7 +355,7 @@ namespace Serein.NodeFlow.Env
|
||||
FromExistInTo = ToOnF.Length > 0;
|
||||
if (ToExistOnFrom && FromExistInTo)
|
||||
{
|
||||
Console.WriteLine("起始节点已与目标节点存在连接");
|
||||
this.WriteLine(InfoType.ERROR, "起始节点已与目标节点存在连接");
|
||||
|
||||
//return;
|
||||
}
|
||||
@@ -348,13 +364,13 @@ namespace Serein.NodeFlow.Env
|
||||
// 检查是否可能存在异常
|
||||
if (!ToExistOnFrom && FromExistInTo)
|
||||
{
|
||||
Console.WriteLine("目标节点不是起始节点的子节点,起始节点却是目标节点的父节点");
|
||||
this.WriteLine(InfoType.ERROR, "目标节点不是起始节点的子节点,起始节点却是目标节点的父节点");
|
||||
return;
|
||||
}
|
||||
else if (ToExistOnFrom && !FromExistInTo)
|
||||
{
|
||||
//
|
||||
Console.WriteLine(" 起始节点不是目标节点的父节点,目标节点却是起始节点的子节点");
|
||||
this.WriteLine(InfoType.ERROR, " 起始节点不是目标节点的父节点,目标节点却是起始节点的子节点");
|
||||
return;
|
||||
}
|
||||
else // if (!ToExistOnFrom && !FromExistInTo)
|
||||
@@ -394,25 +410,25 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public void ExitRemoteEnv()
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:ExitRemoteEnv");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:ExitRemoteEnv");
|
||||
}
|
||||
|
||||
public void LoadLibrary(string dllPath)
|
||||
{
|
||||
// 将dll文件发送到远程环境,由远程环境进行加载
|
||||
Console.WriteLine("远程环境尚未实现的接口:LoadDll");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:LoadDll");
|
||||
}
|
||||
|
||||
public bool UnloadLibrary(string assemblyName)
|
||||
{
|
||||
// 尝试移除远程环境中的加载了的依赖
|
||||
Console.WriteLine("远程环境尚未实现的接口:RemoteDll");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:RemoteDll");
|
||||
return false;
|
||||
}
|
||||
|
||||
public void ClearAll()
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:ClearAll");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:ClearAll");
|
||||
}
|
||||
|
||||
public async Task StartAsync()
|
||||
@@ -467,7 +483,7 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public async Task<object> InvokeNodeAsync(IDynamicContext context, string nodeGuid)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现接口 InvokeNodeAsync");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现接口 InvokeNodeAsync");
|
||||
_ = msgClient.SendAsync(EnvMsgTheme.SetStartNode, new
|
||||
{
|
||||
nodeGuid
|
||||
@@ -717,7 +733,7 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("删除失败");
|
||||
this.WriteLine(InfoType.ERROR, "删除失败");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -763,7 +779,7 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public void SetMonitorObjState(string key, bool isMonitor)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:SetMonitorObjState");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:SetMonitorObjState");
|
||||
}
|
||||
|
||||
public async Task<(bool, string[])> CheckObjMonitorStateAsync(string key)
|
||||
@@ -788,20 +804,20 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public async Task<ChannelFlowInterrupt.CancelType> GetOrCreateGlobalInterruptAsync()
|
||||
{
|
||||
await Console.Out.WriteLineAsync("远程环境尚未实现的接口:GetOrCreateGlobalInterruptAsync");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:GetOrCreateGlobalInterruptAsync");
|
||||
return ChannelFlowInterrupt.CancelType.Error;
|
||||
}
|
||||
|
||||
public bool TryGetMethodDetailsInfo(string libraryName, string methodName, out MethodDetailsInfo mdInfo)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:TryGetMethodDetailsInfo");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:TryGetMethodDetailsInfo");
|
||||
mdInfo = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool TryGetDelegateDetails(string libraryName, string methodName, out DelegateDetails del)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:TryGetDelegateDetails");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:TryGetDelegateDetails");
|
||||
del = null;
|
||||
return false;
|
||||
}
|
||||
@@ -810,13 +826,13 @@ namespace Serein.NodeFlow.Env
|
||||
|
||||
public void MonitorObjectNotification(string nodeGuid, object monitorData, MonitorObjectEventArgs.ObjSourceType sourceType)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:MonitorObjectNotification");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:MonitorObjectNotification");
|
||||
|
||||
}
|
||||
|
||||
public void TriggerInterrupt(string nodeGuid, string expression, InterruptTriggerEventArgs.InterruptTriggerType type)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:TriggerInterrupt");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:TriggerInterrupt");
|
||||
}
|
||||
|
||||
public void NodeLocated(string nodeGuid)
|
||||
@@ -832,7 +848,7 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
return;
|
||||
}
|
||||
Console.WriteLine($"通知远程环境修改节点数据:{nodeGuid},name:{path},value:{value}");
|
||||
this.WriteLine(InfoType.INFO, $"通知远程环境修改节点数据:{nodeGuid},name:{path},value:{value}");
|
||||
|
||||
_ = msgClient.SendAsync(EnvMsgTheme.ValueNotification, new
|
||||
{
|
||||
@@ -852,7 +868,7 @@ namespace Serein.NodeFlow.Env
|
||||
/// <returns></returns>
|
||||
public async Task<bool> ChangeParameter(string nodeGuid, bool isAdd, int paramIndex)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:ChangeParameter");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:ChangeParameter");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -865,7 +881,7 @@ namespace Serein.NodeFlow.Env
|
||||
/// <returns></returns>
|
||||
public bool LoadNativeLibraryOfRuning(string file)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:LoadNativeLibraryOfRuning");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:LoadNativeLibraryOfRuning");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -876,7 +892,7 @@ namespace Serein.NodeFlow.Env
|
||||
/// <param name="isRecurrence">是否递归加载</param>
|
||||
public void LoadAllNativeLibraryOfRuning(string path, bool isRecurrence = true)
|
||||
{
|
||||
Console.WriteLine("远程环境尚未实现的接口:LoadAllNativeLibraryOfRuning");
|
||||
this.WriteLine(InfoType.INFO, "远程环境尚未实现的接口:LoadAllNativeLibraryOfRuning");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user