03.31.08
Frase del Día al Respecto de la Construcción de Software
“El software es como las catedrales, primero lo construimos, luego rezamos.”
Gracias David.
Un saludo.
Miguel.
Ingeniería de Software, Gestión de Proyectos, Programación, BPM, Arquitectura de Software, .NET, J2EE
“El software es como las catedrales, primero lo construimos, luego rezamos.”
Gracias David.
Un saludo.
Miguel.
Para los programadores que trabajáis bajo el soporte de un framework o de un conjunto de librerías de terceros os habréis encontrado en alguna ocasión que a la hora de utilizar alguno de los métodos que os brinda el conjunto de clases, alguno de ellos os lo indica como “Obsoleto” o “Deprecated”.
Los métodos obsoletos son aquellos que han caido en deshuso y que el responsable de desarrollo del framework quiere, por algún motivo (reubicación del método en otra clase, cambio del nombre del método, cambio de los parámetros, nuevos métodos más eficientes…), eliminar en futuras versiones.
Normalmente un proveedor que pasa a indicar sus métodos como obsoletos lo suele hacer de alguna o varias de las siguientes formas:
1) Incorpora una descripción en la documentación indicando que el método está obsoleto y que en futuras versiones será eliminado.
2) A la hora de compilar la aplicación aparece una alerta (warning) indicando que el método está obsoleto. Nos avisa el compilador pero la aplicación sigue compilando.
3) Al utilizar el método obsoleto la aplicación directamente no compila.
Tras la teoría, unos ejemplos de cómo declarar métodos obsoletos con C#
Primero, cómo declarar una clase como obsoleta, dando warning recomendando usar otra clase en lugar de esta
[System.Obsolete("usar clase ClaseNueva")]
class ClaseAntigua
{
public void Metodo() { }
}
Segundo, cómo declarar en la nueva clase un método obsoleto, dando error de compilación si se usa un método en concreto y recomendando el uso de un método alternativo
class ClaseNueva
{
[System.Obsolete("usar MetodoNuevo", true)]
public void MetodoViejo() { }
public void MetodoNuevo() { }
}
Tercero, un ejemplo de uso de las clases
// Genera dos alertas
// (una por la instancia a la clase y otra por la llamada al constructor)
ClaseAntigua antigua = new ClaseAntigua();
// No genera ni errores ni alertas
ClaseNueva nueva = new ClaseNueva();
nueva.MetodoNuevo();
// Genera un error, terminando la compilación
nueva.MetodoViejo();
Saludos.
Miguel.
Hola a todos,
En esta ocasión os presento un documento word donde podéis tener una visión completa de toda la aplicabilidad de WorkFlow Foundation utilizado bajo el Framework 3.5 de .NET.
Es una visión a alto nivel, pero creo que a estas alturas suficiente para seguir profundizando en todo lo que WF nos puede ofrecer de ahora en adelante.
Introduciendo WF en el Framework 3.5
Saludos.
Miguel.
Lo lógico sería pensar que la felicidad se mide con la misma vara de medir que el triunfo, pero la complejidad de la mente humana hace que todo sea mucho más complicado.
Paradójicamente es más feliz el que gana la medalla de bronce que el que gana la de plata. El que gana la medalla de plata se compara con el que ha ganado la de oro, lo envidia y se atormenta por lo cerca que ha tenido el triunfo, casi lo ha tocado, pero no lo ha conseguido. Haber estado tan cerca le lleva a pensar que podría haber sido el mejor, haber conseguido la medalla de oro, y la frustración suele prevalecer al gozo del triunfo sobre todos los que llegaron después.
En cambio el que gana la medalla de bronce se mide con el que le sigue, el pobre que ha quedado en cuarto lugar y no tiene ninguna medalla, ningún reconocimiento a su esfuerzo. Se siente dichoso de haberlo batido y haber llegado al podio. Existen numerosos estudios que recogen esta curiosa paradoja y que refuerzan la idea de que, para ser felices, es preferible tener en cuenta nuestros propios triunfos y no medirnos con los que han conseguido superarnos.
Saludos.
Miguel.
Para empezar a entender toda la arquitectura de la gestión de Persistencia, Tracking y demás con WorkFlow Foundation he encontrado otro ScreenCast que puede seros útil.
Un detalle muy importante a la hora de trabajar con flujos es que cada uno de las actividades que la conforman puede permanecer en espera horas, días o meses. Es inevitable que necesitemos una infraestructura que nos provea de herramientas que permitan almacenar el estado de los flujos que hayamos iniciado, las actividades que se hayan lanzado, etc. Si no, en caso de parar nuestra aplicación siempre perderíamos cual era el estado de cada una de las actividades lanzadas.
Os dejo el link.
http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20060323WWFIH/manifest.xml
Saludos.
Miguel.
Metidos ya de lleno con los motores de flujo, os presento un Motor de Flujo no Microsoft, W4 Workflow.
W4 es el motor de WorkFlow de la empresa francesa W4Global (http://www.w4global.com). En concreto la imagen corresponde al W4BPMStudio para experto técnico. En esta versión, W4 provee de la herramienta W4 Studio en su versión 6.2, mediante la cual podemos dibujar los flujos y de un panel de administración donde se nos ofrece soporte para crear roles y usuarios, al mismo tiempo que nos permite llevar un control de los flujos y actividades que se han iniciado, así como su estado actual.
Un vez los flujos están creados en el motor, somos capaces de interactuar con ellos a través del API que nos provee el propio W4 (tiene versión J2EE y .NET). Disponemos de múltiples clases que nos permiten conocer las actividades, procedimientos, variables, usuarios y roles, así como interactuar con ellos. Mediante dicho API podemos a través, por ejemplo, de una aplicación web o de escritorio, llamar al motor de flujo e interactuar con él.
Saludos.
Miguel.
Seguimos avanzando algo más con los conceptos del post anterior al respecto de WorkFlow Foundation.
En el ScreenCast de ayer vimos ya conceptos básicos. Actividades de código, modo debug, aplicaciones de consola con workflow…
Hoy profundizamos algo más, en este lugar os dejo el link a dos ScreenCast (primera y segunda parte). Veréis que el primer trozo de la primera parte repite el proceso de creación de una actividad de código, para luego reemplazarla y empezar a usar las librerias de actividades, las propiedades en las actividades, etc. Incluso se habla del detalle de cómo reemplazar el icono que muestra una actividad en concreto.
En la segunda parte veréis algo muy interesante, la posibilidad de relacionar validadores a una actividad, pudiendo conseguir que en tiempo de compilación se valide si una actividad está bien o está mal según el código que hayáis relacionado.
Primera Parte: http://channel9.msdn.com/showscreencast.aspx?postid=381349
Segunda Parte: http://channel9.msdn.com/showscreencast.aspx?postid=388272
Saludos.
Miguel.
Para los interesados en el tema, abro una nueva rama en el blog dedicada a los motores de flujo.
En esta ocasión empezamos con un ScreenCast en inglés de 10 minutos donde se nos muestran una serie de conceptos básicos de Workflow Foundation.
Para los que queráis empezar a meter la cabeza en el mundo, os puede dar una idea básica de cómo empezar
http://channel9.msdn.com/showscreencast.aspx?postid=122943
Saludos.
Miguel.
Para los acostumbrados a trabajar con PL-SQL y la herramienta TOAD, lo de lanzar debugs contra procedimientos almacenados es algo totalmente natural y, por supuesto, muy pero que muy útil.
Para los que trabajan con Transact-SQL y Visual Studio 2005 no es algo tan natural. Muchos no conocen que a través de Visual Studio 2005 podemos hacer debug sobre procedimientos almacenados, y no sólo eso, si no que también somos capaces de almacenar automáticamente los scripts que vamos generando en SourceSafe, manteniendo así la trazabilidad completa de los cambios realizados contra la base de datos.
Es más común utilizar el Management Studio de SQL Server 2005 y así interactuar contra la base de datos que crear un nuevo proyecto de base de datos en Visual Studio 2005 y desarrollar desde allí. ¿Pero qué ocurre con todos los cambios que podemos ir introduciendo en el modelo relacional? Nuevas tablas, modificaciones sobre las tablas ya existentes, nuevos procedimientos almacenados, inserción de datos base en las tablas… ¿Y cómo nos lo montamos para almacenar todos los scripts de base de datos a ejecutar cuando queramos actualizar de una versión a otra de nuestra aplicación?
Los proyectos de base de datos de Visual Studio 2005 nos ayudarán a todo esto, incluyendo además la posibilidad de realizar debug sobre los procedimientos almacenados.
Os dejo un link donde se explica perfectamente cómo llevar a cabo todo esto, os recomiendo de verdad utilizar este tipo de proyecto, ahorraréis mucho tiempo, mantendréis toda la trazabilidad en SourceSafe de forma automática y claramente aumentaréis vuestra productividad.
http://www.informit.com/articles/article.aspx?p=31764&seqNum=1
Un saludo.
Miguel.
En el gremio de la informática y del desarrollo de software utilizamos muchas palabras de forma totalmente normal, común y hasta a veces gratuita, pero, ¿conocemos toda la extensión de la palabra?
Evento (fuente http://www.rae.es)
(Del lat. eventus).
2. m. Eventualidad, hecho imprevisto, o que puede acaecer.
3. m. Cuba, El Salv., Méx., Perú, Ur. y Ven. Suceso importante y programado, de índole social, académica, artística o deportiva.
1. locs. advs. En previsión de todo lo que pueda suceder.
2. locs. advs. Sin reservas ni preocupaciones.