Плагин crm динамика 2015

Я пытаюсь создать простой плагин и зарегистрировать его в своем MSDN CRM -решении. У меня есть Microsoft CRM SDK и Microsoft Solution Manager, чтобы помочь мне в этом.

Диспетчер решений CRM предоставляет базовый плагин для этого при создании проекта, но ему не хватает какой-либо логики (ofc).

Где в этих базовых плагинах ниже приведен метод выполнения логики? Если возможно?

 /// <summary>
    /// Executes the plug-in.
    /// </summary>
    /// <param name="serviceProvider">The service provider.</param>
    /// <remarks>
    /// For improved performance, Microsoft Dynamics CRM caches plug-in instances. 
    /// The plug-in's Execute method should be written to be stateless as the constructor 
    /// is not called for every invocation of the plug-in. Also, multiple system threads 
    /// could execute the plug-in at the same time. All per invocation state information 
    /// is stored in the context. This means that you should not use global variables in plug-ins.
    /// </remarks>
    public void Execute(IServiceProvider serviceProvider)
    {
        if (serviceProvider == null)
        {
            throw new ArgumentNullException("serviceProvider");
        }

        // Construct the Local plug-in context.
        LocalPluginContext localcontext = new LocalPluginContext(serviceProvider);

        localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Entered {0}.Execute()", this.ChildClassName));

        try
        {
            // Iterate over all of the expected registered events to ensure that the plugin
            // has been invoked by an expected event
            // For any given plug-in event at an instance in time, we would expect at most 1 result to match.
            Action<LocalPluginContext> entityAction =
                (from a in this.RegisteredEvents
                 where (
                 a.Item1 == localcontext.PluginExecutionContext.Stage &&
                 a.Item2 == localcontext.PluginExecutionContext.MessageName &&
                 (string.IsNullOrWhiteSpace(a.Item3) ? true : a.Item3 == localcontext.PluginExecutionContext.PrimaryEntityName)
                 )
                 select a.Item4).FirstOrDefault();

            if (entityAction != null)
            {
                localcontext.Trace(string.Format(
                    CultureInfo.InvariantCulture,
                    "{0} is firing for Entity: {1}, Message: {2}",
                    this.ChildClassName,
                    localcontext.PluginExecutionContext.PrimaryEntityName,
                    localcontext.PluginExecutionContext.MessageName));

                entityAction.Invoke(localcontext);

                // now exit - if the derived plug-in has incorrectly registered overlapping event registrations,
                // guard against multiple executions.
                return;
            }
        }
        catch (FaultException<OrganizationServiceFault> e)
        {
            localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exception: {0}", e.ToString()));

            // Handle the exception.
            throw;
        }
        finally
        {
            localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exiting {0}.Execute()", this.ChildClassName));
        }
    }

1 ответ

Решение

You can strip the code to only this:

public void Execute(IServiceProvider serviceProvider)
{
    LocalPluginContext localcontext = new LocalPluginContext(serviceProvider);

    localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Entered {0}.Execute()", this.ChildClassName));

    try
    {

    }
    catch (FaultException<OrganizationServiceFault> e)
    {
        localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exception: {0}", e.ToString()));

        // Handle the exception.
        throw;
    }
    finally
    {
        localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exiting {0}.Execute()", this.ChildClassName));
    }
}

и добавьте свой код в try блок.

IServiceProvider предоставляет вам IPluginExecutionContext а также IOrganizationServiceFactory instances you need to a. get the context your plugin is executing in and b. get access to the organization service interface.

Другие вопросы по тегам