Mis aventuras con el CRM de microsoft

Ahora que estoy de lleno metido en el mundo del CRM y me han salido varias cosas que hacer, mejor las ordeno para el futuro lejano..

Lo primero son los plugin del CRM… existen 2 tipos (hasta el momento que me ha tocado hacer) plugin aplicados a entidades y plugins que corren sobre los workflow como actividades. Entiendo que el CRM ocupa Workflow Foundation, para sus workflow, por lo que si saben algo de eso por ahi pueden empezar.

Para hacer un plugin de entidad… bueno deben bajar el SDk del CRM y utilizar las siguientes referencias

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Workflow;

using Microsoft.Xrm.Sdk.Query;

using Microsoft.Xrm.Sdk.Client;

y heredar la interfaz IPlugin…

public class PluginCotizacion : IPlugin

para el caso de los plugin que se ejecutan en el workflow se debe heredar de la clase abstracta

CodeActivity

public class CalcularDias : CodeActivity

Para utilizar el contexto de ejecución del plugin se requiere lo siguiente.

en ambos caso hay que implementar el método

 public void Execute(IServiceProvider serviceProvider)

para el caso del plugin de Entidades y para el caso de un plugin de workflow

 protected override void Execute(CodeActivityContext executionContext)

como notarán se implementa de forma distinta

Para acceder al WebService del CRM mediante el contexto se puede hacer de la siguiente forma.

 IPluginExecutionContext context =

(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

IOrganizationServiceFactory serviceFactory =

(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

IOrganizationService servicio = serviceFactory.CreateOrganizationService(context.UserId);

y para el caso de un plugin de workflow de la siguiente forma

 IOrganizationServiceFactory factory = executionContext.GetExtension<IOrganizationServiceFactory>();

IOrganizationService service = factory.CreateOrganizationService(null);

Con esto ya tenemos acceso al WebService del CRM y podemos hacer CRUD de las entidades del CRM.

Cómo  registrar el plugin y cómo obtener las clases que representan las entidades, lo dejo para otra entrada, pero básicamente se hace con el plugin registration tool del SDK del Crm y con el crmcvcutil.exe…

ambos están en la carpeta bin del SDK…

suerte.

Ingenieros???

Meditando, en mi super diplomado, acerca de  que es ser Ingeniero, y me lo cuestione bastante…

Si bien, no creo ser el mejor super, ultra, hiper Ingeniero, creo que al menos entiendo y comprendo que significa serlo…. me ha tocado entrevistar a una gran cantidad de “Ingenieros”, para un proyecto que llevo y me di cuenta de que, como dijo un gran profesor que tuve, son solo “computines”…. si bien saben, cosas técnicas, no saben analizar y plantear matemáticamente un problema y solucionarlo, lo cual, según mi parecer es la base de ser Ingeniero, independiente de la especialidad que uno tenga.

Lamento escribir estas líneas, pero es necesario, ya que hay tantos de estos personajes dando vueltas, que han desprestigiado el oficio y el arte de la Ingeniería.

Con el super diplomado, comprobé empiricamente, que solo se forman “computines”, que saben muchos comandos y aprenden cosas de memoria, y que si le cambias un poco las condiciones, no saben que hacer y como salir adelante… a los mas tristes ni siquiera les suena google como para buscar que hacer… y   para colmo aprenden de otros “computines”…. como el de hoy que solo habla de Oracle… como si fuera la piedra filosofal, sin darse cuenta de que si el diseño de su base de datos su motor de base de datos tan lindo y caro solo es un cacho…

Para finalizar, me quedo con una reflexión… quizas el que existan estos computines…hacen que un Ingeniero mediocre como yo, se vea brillante… aun así … creo que esta mal y algo se debe hacer.

saludos.