private IFlow LoadFlow(XmlFlow xmlFlow) { string flowId = xmlFlow.Id; if (_flowMap.ContainsKey(flowId)) { return(_flowMap[flowId]); } FlowBuilder <IFlow> flowBuilder = new FlowBuilder <IFlow>(flowId); XmlJobElement firstElement = xmlFlow.JobElements.First(); if (firstElement is XmlStep) { flowBuilder.Start(_stepsMap[firstElement.Id]); } else { XmlFlow xmlSubFlow = firstElement as XmlFlow; XmlSplit xmlSplit = firstElement as XmlSplit; flowBuilder.Start(xmlSubFlow != null ? LoadFlow((XmlFlow)firstElement) : LoadSplit(xmlSplit)); } HandleSubElements(flowBuilder, xmlFlow); IFlow flow = flowBuilder.End(); _flowMap[xmlFlow.Id] = flow; return(flow); }
private IJob LoadJob(XmlJob xmlJob, JobBuilder jobBuilder) { FlowBuilder <FlowJobBuilder> jobFlowBuilder; XmlJobElement xmlElement = xmlJob.JobElements.First(); if (xmlElement is XmlStep) { jobFlowBuilder = jobBuilder.Flow(_stepsMap[xmlElement.Id]); } else { XmlFlow xmlFlow = xmlElement as XmlFlow; XmlSplit xmlSplit = xmlElement as XmlSplit; jobFlowBuilder = jobBuilder.Start(xmlFlow != null ? LoadFlow(xmlFlow) : LoadSplit(xmlSplit)); } HandleSubElements(jobFlowBuilder, xmlJob); return(jobFlowBuilder.End().Build()); }