using Serein.Library.Api; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Serein.Library { /// /// 流程调用树,管理所有的调用节点 /// public class FlowCallTree : IFlowCallTree { private readonly SortedDictionary _callNodes = new SortedDictionary(); /// public List StartNodes { get; set; } /// public List GlobalFlipflopNodes { get; set; } /// /// 索引器,允许通过字符串索引访问CallNode /// /// /// public CallNode this[string index] { get { _callNodes.TryGetValue(index, out CallNode callNode); return callNode; } set { // 设置指定索引的值 _callNodes.Add(index, value); } } /// /// 添加一个调用节点到流程调用树中 /// /// /// public void AddCallNode(string nodeGuid, Action action) { var node = new CallNode(nodeGuid, action); _callNodes[nodeGuid] = node; } /// /// 添加一个调用节点到流程调用树中,使用异步函数 /// /// /// public void AddCallNode(string nodeGuid, Func func) { var node = new CallNode(nodeGuid, func); _callNodes[nodeGuid] = node; } /// /// 获取指定Key的CallNode,如果不存在则返回null /// /// /// public CallNode Get(string key) { return _callNodes.TryGetValue(key, out CallNode callNode) ? callNode : null; } } }