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); }
private FlowBuilder <T> From <T>(FlowBuilder <T> builder, XmlStep xmlStep, XmlFlow xmlFlow, XmlSplit xmlSplit) { if (xmlStep != null) { return(builder.From(_stepsMap[xmlStep.Id])); } if (xmlFlow != null) { return(builder.From(LoadFlow(xmlFlow))); } if (xmlSplit != null) { return(builder.From(LoadSplit(xmlSplit))); } // Won't happen return(null); }
/// <summary> /// Constructs a new <see cref="StepLoader"/> with the specified input and output types. /// </summary> public StepLoader(XmlStep step, IUnityContainer container) { _step = step; _container = container; }