8/9/08

Integración con MOSS aprovechando DynamicEntity

Y aprovechando también que he tenido que pensar un poco acerca de las entidades dinámicas en CRM para el proyecto CSP de Microsoft, voy a poner mis ideas en orden. Dentro del proyecto se encuentra una integración con MOSS que incluye Forms Server y por tanto InfoPath. Se trata de un gobierno local o ayuntamiento que quiere gestionar on-line una serie de trámites del ciudadano. En nuestra solución, cada trámite se traduce en una entidad personalizada de CRM que tiene una relación 1:1 con un Caso del módulo de servicio. Por el lado de MOSS, tenemos una serie de formularios InfoPath con los datos específicos de cada trámite. Necesitamos una manera de convertir una cosa en otra: un formulario de InfoPath en un registro de una entidad de CRM. Y aquí es donde entran la DynamicEntity de CRM. La SDK nos da mucho juego al fabricar entidades fuertemente tipadas, pero en este caso nos ataría mucho al tipo concreto de entidad. Además, las DynamicEntities permiten ser serializadas en XML. InfoPath también es XML, así que lo único que necesitamos es una transformación XSL para pasar de un lado al otro:

dynamicentities

En el último paso, un Plug-In se encarga de rellenar los campos que falten y que InfoPath no puede conocer. En este caso, se trata del Guid del ciudadano, que no está explícitamente en el formulario de InfoPath. Una de las ventajas que permite esta aproximación es su genericidad: si se añade un nuevo trámite, en principio, no habría que cambiar una sola linea de código. Sería tan sólo añadir la nueva transformación XSL. Este esquema es bastante flexible y se podría aprovechar para generar cualquier tipo de entidad.

1/9/08

Intellisense para JavaScript de CRM

En este video del muy interesante libro CRM as a Rapid Development Plaform te cuentan (entre otras muchas cosas) cómo hacer el desarrollo de lado cliente para CRM un poco más amistoso. A través de la SDK de metadatos se descarga todo el conjunto de nombres de entidades y atributos y se genera un fichero JavaScript con sus definiciones.

Muy ingenioso y puede ahorrar bastantes quebraderos de cabeza por un literal mal escrito.