优化了中断功能,增加了节点变量的查看。

This commit is contained in:
fengjiayi
2024-09-22 14:10:13 +08:00
parent 3537a49784
commit c930c870a6
26 changed files with 1686 additions and 494 deletions

View File

@@ -45,7 +45,7 @@ namespace Serein.Library.Api
/// 环境中流程起始节点发生了改变
/// </summary>
/// <param name="eventArgs"></param>
public delegate void StartNodeChangeHandler(StartNodeChangeEventArgs eventArgs);
public delegate void StartNodeChangeHandler(StartNodeChangeEventArgs eventArgs);
#endregion
#region
@@ -211,19 +211,134 @@ namespace Serein.Library.Api
}
#endregion
/// <summary>
/// 被监视的对象改变事件
/// </summary>
/// <param name="eventArgs"></param>
public delegate void MonitorObjectChangeHandler(MonitorObjectEventArgs eventArgs);
/// <summary>
/// 节点中断状态改变事件(开启了中断/取消了中断)
/// </summary>
/// <param name="eventArgs"></param>
public delegate void NodeInterruptStateChangeHandler(NodeInterruptStateChangeEventArgs eventArgs);
/// <summary>
/// 节点触发中断事件
/// </summary>
/// <param name="eventArgs"></param>
public delegate void NodeInterruptTriggerHandler(NodeInterruptTriggerEventArgs eventArgs);
/// <summary>
/// 监视的节点数据发生变化
/// </summary>
public class MonitorObjectEventArgs : FlowEventArgs
{
public MonitorObjectEventArgs(string nodeGuid,object newData)
{
NodeGuid = nodeGuid;
NewData = newData;
}
/// <summary>
/// 中断的节点Guid
/// </summary>
public string NodeGuid { get; protected set; }
/// <summary>
/// 新的数据
/// </summary>
public object NewData { get; protected set; }
}
/// <summary>
/// 节点中断状态改变事件参数
/// </summary>
public class NodeInterruptStateChangeEventArgs : FlowEventArgs
{
public NodeInterruptStateChangeEventArgs(string nodeGuid,InterruptClass @class)
{
NodeGuid = nodeGuid;
Class = @class;
}
/// <summary>
/// 中断的节点Guid
/// </summary>
public string NodeGuid { get; protected set; }
public InterruptClass Class { get; protected set; }
}
/// <summary>
/// 节点触发了中断事件参数
/// </summary>
public class NodeInterruptTriggerEventArgs : FlowEventArgs
{
public NodeInterruptTriggerEventArgs(string nodeGuid)
{
NodeGuid = nodeGuid;
}
/// <summary>
/// 中断的节点Guid
/// </summary>
public string NodeGuid { get; protected set; }
}
public interface IFlowEnvironment
{
ChannelFlowInterrupt ChannelFlowInterrupt { get; set; }
event FlowRunCompleteHandler OnFlowRunComplete;
event ProjectLoadedHandler OnProjectLoaded;
/// <summary>
/// 加载Dll
/// </summary>
event LoadDLLHandler OnDllLoad;
/// <summary>
/// 项目加载完成
/// </summary>
event ProjectLoadedHandler OnProjectLoaded;
/// <summary>
/// 节点连接属性改变事件
/// </summary>
event NodeConnectChangeHandler OnNodeConnectChange;
/// <summary>
/// 节点创建事件
/// </summary>
event NodeCreateHandler OnNodeCreate;
/// <summary>
/// 移除节点事件
/// </summary>
event NodeRemoteHandler OnNodeRemote;
/// <summary>
/// 起始节点变化事件
/// </summary>
event StartNodeChangeHandler OnStartNodeChange;
/// <summary>
/// 流程运行完成事件
/// </summary>
event FlowRunCompleteHandler OnFlowRunComplete;
/// <summary>
/// 被监视的对象改变事件
/// </summary>
event MonitorObjectChangeHandler OnMonitorObjectChange;
/// <summary>
/// 节点中断状态变化事件
/// </summary>
event NodeInterruptStateChangeHandler OnNodeInterruptStateChange;
/// <summary>
/// 节点触发中断
/// </summary>
event NodeInterruptTriggerHandler OnNodeInterruptTrigger;
/// <summary>
/// 保存当前项目
/// </summary>
@@ -252,6 +367,7 @@ namespace Serein.Library.Api
/// <returns></returns>
bool TryGetMethodDetails(string methodName,out MethodDetails md);
/// <summary>
/// 开始运行
/// </summary>
@@ -261,6 +377,8 @@ namespace Serein.Library.Api
/// </summary>
void Exit();
/// <summary>
/// 设置流程起点节点
/// </summary>
@@ -293,6 +411,27 @@ namespace Serein.Library.Api
void RemoteNode(string nodeGuid);
}
/// <summary>
/// 设置节点中断级别
/// </summary>
/// <param name="nodeGuid">被中断的节点Guid</param>
/// <param name="interruptClass">新的中断级别</param>
/// <returns></returns>
bool NodeInterruptChange(string nodeGuid,InterruptClass interruptClass);
/// <summary>
/// /// <summary>
/// 设置节点数据监视状态
/// </summary>
/// <param name="nodeGuid">需要监视的节点Guid</param>
/// <param name="isMonitor">是否监视</param>
void SetNodeFLowDataMonitorState(string nodeGuid, bool isMonitor);
/// <summary>
/// 节点数据更新通知
/// </summary>
/// <param name="nodeGuid"></param>
void FlowDataUpdateNotification(string nodeGuid, object flowData);
}
}

View File

@@ -32,6 +32,9 @@ namespace Serein.Library.Api
object Get(string name);
void CustomRegisterInstance(string name, object instance, bool needInjectProperty = true);
ISereinIOC Run<T>(string name, Action<T> action);
/// <summary>
/// 创建目标类型的对象, 并注入依赖项
/// </summary>

View File

@@ -12,14 +12,17 @@ namespace Serein.Library.Entity
public bool IsEnable { get; set; } = true;
/// <summary>
/// 是否中断(调试中断功能)
/// 是否监视数据改变
/// </summary>
public bool IsInterrupt { get; set; } = false;
public bool IsMonitorFlowData { get; set; } = false;
/// <summary>
/// 中断级别,暂时停止继续执行后继分支。
/// </summary>
public InterruptClass InterruptClass { get; set; } = InterruptClass.None;
public List<string> InterruptExpression { get; } = new List<string>();
}
/// <summary>
@@ -32,15 +35,15 @@ namespace Serein.Library.Entity
/// </summary>
None,
/// <summary>
/// 分支中断,当前节点。
/// 分支中断,中断进入当前节点的分支
/// </summary>
Branch,
/// <summary>
/// 分组中断,相同中断分组的节点。
/// 分组中断,中断进入指定节点分组的分支。(暂未实现相关)
/// </summary>
Group,
/// <summary>
/// 全局中断,其它所有节点。
/// 全局中断,中断全局所有节点的运行。(暂未实现相关)
/// </summary>
Global,
}

View File

@@ -366,6 +366,27 @@ namespace Serein.Library.Utils
#endregion
#region run()
public ISereinIOC Run<T>(string name, Action<T> action)
{
var obj = Get(name);
if (obj != null)
{
if(obj is T service)
{
try
{
action(service);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
return this;
}
public ISereinIOC Run<T>(Action<T> action)
{
var service = GetOrRegisterInstantiate<T>();

View File

@@ -123,8 +123,16 @@ namespace Serein.Library.Web
// 停止服务器
public void Stop()
{
listener?.Stop(); // 停止监听
listener?.Close(); // 关闭监听器
try
{
listener?.Stop(); // 停止监听
listener?.Close(); // 关闭监听器
}
catch (Exception EX)
{
Console.WriteLine(EX);
}
}
}