Las reglas en Workflow Foundation

Supongo que mucho ya lo habréis notado pero en este blog no solamente escribo de Windows Mobile y Compact Framework, últimamente vengo también escribiendo de Windows Workflow Foundation, la verdad es que desde que probé las primeras betas de WF me he ‘enamorado’, no solamente por todo lo que nos ofrece de nuevo sino por lo bien que está construido el model, esto claro está es una opinión personal. Ya son varios los cursos que he impartido sobre WF y alguna que otra charla en Eventos de Microsoft como en el Code Camp hablando del modelo de extensibilidad de los diseñadores de Workflow o en Open Day 2006 sobre ‘internals’ del servicio de persistencia en Workflow Foundation.


Otro de los servicios ofrecidos por la capa de Runtime es el servicio o motor de ‘reglas’, en un principio parece algo sencillo de ver… pero como en casi todo lo que trae Workflow Foundation es una verdadera gozada meterse dentro. Son varios los modelos de cambio y validación que tenemos, delegándolos en el motor, basando la validación y revaluación en atributos… de forma explícita con Update y Halt…. Bueno esto daría para muchos y muchos Post pero no se cuanto de interesados estáis en estos temas o sea que me voy a hacer de rogar y dejar que me pidáis más info… J.


Como ejemplo de lo que nos ofrecen las reglas de WF os adjunto una pequeñita aplicación que usa las regas de WF para validar objetos, que no tienen que ser precisamente Workflows, sí, habéis oído bien, las reglas no solamente sirven para workflows. En este ejemplo se usa el editor de reglas de Windows Worflow, este editor al igual que muchas otras partes de WF es un PlugIn que podemos usar en nuestras aplicaciones. Como veréis es un ejemplo sencillo lo único que se pretende es ver como poder validar y ejecutar una regla para un objeto Persona, el cual dispone de una propiedad booleana MayorDeEdad y una propiedad Edad, podremos crear por lo tanto una regla tipo SI Edad > 18 Entonces MayorEdad=verdadero SINO MayorEdad=falso y proceder a validarla y ejecutarla y ver como dependiendo de la edad la propiedad MayorEdad ser establece de forma correcta.


La aplicación guarda automáticamente las reglas en un archivo .rules para poder cargarlas posteriormente y ejecutarlas sobre el objeto Persona….


Un par de imágenes para verlo mejor





Espero que os guste y si queréis saber más, preguntar J ¡!!!!


Unai Zorrilla Castro

Sql Server Compact Edition

Como anunciaba nuestro amigo Alejandro Mezcua en un post suyo, ya tenemos a nuestra disposición Sql Server Compact Edition, como muchos sabréis esto no representa en si un cambio en el motor de la edición móvil pero si en la forma en la que podemos usar y distribuir el motor de bases de datos. Anteriormente, con Sql Ce Mobile 3.0 podíamos hacer uso de las bases de datos en aplicaciones escritorio siempre que tuviéramos instalado en el equipo Visual Studio 2005 y Sql Server 2005, sin embargo ahora ya podremos hacer uso de las bases de datos de Sql Server Compact Edition sin necesidad de que los usuarios tengan en sus equipos de escritorio VS y Sql Server. Otra de las ventajas que se nos presentan es que es un paquete redistribuible mediante ClickOnce con lo que se nos facilitará mucho el desplegado de las aplicaciones que usen este tipo de paquetes.

Para las personas que ya tenían instalado, como yo, Sql Mobile 3.0 es necesario tener en cuenta una sería de comportamientos:

  • Los cuadros de diálogo de Visual Studio 2005 siguen poniendo Sql Mobile 3.0 related
  • Puesto que la instación de Sql Mobile Compact Edition instala en la GAC los componentes necesarios Visual Studio 2005 utiliza estos en tiempo de ejecución ya que la GAC prevalece sobre el directorio de instalación de Visual Studio 2005.
  • En VS2005 con SP1 la interfaz de usuario ya muestra Sql Compact Edition
  • En Sql Server 2005 la interfaz de usuario muestra Sql Mobile 3.0 related
  • En tiempo de ejecución usa Sql Mobile Compact Edition
  • En Sql Server 2005 SP2 los elementos de la interfaz de usuario mostrarán Sql Mobile Compact Edition

Me gustaría destacar además alguna serie de características nuevas que tenemos con Sql Compact Edition:

  • |DataDirectory| para obtener la ruta del ejecutable. Anteriormente siempre usábamos el método GetExecutingAssembly de la clase Assemby para obtener la ruta del ejecutable y poder crear la ruta a la base de datos de una forma sencilla, sin preocuparnos realmente donde se instalaba. Ahora con DataDirectory ya tenemos este trabajo hecho.
  • Compatibilidad con ClickOnce, para obtener el paquete redistribuible de Sql Compact Edition solamente tenemos que dirigirnos al enlace y descargar el archivo SqlEv31ClickOnce_EN.zip, si tienes algún problema con la integración con ClickOnce te recomiendo el siguiente enlace.

Un saludo

Unai Zorrilla Castro

Programancia101 está en el aire

Hace ya tiempo que venimos planeando nuevas aventuras en Geeks, una de ellas es Programancia101 el blog del crack y buen amigo Ricardo Varela, que nos deleitará con retos sobre programación, sin duda, os animo desde aquí a seguir las aventuras de este “Chico Maravilla”.

Bienvenido Ricardo, y para los demás estar atentos porque se aproxima un concurso precisamente en Programancia101 donde pondremos vuestra mente a jugar….

 

Saludos

Unai Zorrilla Castro