27 enero 2012

Plug-Ins en CRM 2011

Innovar Tecnologías ©

- El objetivo de este desarrollo es diseñar y programar un plug-in para su despliegue en nuestro servidor CRM 2011

- El proceso de despliegue de un plug-in en CRM 2011 se divide en los siguientes pasos:

· Compilar la herramienta de registro de plug-ins para uso con CRM 2011 incluida en el SDK
· Desarrollar y registrar el plug-in acorde a la lógica de nuestro proceso custom

- En primer lugar abriremos el proyecto de Plugin Registration Tool incluido en el SDK de Dynamics CRM 2011 para compilar la herramienta



- Compilamos el proyecto y establecemos conexión con nuestro servidor mediante el uso de nuestras credenciales:





- Una vez establecida la conexión desarrollaremos nuestro plug-in con código custom para realizar los procesos diseñados
- Mediante el uso de código personalizado en procesos de CRM, el rango de posibilidades para incluir lógica de negocio se amplia de forma muy considerable

- Los pasos para crear un plug in mediante Visual Studio 2010 son los siguientes:

· Crear un nuevo proyecto Class Library
· Agregar las siguientes referencias del SDK del CRM
>> Microsoft.Crm.Sdk.Proxy
>> Microsoft.Xrm.Sdk
· Agregar las siguientes referencias del framework de .NET
>> System.ServiceModel
>> System.Runtime.Serialization

· El ensamblado del plug-in debe estar firmado mediante strong-key para ser desplegado en el servidor CRM 2011



- Codificando la librería para nuestro plug-in:
· La clase que implementemos en nuestro plug-in heredará de la interface IPlugin del SDK

   
 public class MyPlugin: IPlugin



· Esto entonces nos permite implementar el método Execute, el cual, es la función Main() central que el plug-in ejecuta como parte del pipeline de mensajes de CRM

   
 public void Execute(IServiceProvider serviceProvider)


· Este método transfiere el objeto serviceProviderque contiene los detalles entrantes sobre CRM directos desde el pipeline de mensajes de CRM, mediante este objeto podemos derivar el contexto de ejecución del plug-in

- El plug-in de ejemplorealiza una pequeña validación en la creación de un nuevo registro de la entidad Cuenta, mediante el siguiente código:

   
public class MyPlugin : IPlugin
{

    public void Execute(IServiceProvider serviceProvider)
    {
        try
        {
            IPluginExecutionContext context =
                (IPluginExecutionContext)serviceProvider.GetService(
                 typeof(IPluginExecutionContext));

            Entity accountEntityImage = (Entity)context.InputParameters["Target"];

            string accountName = (string)accountEntityImage["name"];

            if (contieneNumeros(accountName))
            {
                string message = "El nombre de la cuenta no puede llevar números";

                throw new InvalidPluginExecutionException(message);
            }

        }
        catch (Exception ex)
        {
            throw new InvalidPluginExecutionException("CRM2011.Example Plug In 
                      --> Execute '" + ex.Message + "'");
        }
    }

    private bool contieneNumeros(string nombre)
    {
        bool contieneNums = false;

        for (int i = 0; i < nombre.Length; i++)
        {
            if (char.IsNumber(nombre[i]))
            {
                contieneNums = true;
                break;
            }
        }
        return contieneNums;
    }
}


- Compilamos la clase y estará lista para ser desplegada como parte integral de nuestro entorno CRM

- Los pasos para el registro y despliegue mediante la herramienta del SDK compilada y testada previamente, son los siguientes:

· Establecer conexión con nuestro servidor CRM 2011
· Registrar nuestro ensamblado
· Registrar los pasos de ejecución para el plug-in








- Las opciones de registro del ensambladode nuestro plug-in consisten en la elección del modo de aislamiento de nuestro proceso, en este caso modo seguro (Sandbox), y el lugar de almacenaje del ensamblado, en este caso en la base de datos de CRM

- En este punto registraremos un nuevo paso para nuestro plug-in





- Las propiedades que debemos configurar para nuestro plug-in son las siguientes:
· Message: es el evento de triggering del plug-in
· Primary Entity: la entidad para la cual se desencadena el plug-in
· Execution order: configurable para la secuencia de ejecución de 2 o más plugins
· Stage: en este caso la validación se realizará post-operation, ya que durante la operación Create (del mismo modo que comparándolo con un trigger de sql disparado para una operación de inserción, la tabla de pre insert no contiene datos), la pre-imagen no contiene datos del registro creado
· Execution mode: en este caso será síncrono, considérese el caso de ejecución asíncrona para casos de ejecución de procesos de carga de datos etc., en los que no se espera una respuesta del plug-in inmediata o los procesos de negocio que realiza el plug-in son de mayor embergadura
· Deployment: elegiremos los tipos de despliegue en los que se ejecutará el plug-in, al menos uno, es este caso Server


- Realizados estos pasos procederemos a probar el funcionamiento del plug-in






_


Desde la comunidad de developers de Dynamics CRM, queremos agradecer sus contribuciones a los creadores de los siguientes blogs y sitios web:

CRM Consultancy


Desde Innovar Tecnologías
esperamos que este documento les sea de ayuda en su desarrollo

Web de la empresa

No hay comentarios:

Publicar un comentario