Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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");
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
 private bool ValidateExecutionDepth(XrmPluginStepConfiguration step)
 {
     return(step.MaxDepth == 0 || Depth <= step.MaxDepth);
 }