예제 #1
0
        /// <inheritdoc />
        internal override void InterInitialContainer(IPipeLine flowContainer)
        {
            LineContainer = flowContainer;
            WatchProxy=flowContainer.GetWatchProxy();

            if (this.Equals(flowContainer.EndPipe))
                return;

            if (NextPipe == null)
                throw new ArgumentNullException(nameof(NextPipe),
                    $"Flow({flowContainer.PipeCode})需要有明确的EndPipe,且所有的分支路径最终需到达此EndPipe");

            NextPipe.InterInitialContainer(flowContainer);
        }
예제 #2
0
        internal override void InterFormatLink(string prePipeCode, bool isSelf = false)
        {
            if (!string.IsNullOrEmpty(prePipeCode))
            {
                var links   = LineContainer.GetLinkDics();
                var linkKey = string.Concat(prePipeCode, "_", PipeCode);

                if (links.ContainsKey(linkKey))
                {
                    return;
                }
                links.Add(linkKey,new PipeLink()
                {
                    pre_pipe_code = prePipeCode,
                    pipe_code = PipeCode
                });
            }
           
            if (NextPipe == null || Equals(LineContainer.EndPipe))
                return ;

            NextPipe.InterFormatLink(PipeCode,false);
        }