using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WorkFlowApi.Utility.WorkFlowEngine.Scheme;
using WorkFlowApi.Utility.WorkFlowEngine.Scheme.Config;
using WorkFlowApi.Utility.WorkFlowEngine.Scheme.Line;
using WorkFlowApi.Utility.WorkFlowEngine.Scheme.Node;
namespace WorkFlowApi.Utility.WorkFlowEngine
{
///
/// 工作流引擎
///
public interface WFIEngine
{
#region 流程模板操作方法
///
/// 获取流程模板
///
///
string GetScheme();
///
/// 获取流程模板
///
///
WFScheme GetSchemeObj();
///
/// 获取开始节点
///
/// 节点信息
WFNodeInfo GetStartNode();
///
/// 获取节点
///
/// 流程处理节点ID
/// 节点信息
WFNodeInfo GetNode(string nodeId);
///
/// 获取两节点间的线条
///
/// 开始节点
/// 结束节点
/// 线条列表
///
bool GetLines(string fromNodeId, string toNodeId, List list, Dictionary nodes = null);
///
/// 获取下一节点
///
/// 当前节点Id
/// 节点操作码 agree 同意 disagree 不同意 lrtimeout 超时
///
/// 节点信息列表
List GetNextNodes(string nodeId, string code, List lineList);
string GetButonList(string nodeId, List lineList);
///
/// 获取上一节点列表
///
/// 当前节点Id
///
List GetPreNodes(string nodeId);
///
/// 判断两节点是否连接
///
/// 开始节点
/// 结束节点
///
bool IsToNode(string formNodeId, string toNodeId);
#endregion
#region 流程运行操作方法
///
/// 获取配置参数信息
///
///
WFEngineParamConfig GetConfig();
///
/// 获取接下来的任务节点信息
///
/// 起始节点
/// 节点操作码 agree 同意 disagree 不同意 lrtimeout 超时
/// 是否获取下一节点审核人
/// 经过的线段需要执行操作的
///
List GetNextTaskNode(WFNodeInfo beginNode, string code, bool isGetAuditors, List lineList,string branchnodeCode = "");
#endregion
}
}