/// <summary> /// The DataSourcePlan has a set of PostProcessors, identified by fully-qualified /// assembly name. If there is a readyToUseSubPlan, and it has postprocessors, it /// will add those first. /// <param name="readyToUseSubPlan">A ReadyToUsePlan (possibly null) they specify /// processors to be fired first.</param> /// </summary> private void AcquirePostPostProcessors(IReadyToUseSubPlan readyToUseSubPlan) { PostProcessors = new List<IPostProcessor> (); try { // Get the processors from the ReadyToUseSubPlan first. if (readyToUseSubPlan != null && readyToUseSubPlan.PostProcessorDescriptors != null) { foreach (var postProcessorDescriptor in readyToUseSubPlan.PostProcessorDescriptors) { InstantiatePostProcessor(postProcessorDescriptor); } } // Now get the ones from the DataSourcePlan. if (Plan.PostProcessors != null) { foreach (var postProcessorDescriptor in Plan.PostProcessors) { InstantiatePostProcessor(postProcessorDescriptor); } } } catch (Exception ex) { throw new Exception ( String.Format ("AcquirePostPostProcessors - error {0}", ex.Message), ex); } }
/// <summary> /// PostProcess is the final stage of processing, where business rules are applied // against the data placed in staging by the Process() endpoint, and resultant rows // inserted, modified, and/or deleted at the final location. /// <param name="loadNum">The load number to perform post processing on.</param> /// <param name="readyToUseSubPlan">A ReadyToUseSubPlan (can be null) that may /// have additional PostProcessors to be run first.</param> /// </summary> public void PostProcess(int loadNum, IReadyToUseSubPlan readyToUseSubPlan) { if (!Plan.PostProcess) { return; } AcquirePostPostProcessors (readyToUseSubPlan); RunPostProcessors(loadNum, PostProcessors); }