2024-10-20 12:10:57 +08:00
|
|
|
|
using Serein.Library;
|
2024-10-14 17:29:28 +08:00
|
|
|
|
using Serein.Library.Utils;
|
2024-09-12 20:32:54 +08:00
|
|
|
|
using System;
|
2024-11-02 16:48:40 +08:00
|
|
|
|
using System.Collections.Generic;
|
2024-09-12 20:32:54 +08:00
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Serein.Library.Api
|
|
|
|
|
|
{
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
2024-10-11 19:31:34 +08:00
|
|
|
|
/// 流程上下文,包含运行环境接口,可以通过注册环境事件或调用环境接口,实现在流程运行时更改流程行为。
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// </summary>
|
2024-09-12 20:32:54 +08:00
|
|
|
|
public interface IDynamicContext
|
|
|
|
|
|
{
|
2024-12-21 20:47:31 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 标识流程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
string Guid {get; }
|
|
|
|
|
|
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
2024-10-11 19:31:34 +08:00
|
|
|
|
/// 运行环境,包含IOC容器。
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
IFlowEnvironment Env { get; }
|
2024-10-14 17:29:28 +08:00
|
|
|
|
|
2024-10-24 23:32:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 是否正在运行
|
|
|
|
|
|
/// </summary>
|
2024-10-14 17:29:28 +08:00
|
|
|
|
RunState RunState { get; }
|
|
|
|
|
|
|
2024-11-02 16:48:40 +08:00
|
|
|
|
|
2024-10-24 23:32:43 +08:00
|
|
|
|
/// <summary>
|
2024-10-28 21:52:45 +08:00
|
|
|
|
/// 下一个要执行的节点类别
|
2024-10-24 23:32:43 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
ConnectionInvokeType NextOrientation { get; set; }
|
|
|
|
|
|
|
2024-11-04 23:30:52 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 运行时异常信息
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Exception ExceptionOfRuning { get; set; }
|
|
|
|
|
|
|
2025-05-30 10:53:33 +08:00
|
|
|
|
/* /// <summary>
|
|
|
|
|
|
/// 忽略处理该节点流程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
void IgnoreFlowHandle(NodeModelBase node);
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取此次流程处理状态
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
bool GetIgnodeFlowStateUpload(NodeModelBase node);
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 恢复流程处理状态
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
void RecoverIgnodeFlowStateUpload(NodeModelBase node);*/
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-10-28 21:52:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 设置节点的运行时上一节点,用以多线程中隔开不同流程的数据
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="currentNodeModel">当前节点</param>
|
|
|
|
|
|
/// <param name="PreviousNode">运行时上一节点</param>
|
2025-05-31 12:15:01 +08:00
|
|
|
|
void SetPreviousNode(IFlowNode currentNodeModel, IFlowNode PreviousNode);
|
2024-10-28 21:52:45 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取当前节点的运行时上一节点,用以流程中获取数据
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="currentNodeModel"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-05-31 12:15:01 +08:00
|
|
|
|
IFlowNode GetPreviousNode(IFlowNode currentNodeModel);
|
2024-10-28 21:52:45 +08:00
|
|
|
|
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取节点的数据(当前节点需要获取上一节点数据时,需要从 运行时上一节点 的Guid 通过这个方法进行获取
|
|
|
|
|
|
/// </summary>
|
2025-03-21 18:26:01 +08:00
|
|
|
|
/// <param name="nodeModel"></param>
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// <returns></returns>
|
2025-05-31 12:15:01 +08:00
|
|
|
|
FlowResult GetFlowData(IFlowNode nodeModel);
|
2024-10-28 21:52:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 上一节点数据透传到下一节点
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="nodeModel"></param>
|
2025-05-31 12:15:01 +08:00
|
|
|
|
FlowResult TransmissionData(IFlowNode nodeModel);
|
2024-10-28 21:52:45 +08:00
|
|
|
|
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// 添加或更新当前节点的数据
|
|
|
|
|
|
/// </summary>
|
2025-03-21 18:26:01 +08:00
|
|
|
|
/// <param name="nodeModel"></param>
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// <param name="flowData"></param>
|
2025-05-31 12:15:01 +08:00
|
|
|
|
void AddOrUpdate(IFlowNode nodeModel, FlowResult flowData);
|
2024-10-14 17:29:28 +08:00
|
|
|
|
|
2025-03-20 22:54:10 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 重置流程状态(用于对象池回收)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
void Reset();
|
|
|
|
|
|
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// <summary>
|
2024-11-02 16:48:40 +08:00
|
|
|
|
/// 用以提前结束当前上下文流程的运行
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/// </summary>
|
2024-10-27 00:54:10 +08:00
|
|
|
|
void Exit();
|
|
|
|
|
|
|
2024-10-14 17:29:28 +08:00
|
|
|
|
/*/// <summary>
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// 定时循环触发
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="callback"></param>
|
|
|
|
|
|
/// <param name="time"></param>
|
|
|
|
|
|
/// <param name="count"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-10-14 17:29:28 +08:00
|
|
|
|
// Task CreateTimingTask(Action callback, int time = 100, int count = -1);*/
|
|
|
|
|
|
}
|
2024-09-12 20:32:54 +08:00
|
|
|
|
}
|