using Serein.Library;
using Serein.Library.Utils;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Serein.Library.Api
{
///
/// 流程上下文,包含运行环境接口,可以通过注册环境事件或调用环境接口,实现在流程运行时更改流程行为。
///
public interface IDynamicContext
{
///
/// 运行环境,包含IOC容器。
///
IFlowEnvironment Env { get; }
///
/// 是否正在运行
///
RunState RunState { get; }
///
/// 用来在当前流程上下文间传递数据
///
Dictionary ContextShareData { get; }
///
/// 下一个要执行的节点类别
///
ConnectionInvokeType NextOrientation { get; set; }
///
/// 运行时异常信息
///
Exception ExceptionOfRuning { get; set; }
///
/// 设置节点的运行时上一节点,用以多线程中隔开不同流程的数据
///
/// 当前节点
/// 运行时上一节点
void SetPreviousNode(NodeModelBase currentNodeModel, NodeModelBase PreviousNode);
///
/// 获取当前节点的运行时上一节点,用以流程中获取数据
///
///
///
NodeModelBase GetPreviousNode(NodeModelBase currentNodeModel);
///
/// 获取节点的数据(当前节点需要获取上一节点数据时,需要从 运行时上一节点 的Guid 通过这个方法进行获取
///
///
///
object GetFlowData(string nodeGuid);
///
/// 上一节点数据透传到下一节点
///
///
object TransmissionData(NodeModelBase nodeModel);
///
/// 添加或更新当前节点的数据
///
///
///
void AddOrUpdate(string nodeGuid, object flowData);
///
/// 用以提前结束当前上下文流程的运行
///
void Exit();
/*///
/// 定时循环触发
///
///
///
///
///
// Task CreateTimingTask(Action callback, int time = 100, int count = -1);*/
}
}