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