/// <summary> /// 将事务协调流程管理器写入静态字典 /// </summary> public void BuildProcess() { if (currentPipline == null) { throw new EventCoordinatorException("配置流程失败!"); } else if (!currentPipline.GetProcessee().Any()) { throw new EventCoordinatorException("配置流程失败!"); } else { piplines.Add(currentPipline); } }
public EventProcessManagerPipline(ILogger logger, EventProcessManagerPipline pipline) { this.logger = logger; this.Key = pipline.Key; this.Processes = new ConcurrentQueue <ProcessConfigureBase>(); foreach (var item in pipline.GetProcessee()) { Processes.Enqueue(item); } ; this.CallbackList = new ConcurrentDictionary <string, ConcurrentStack <ProcessConfigureBase> >(); foreach (var item in pipline.GetCallbackList()) { var callbacklist = new List <ProcessConfigureBase>(); var callbackstack = new ConcurrentStack <ProcessConfigureBase>(); foreach (var child in item.Value) { callbacklist.Add(child); } callbacklist.Reverse();//由于是从栈复制到栈,所以这里需要进行一次反转 callbacklist.ForEach(x => callbackstack.Push(x)); CallbackList.TryAdd(item.Key, callbackstack); } }