mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-22 09:06:34 +08:00
优化了中断功能,增加了节点变量的查看。
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user