/// <summary> /// 根据流程配置获取其对应的所有补偿事件 /// </summary> /// <param name="process"></param> /// <returns></returns> public ConcurrentStack <ProcessConfigureBase> GetProcessCallbackList(ProcessConfigureBase process) { if (process != null && CallbackList.TryGetValue(process.Key, out ConcurrentStack <ProcessConfigureBase> thisCallbackList)) { return(thisCallbackList); } else { return(new ConcurrentStack <ProcessConfigureBase>()); } }
/// <summary> /// 创建一个流程配置,并注册到管道事件 /// </summary> /// <param name="process"></param> /// <param name="callback"></param> public void SetProcess(ProcessConfigureBase process, ProcessConfigureBase callback = null) { process.Key = Guid.NewGuid().ToString(); Processes.Enqueue(process); var thiscallback = new ConcurrentStack <ProcessConfigureBase>(); if (CallbackList.TryGetValue(lastProcessesKey, out ConcurrentStack <ProcessConfigureBase> lastcallback)) { foreach (var item in lastcallback) { thiscallback.Push(item); } } lastProcessesKey = process.Key; if (callback != null) { thiscallback.Push(callback); } CallbackList.TryAdd(lastProcessesKey, thiscallback); }