private void MapXmlElements(IUnityContainer unityContainer, IXmlStepContainer xmlStepContainer) { foreach (var xmlJobElement in xmlStepContainer.JobElements) { if (xmlJobElement is XmlStep) { var xmlStep = (XmlStep)xmlJobElement; var stepId = xmlStep.Id; var step = new StepLoader(xmlStep, unityContainer).LoadStep(); _stepsMap[stepId] = step; } else if (xmlJobElement is XmlFlow) { var xmlFlow = (XmlFlow)xmlJobElement; _xmlFlowMap[xmlFlow.Id] = xmlFlow; MapXmlElements(unityContainer, xmlFlow); } else if (xmlJobElement is XmlSplit) { var xmlSplit = (XmlSplit)xmlJobElement; _xmlSplitMap[xmlSplit.Id] = xmlSplit; _executor = unityContainer.Resolve <ITaskExecutor>(); foreach (var xmlFlow in xmlSplit.Flows) { MapXmlElements(unityContainer, xmlFlow); } } } }
private FlowBuilder <T> HandleSubElements <T>(FlowBuilder <T> builder, IXmlStepContainer container) { foreach (var xmlElement in container.JobElements) { XmlFlow xmlSubFlow = xmlElement as XmlFlow; XmlStep xmlStep = xmlElement as XmlStep; XmlSplit xmlSplit = xmlElement as XmlSplit; if (xmlElement.Next != null) { Next(From(builder, xmlStep, xmlSubFlow, xmlSplit), xmlElement.Next); } else if (xmlElement.Transitions.Any()) { foreach (var transition in xmlElement.Transitions) { var transitionBuilder = From(builder, xmlStep, xmlSubFlow, xmlSplit).On(transition.On); var xmlNext = transition as XmlNext; if (xmlNext != null) { To(transitionBuilder, xmlNext.To); } else if (transition is XmlEnd) { transitionBuilder.End(); } else if (transition is XmlFail) { transitionBuilder.Fail(); } } } } return(builder); }