2015-09-17 5 views
-2

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

Менеджер решений 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)); 
     } 
    } 
+0

Я не совсем понимаю, о чем вы просите. –

ответ

1

Вы можете раздеться код только это:

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 экземплярам, ​​которые вам нужны. получить контекст, который выполняет ваш плагин, и b. получить доступ к интерфейсу сервисной службы организации.

Смежные вопросы