public override void Process(PipelineStep pipelineStep, PipelineContext pipelineContext) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; if (!this.CanProcess(pipelineStep, pipelineContext)) { logger.Error("Pipeline step processing will abort because the pipeline step cannot be processed. (pipeline step: {0})", (object)pipelineStep.Name); } else { PipelinesSettings pipelinesSettings = pipelineStep.GetPipelinesSettings(); if (pipelinesSettings == null || !pipelinesSettings.Pipelines.Any <Pipeline>()) { logger.Error("Pipeline step processing will abort because the pipeline step has no sub-pipelines assigned. (pipeline step: {0})", (object)pipelineStep.Name); } else { IterableDataSettings iterableDataSettings = pipelineContext.GetIterableDataSettings(); if (iterableDataSettings == null || iterableDataSettings.Data == null) { return; } int num = 0; try { var childRecordSettings = new ChildRecordSettings(); foreach (object element in iterableDataSettings.Data) { if (!pipelineContext.PipelineBatchContext.Stopped) { PipelineContext pipelineContext1 = new PipelineContext(pipelineContext.PipelineBatchContext); SynchronizationSettings synchronizationSettings = this.ResolveSynchronizationSettingsAndSetElement(pipelineStep, pipelineContext, element); //instatiate Target for filling. synchronizationSettings.Target = new Dictionary <string, string>(); pipelineContext1.Plugins.Add((IPlugin)synchronizationSettings); ParentPipelineContextSettings pipelineContextSettings = new ParentPipelineContextSettings() { ParentPipelineContext = pipelineContext }; pipelineContext1.Plugins.Add((IPlugin)pipelineContextSettings); this.ProcessPipelines(pipelineStep, pipelinesSettings.Pipelines, pipelineContext1); //Now Let's get the results var record = pipelineContext1.GetPlugin <SynchronizationSettings>().Target as Dictionary <string, string>; if (record != null) { childRecordSettings.Records.Add(record); } } num++; } //Add to the context so we can do something with this collection pipelineContext.Plugins.Add(childRecordSettings); logger.Info("{0} elements were iterated. (pipeline: {1}, pipeline step: {2})", (object)num, (object)pipelineContext.CurrentPipeline.Name, (object)pipelineContext.CurrentPipelineStep.Name, (object)pipelineContext); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); pipelineContext.CriticalError = true; } } } }
public override void Process(PipelineStep pipelineStep, PipelineContext pipelineContext) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; if (!this.CanProcess(pipelineStep, pipelineContext)) { logger.Error("Pipeline step processing will abort because the pipeline step cannot be processed. (pipeline step: {0})", (object)pipelineStep.Name); } else { PipelinesSettings pipelinesSettings = pipelineStep.GetPipelinesSettings(); if (pipelinesSettings == null || !pipelinesSettings.Pipelines.Any <Pipeline>()) { logger.Error("Pipeline step processing will abort because the pipeline step has no sub-pipelines assigned. (pipeline step: {0})", (object)pipelineStep.Name); } else { IterableDataSettings iterableDataSettings = pipelineContext.GetIterableDataSettings(); if (iterableDataSettings == null || iterableDataSettings.Data == null) { return; } int num = 0; try { int maxThreads = 2; int.TryParse(Sitecore.Configuration.Settings.GetSetting("SF.DEF.General.MaxThreads"), out maxThreads); //only set min threads if it's configured in the envrionment. int minThreads = 2; if (int.TryParse(Sitecore.Configuration.Settings.GetSetting("SF.DEF.General.MionThreads"), out minThreads)) { System.Threading.ThreadPool.SetMinThreads(minThreads, minThreads); } logger.Info("Starting Async Processor with {0} threads", maxThreads); Parallel.ForEach(iterableDataSettings.Data.Cast <object>(), new ParallelOptions { MaxDegreeOfParallelism = maxThreads }, (element) => { if (!pipelineContext.PipelineBatchContext.Stopped) { PipelineContext pipelineContext1 = new PipelineContext(pipelineContext.PipelineBatchContext); SynchronizationSettings synchronizationSettings = this.ResolveSynchronizationSettingsAndSetElement(pipelineStep, pipelineContext, element); pipelineContext1.Plugins.Add((IPlugin)synchronizationSettings); ParentPipelineContextSettings pipelineContextSettings = new ParentPipelineContextSettings() { ParentPipelineContext = pipelineContext }; pipelineContext1.Plugins.Add((IPlugin)pipelineContextSettings); this.ProcessPipelines(pipelineStep, pipelinesSettings.Pipelines, pipelineContext1); } num++; }); logger.Info("{0} elements were iterated. (pipeline: {1}, pipeline step: {2})", (object)num, (object)pipelineContext.CurrentPipeline.Name, (object)pipelineContext.CurrentPipelineStep.Name, (object)pipelineContext); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); pipelineContext.CriticalError = true; } } } }
public override void Process(PipelineStep pipelineStep, PipelineContext pipelineContext) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; if (!this.CanProcess(pipelineStep, pipelineContext)) { logger.Error("Pipeline step processing will abort because the pipeline step cannot be processed. (pipeline step: {0})", (object)pipelineStep.Name); } else { PipelinesSettings pipelinesSettings = pipelineStep.GetPipelinesSettings(); if (pipelinesSettings == null || !pipelinesSettings.Pipelines.Any <Pipeline>()) { logger.Error("Pipeline step processing will abort because the pipeline step has no sub-pipelines assigned. (pipeline step: {0})", (object)pipelineStep.Name); } else { var iterateGroupedDataSettings = pipelineStep.GetPlugin <IterateThroughGroupedDataSettings>(); if (iterateGroupedDataSettings == null || string.IsNullOrEmpty(iterateGroupedDataSettings.GroupFieldKey)) { logger.Error("No Iterated Group Settings was found with configured group field key"); return; } GroupedDataSettings groupedDataSettings = pipelineContext.GetPlugin <GroupedDataSettings>(); if (groupedDataSettings == null || groupedDataSettings.Data == null) { //let's try the parent context var parentSettings = pipelineContext.GetPlugin <ParentPipelineContextSettings>(); if (parentSettings != null) { groupedDataSettings = parentSettings.ParentPipelineContext.GetPlugin <GroupedDataSettings>(); } if (groupedDataSettings == null || groupedDataSettings.Data == null) { logger.Error("No Grouped Data Settings was found in the pipelineContext or parent Pipeline Context "); return; } } var parentSyncSettings = pipelineContext.GetPlugin <SynchronizationSettings>(); var source = parentSyncSettings.Source as Dictionary <string, string>; if (source == null || !source.ContainsKey(iterateGroupedDataSettings.GroupFieldKey)) { logger.Warn("Group Field Key {0} doesn;t exist in source.", iterateGroupedDataSettings.GroupFieldKey); return; } var groupValue = source[iterateGroupedDataSettings.GroupFieldKey]; int num = 0; try { var childRecordSettings = new ChildRecordSettings(); foreach (object element in groupedDataSettings.Data[groupValue]) { if (!pipelineContext.PipelineBatchContext.Stopped) { PipelineContext pipelineContext1 = new PipelineContext(pipelineContext.PipelineBatchContext); SynchronizationSettings synchronizationSettings = this.ResolveSynchronizationSettingsAndSetElement(pipelineStep, pipelineContext, element); //instatiate Target for filling. synchronizationSettings.Target = new Dictionary <string, string>(); pipelineContext1.Plugins.Add((IPlugin)synchronizationSettings); ParentPipelineContextSettings pipelineContextSettings = new ParentPipelineContextSettings() { ParentPipelineContext = pipelineContext }; pipelineContext1.Plugins.Add((IPlugin)pipelineContextSettings); this.ProcessPipelines(pipelineStep, pipelinesSettings.Pipelines, pipelineContext1); var record = pipelineContext1.GetPlugin <SynchronizationSettings>().Target as Dictionary <string, string>; if (record != null) { childRecordSettings.Records.Add(record); } } num++; } pipelineContext.Plugins.Add(childRecordSettings); logger.Info("{0} elements were iterated. (pipeline: {1}, pipeline step: {2})", (object)num, (object)pipelineContext.CurrentPipeline.Name, (object)pipelineContext.CurrentPipelineStep.Name, (object)pipelineContext); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); pipelineContext.CriticalError = true; } } } }
public override void Process(PipelineStep pipelineStep, PipelineContext pipelineContext) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; if (!this.CanProcess(pipelineStep, pipelineContext)) { logger.Error("Pipeline step processing will abort because the pipeline step cannot be processed. (pipeline step: {0})", (object)pipelineStep.Name); } else { PipelinesSettings pipelinesSettings = pipelineStep.GetPipelinesSettings(); if (pipelinesSettings == null || !pipelinesSettings.Pipelines.Any <Pipeline>()) { logger.Error("Pipeline step processing will abort because the pipeline step has no sub-pipelines assigned. (pipeline step: {0})", (object)pipelineStep.Name); } else { var iterateGroupedDataSettings = pipelineStep.GetPlugin <IterateThroughGroupedDataSettings>(); if (iterateGroupedDataSettings == null || string.IsNullOrEmpty(iterateGroupedDataSettings.GroupFieldKey)) { logger.Error("No Iterated Group Settings was found with configured group field key"); return; } GroupedDataSettings groupedDataSettings = pipelineContext.GetPlugin <GroupedDataSettings>(); if (groupedDataSettings == null || groupedDataSettings.Data == null) { //let's try the parent context var parentSettings = pipelineContext.GetPlugin <ParentPipelineContextSettings>(); if (parentSettings != null) { groupedDataSettings = parentSettings.ParentPipelineContext.GetPlugin <GroupedDataSettings>(); } if (groupedDataSettings == null || groupedDataSettings.Data == null) { logger.Error("No Grouped Data Settings was found in the pipelineContext or parent Pipeline Context "); } return; } if (!groupedDataSettings.Data.ContainsKey(iterateGroupedDataSettings.GroupFieldKey)) { logger.Warn("No Records Exists for Configured Key: {0}", iterateGroupedDataSettings.GroupFieldKey); return; } int num = 0; try { foreach (object element in groupedDataSettings.Data[iterateGroupedDataSettings.GroupFieldKey]) { if (!pipelineContext.PipelineBatchContext.Stopped) { PipelineContext pipelineContext1 = new PipelineContext(pipelineContext.PipelineBatchContext); SynchronizationSettings synchronizationSettings = this.ResolveSynchronizationSettingsAndSetElement(pipelineStep, pipelineContext, element); pipelineContext1.Plugins.Add((IPlugin)synchronizationSettings); ParentPipelineContextSettings pipelineContextSettings = new ParentPipelineContextSettings() { ParentPipelineContext = pipelineContext }; pipelineContext1.Plugins.Add((IPlugin)pipelineContextSettings); this.ProcessPipelines(pipelineStep, pipelinesSettings.Pipelines, pipelineContext1); } num++; } logger.Info("{0} elements were iterated. (pipeline: {1}, pipeline step: {2})", (object)num, (object)pipelineContext.CurrentPipeline.Name, (object)pipelineContext.CurrentPipelineStep.Name, (object)pipelineContext); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); pipelineContext.CriticalError = true; } } } }
public override void Process(PipelineStep pipelineStep, PipelineContext pipelineContext) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; if (!this.CanProcess(pipelineStep, pipelineContext)) { logger.Error("Pipeline step processing will abort because the pipeline step cannot be processed. (pipeline step: {0})", (object)pipelineStep.Name); } else { PipelinesSettings pipelinesSettings = pipelineStep.GetPipelinesSettings(); if (pipelinesSettings == null || !pipelinesSettings.Pipelines.Any <Pipeline>()) { logger.Error("Pipeline step processing will abort because the pipeline step has no sub-pipelines assigned. (pipeline step: {0})", (object)pipelineStep.Name); } else { IterableDataSettings iterableDataSettings = pipelineContext.GetIterableDataSettings(); if (iterableDataSettings == null || iterableDataSettings.Data == null) { return; } int num = 0; try { List <Task> tasks = new List <Task>(); foreach (object element in iterableDataSettings.Data) { Task task = Task.Factory.StartNew(() => { if (!pipelineContext.PipelineBatchContext.Stopped) { PipelineContext pipelineContext1 = new PipelineContext(pipelineContext.PipelineBatchContext); SynchronizationSettings synchronizationSettings = this.ResolveSynchronizationSettingsAndSetElement(pipelineStep, pipelineContext, element); pipelineContext1.Plugins.Add((IPlugin)synchronizationSettings); ParentPipelineContextSettings pipelineContextSettings = new ParentPipelineContextSettings() { ParentPipelineContext = pipelineContext }; pipelineContext1.Plugins.Add((IPlugin)pipelineContextSettings); this.ProcessPipelines(pipelineStep, pipelinesSettings.Pipelines, pipelineContext1); } }); num++; } Task.WaitAll(tasks.ToArray()); logger.Info("{0} elements were iterated. (pipeline: {1}, pipeline step: {2})", (object)num, (object)pipelineContext.CurrentPipeline.Name, (object)pipelineContext.CurrentPipelineStep.Name, (object)pipelineContext); } catch (Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); pipelineContext.CriticalError = true; } } } }