/// <summary> /// Adds new plugin step configuration record using provided action /// </summary> /// <param name="stepConfigAction">Action to initialize new plugin step configuration</param> protected void AddStep(Action <XrmPluginStepConfiguration> stepConfigAction) { XrmPluginStepConfiguration config = new XrmPluginStepConfiguration(); stepConfigAction.Invoke(config); AddStep(config); }
/// <summary> /// Adds provided plugin step configuration record to the plugin execution pipeline /// </summary> /// <param name="stepConfig">Plugin step configuration record to add</param> protected void AddStep(XrmPluginStepConfiguration stepConfig) { if (stepConfig.PluginAction == null) { throw new ArgumentNullException("PluginAction", $"In {_pluginTypeName}, {stepConfig}"); } _pluginSteps.Add(stepConfig); }
private void ValidateStepConfigs(XrmPluginStepConfiguration step) { if (step.IsUnsecureConfigRequired && string.IsNullOrEmpty(UnsecureConfig)) { ThrowPluginExecutionException("Required UnsecureConfig is missing"); } if (step.IsSecureConfigRequired && string.IsNullOrEmpty(SecureConfig)) { ThrowPluginExecutionException("Required SecureConfig is missing"); } }
private void ValidateRequiredImages(XrmPluginStepConfiguration step) { if (!string.IsNullOrEmpty(step.RequiredPreImageName) && (!PluginExecutionContext.PreEntityImages.Contains(step.RequiredPreImageName) || PluginExecutionContext.PreEntityImages[step.RequiredPreImageName] == null)) { ThrowPluginExecutionException("Required PreImage '{0}' is missing", step.RequiredPreImageName); } if (!string.IsNullOrEmpty(step.RequiredPostImageName) && (!PluginExecutionContext.PostEntityImages.Contains(step.RequiredPostImageName) || PluginExecutionContext.PostEntityImages[step.RequiredPostImageName] == null)) { ThrowPluginExecutionException("Required PostImage '{0}' is missing", step.RequiredPostImageName); } }
/// <summary> /// Validates and executes provided step using this context /// </summary> /// <param name="step">Plugin step configuration to execute</param> public void InvokeStep(XrmPluginStepConfiguration step) { if (step == null) { return; } if (!ValidateExecutionDepth(step)) { return; } ValidateStepConfigs(step); ValidateRequiredImages(step); step.PluginAction.Invoke(this); }
private bool ValidateExecutionDepth(XrmPluginStepConfiguration step) { return(step.MaxDepth == 0 || Depth <= step.MaxDepth); }