05.29.09
Posted in Bases de Datos, Herramientas at 3:46 pm by Miguel
Para los desarrolladores que trabajan con base de datos Oracle, el TOAD, la ranita para muchos, es una herramienta más que conocida para trabajar contra el gestor de base de datos.
Con la versión básica de desarrollador disponemos de un entorno que permite realizar típicas operaciones de administración de la base de datos, así como la creación y edición de procedimientos almacenados.
Pero, en dicha versión se echan en falta otro tipo de funcionalidades avanzadas, como es la posibilidad de definición y mantenimiento del modelo de datos a través de diagramas entidad relación. A medida que se manipulan los diagramas, estos van modificando a bajo nivel la estructura real de la base de datos, lanzando los scripts de creación y modificación necesarios.
De esta funcionalidad se obtienen ventajas significativas tales como:
- Aumento de la productividad en la construcción. A medida que se está definiendo el modelo entidad-relación en las fases de análisis, la estructura real pasa a estar disponible de forma inmediata.
- Documentación. No es necesario utilizar otros modeladores para representar el entidad-relación, la propia definición ya forma parte de la documentación técnica.
- Generación automática de scripts de cambio. Ante cualquier modificación en el modelo podemos optar por solicitar los scripts de cambio para poder lanzar las actualizaciones en otro entorno.
¿Y qué herramienta nos ofrece todo esto? Pues tal como marca la entrada del post, la versión Data Modeler de TOAD.
http://www.quest.com/Toad-Data-Modeler/
Saludos.
Miguel.
Permalink
05.26.09
Posted in BPM at 7:55 pm by Miguel
Tras publicar unos meses atrás la primera parte del artículo, comenzamos con la segunda.
Reenvíos
Las tareas pueden ser asignadas en un momento dado a un usuario en concreto, y, a posteriori, por necesidades del negocio asignarse a usuarios diferentes del inicial. Normalmente a funcionalidades de este tipo no suelen tener acceso los usuarios con nivel básico, sino que se encuentran delegadas a usuarios con nivel de administración o a gestores de grupos de usuarios (gestores normalmente asociados al negocio de la aplicación).
Normalmente cuando una tarea es reenviada a otro usuario, el BPM no se limita a cambiar la asignación de propiedad a la tarea (a quien le está asignada un momento dado), sino que se realiza una copia de la tarea inicial y posteriormente crea una nueva tarea la cual pasara a la propiedad del usuario al que se ha reasignado. Finalmente, la tarea inicial pasa a un estado especial (“Reenviado” por ejemplo) y si cuenta con algún tipo de campo de observaciones, se indica de forma automática cuál es el identificador de la tarea asociada al reenvió y que se acaba de generar.
El sentido de todo esto es contar con la trazabilidad completa de lo que ha ocurrido. Si el BPM se limitara a cambiar el usuario propietario, nunca sabríamos cuales han sido los sucesivos cambios que ha sufrido una tarea.
Delegaciones
Las delegaciones son una serie de reglas que automatizan los reenvíos de tareas a partir de un conjunto de requerimientos establecidos.
Por ejemplo, si tenemos una actividad en nuestro flujo que la realiza un usuario en concreto, podría darse el caso de que de forma temporal queramos que en lugar de realizarla dicho usuario lo hago otro (por ejemplo porque el usuario inicial estaría de vacaciones en ese periodo de tiempo y queremos que las tareas que se le asignen no queden esperando a que vuelva).
En el caso de que se cumpliera la condición, automáticamente la tarea se reenviaría al usuario de destino, sin necesidad de que la operación deba hacerse de forma manual.
BAM
El BAM (Business Activity Monitoring) es el panel de control a partir del cual un usuario administrador es capaz de obtener información de explotación a partir de los resultados generados a partir de la instanciacion de las plantillas y actividades existentes en el motor, a modo de report. Los indicadores típicos muestra el número de instancias por plantillas, los cuellos de botella en diversas actividades, o la eficiencia (relativa) de los usuarios a la hora de completar las tareas. Lo de relativo viene al hilo de que para poder conocer la eficiencia real de un usuario no nos va a bastar la información contenida en el motor, ya que para un resultado real vamos a necesitar conocer (por ejemplo) cuántos días ha trabajado ese año, y mucho me temo que dicha información va a partir de otro modelo de datos referenciado a nuestro propio negocio y no al del motor.
De ahí que bajo mi punto de vista, en la mayoría de ocasiones el BAM que ofrecen los BPM es insuficiente, ya que nos dan una visión muy superficial de la realidad, y responden a preguntas demasiado concretas. Cuando normalmente para responder a las preguntas del conocedores del negocio vamos a tener que mezclar la propia información de negocio con el resultado contenido en el modelo de datos del motor, y esto, no suele ser precisamente sencillo.
Hasta aquí la segunda parte, en la tercera, intentaremos abordar de forma directa el concepto de Bandeja de Tareas, que no es algo que conceptualmente ofrezca el BPM, pero que es muy común su uso a partir de la información que el propio BPM alberga. Hablaremos entre otras cosas de funcionalidades asociadas a la bandeja, así como de algunos problemas o decisiones de arquitectura típicos a la hora de querer mostrar en la bandeja de tareas información que no es propia del BPM y que forma parte de nuestro negocio.
Saludos.
Miguel.
Permalink
Posted in Estándar Codificación at 10:50 am by Miguel
Libero la v1.3
La idea de incoporar un documento de Estándar de Codificación y Trabajo, empezó hace cosa de un año. El objetivo principal era el de plasmar un pequeño ejemplo de cómo definir un documento de este tipo y qué partido se le podía sacar, así como pequeñas ideas de qué elementos son “estandarizables” dentro del desarrollo de una aplicación.
El documento intenta cumplir un objetivo más didáctico que otra cosa, espero que os sirva para aportaros algunas ideas.
Saludos.
Miguel.
Permalink
05.24.09
Posted in Herramientas, Pruebas at 10:37 pm by Miguel
Uno de los componentes introducidos en Visual Studio 2008 en el paquete básico, son las pruebas unitarias, de las cuales hablamos en un anterior artículo hace unos días.
Las pruebas unitarias, entre otras cosas, nos ayudan a garantizar la calidad de los desarrollos realizados de forma cómoda y, lo que es más importante, automática. Una vez se ha definido la prueba, esta puede ser lanzada desde el panel de control pertinente infinidad de veces, garantizando así que los resultados que retorna la aplicación corresponden a los esperados.
Otro de los componentes asociados, aunque desgraciadamente no incluido en el paquete básico de Visual Studio 2008, son los test web. Mediante los test web podemos definir, a partir de una página “aspx” un conjunto de acciones que, tras quedar grabadas, pueden lanzarse infinidad de veces, para comprobar que el funcionamiento de los desarrollos que se han realizado, son válidos.
Por lo tanto, sumando la capacidad de las pruebas unitarias, y las pruebas web, contamos con un conjunto de herramientas que ayudan a “garantizar” la calidad en un porcentaje elevado, sobre todo para evitar los temidos “daños colaterales” producidos ante cualquier cambio realizado en el código de nuestra aplicación. Todo ello además, una vez definidas las pruebas, de forma automática. Definir y lanzar. El ahorro en tiempo y el mantenimiento de la calidad es más que significativo.
Como muestra, un botón, adjunto al post una solución que prueba mediante un Test Web una página aspx que cuenta con un botón que realiza una inserción en base de datos.

La primera acción que hemos realizado es la de grabar el test sobre la página definida.

Una vez grabada, tenemos la posibilidad de lanzarla n-veces.

Incluyo a continuación el link a la solución:
Proyecto Web Test
Saludos!
Miguel.
Permalink
05.22.09
Posted in Despliegues, Herramientas at 5:51 pm by Miguel
Una de las características de los proyectos de tipo “Sitio Web” de Visual Studio 2008 es que permite la pre-compilación de la web mediante una serie de características más avanzadas de las que provee un proyecto web.
Por ejemplo, permite hacer cosas como generar una dll por cada una de las carpetas de la aplicación o incluso generar una dll independiente por cada página y control de usuario. Dependiendo un poco de las necesidades que tengáis para vuestros despliegues os puede resultar interesante utilizar una de las combinaciones que la pre-compilación ofrece. Teniendo en cuenta que además lograréis algunas características avanzadas en el despliegue como son:
1) Mejor respuesta ante las peticiones web. No tiene mucho misterio, si habéis precompilado antes, cuando el IIS reciba la petición no necesitará compilar la página solicitada para mostrarla al usuario, por lo que los tiempos de respuesta serán mejores.
2) Nivel de seguridad. Precompilando estáis ocultando el contenido de vuestros archivos Code-Behind, por lo que nadie podría conocer cómo está funcionando vuestra aplicación por dentro y/o modificar el funcionamiento de la misma.
3) Mayor flexibilidad en el despliegue. Con las diferentes combinaciones de publicación que permiten o generar dll por carpeta o por página y control, podéis lanzar actualizaciones de vuestros sitios web sin necesidad de desplegarlos enteros nuevamente, si no sólo las dll correspondientes a las páginas o controles que habéis modificado (esto les gusta mucho normalemente a los departamentos de sistemas encargados de realizar los despliegues).
Además, otra capacidad muy interesante se nos ofrece con la pre-compilacion, que es el no permitir que el sitio sea actualizable (allow this precompiled site to be updatable). Si marcais esta opción no se va a dejar modificar el código de presentación asociado a aspx y ascx. Es más, veréis incluso que los archivos ascx no se han generado, y que los aspx sí que están pero si los abrís únicamente veréis que guardan en su interior una referencia a la dll que los representa. Esta solución es fantástica si lo que queréis es evitar a toda costa cualquier modificación también en la capa de presentación.
Pero después de todo esto, algo se nos queda en el tintero, y es la posibilidad de poder asociar el resultado de la precompilación directamente a un proyecto de tipo Web Setup. Para ello disponemos de la herramienta Web Deployment Project (plugin para Visual Studio), que nos aportará las facilidades que ya hemos tratado más esta última. Es tan sencillo como lanzar el build del sitio web, a continuación lanzar el build del Web Deployment Project asociado al sitio web, relacionar el output del proyecto de deployment al proyecto de web setup, compilar el setup, y óle, ya tenemos un msi con el contenido pre-compilado de nuestra web siguiendo uno de los métodos estándar que hayamos elegido.
Os dejo un pequeño manual bastante claro de uso para la versión de Web Deployment Project para Visual Studio 2005. El único problema es que aquí no se explican nuevas capacidades de la versión 2008 como la de lanzar el deploy directamente sobre un site de IIS, pero de todas maneras dejo el link al manual porque a pesar de todo se describe muy claramente los pasos a seguir.
Link a manual Web Deployment Project para Visual Studio 2005
Descargar Web Deployment Project para Visual Studio 2008
Permalink