private IEnumerable <XrmPluginStepConfiguration> GetApplicableSteps(string entityName, string messageName, PluginStage stage) { return(_pluginSteps .Where(ps => (string.IsNullOrEmpty(ps.EntityName) || ps.EntityName == entityName) && (ps.MessageName == null || ps.MessageName.ToString() == messageName) && (ps.Stage == PluginStage.Any || ps.Stage == stage)) .OrderBy(ps => ps.Order)); }
private bool IsFromStage(StepFullInfo s, PluginStage stage) { switch (stage) { case PluginStage.PreValidation: return(s.PluginStep.Stage == 10); case PluginStage.Pre: return(s.PluginStep.Stage == 20); case PluginStage.PostSynch: return(s.PluginStep.Stage == 40 && s.PluginStep.ExecutionMode == 0); case PluginStage.PostAsych: return(s.PluginStep.Stage == 40 && s.PluginStep.ExecutionMode == 1); default: break; } return(false); }
/// <summary> /// /// </summary> /// <param name="name">Name of the Sdk Message Processing Step to Create</param> /// <param name="configuration">Leave Empty</param> /// <param name="mode">Sync or Async (enumeration)</param> /// <param name="rank">Default to 10</param> /// <param name="stage">Prevalidation, Preoperation or Postoperation</param> /// <param name="invocationSource">Parent or Child</param> /// <param name="pluginTypeId"></param> /// <param name="messageId"></param> /// <param name="messageFilterId"></param> /// <returns></returns> private Guid CreateSdkMessageProcessingStep(string name, string entityName, string configuration, StepMode mode, int rank, PluginStage stage, StepInvocationSource invocationSource, Guid impersonatingUserId) { Entity step = new Entity("sdkmessageprocessingstep"); step["name"] = name; step["description"] = name; step["configuration"] = configuration; step["mode"] = new OptionSetValue(mode.ToInt()); step["rank"] = rank; step["stage"] = new OptionSetValue(stage.ToInt()); step["supporteddeployment"] = new OptionSetValue(0); // Server Only step["invocationsource"] = new OptionSetValue(invocationSource.ToInt()); Guid sdkMessageId = GetSdkMessageId("Create"); Guid sdkMessageFilterId = GetSdkMessageFilterId(entityName, sdkMessageId); Guid assemblyId = GetPluginAssemblyId(ASSEMBLY_NAME); Guid pluginTypeId = GetPluginTypeId(assemblyId, PLUGIN_TYPE_NAME); step["plugintypeid"] = new EntityReference("plugintype", pluginTypeId); step["sdkmessageid"] = new EntityReference("sdkmessage", sdkMessageId); step["sdkmessagefilterid"] = new EntityReference("sdkmessagefilter", sdkMessageFilterId); if (impersonatingUserId != Guid.Empty) { step["impersonatinguserid"] = new EntityReference("systemuser", impersonatingUserId); } try { Guid stepId = service.Create(step); return(stepId); } catch (InvalidPluginExecutionException invalidPluginExecutionException) { throw invalidPluginExecutionException; } catch (Exception exception) { throw exception; } }
public Processor(IServiceProvider svcProvider, string logicalName, PluginStage pluginStage, string unsecureConfig = null, string secureConfig = null) : base(svcProvider, logicalName, pluginStage, unsecureConfig, secureConfig) { }
/// <summary> /// Registers an event to be executed for a specific stage of a message execution for given primary entity. /// </summary> /// <param name="stage">Stage of execution.</param> /// <param name="message">Message, which will fire an event.</param> /// <param name="primaryEntity">Logical name of primary entity. Use null if for any entity.</param> /// <param name="func">Delegate function, which is invoked on matching registration.</param> protected void RegisterEvent(PluginStage stage, PluginMessage message, string primaryEntity, Action <LocalPluginContext> func) { RegisteredEvents.Add(new Tuple <int, string, string, Action <LocalPluginContext> >((int)stage, message.ToString(), primaryEntity, func)); }
public PluginValidationAttribute(string entityName, string message, PluginStage stage) { EntityName = entityName; Message = message; Stage = stage; }
public IEnumerable <Action <LocalPluginContext> > GetStepEvents(string message, string entityName, PluginStage stage, IEnumerable <string> preImages, IEnumerable <string> postImages) { return(_pluginSteps .Where(s => { return (s.Message == null || s.Message == message) && (s.EntityName == null || s.EntityName == entityName) && ((int)s.Stage == 0 || s.Stage == stage) && (s.RequiredPreImages.Count == 0 || (preImages != null && !s.RequiredPreImages.Except(preImages).Any())) && (s.RequiredPostImages.Count == 0 || (postImages != null && !s.RequiredPostImages.Except(postImages).Any())); } ) .Select(s => s.PluginAction)); }
public PluginStepBuilder Stage(PluginStage stage) { _pluginStep.Stage = stage; return(this); }
public RequireStageAttribute(PluginStage stage) { _stage = stage; }