:La potencia de los Patterns aplicada

Qué se entiende por Patterns? La definición original de la "Banda de los Cuatro" (Gang of Four), Gamma, Helm, Johnson and Vlissides, en su libro "Design Patterns"

A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.
[Design patterns] solve specific design problems and make object-oriented designs more flexible and elegant, and ultimately reusable. They help designers reuse successful designs by basing new designs on prior experience. A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them

Nada más convincente que Websydian para demostrar el valor del uso de patterns. Un pattern, un patrón, es un esquema aplicable a la solución de un problema. La idea de los patterns es la de aplicar soluciones bien definidas a problemas estudiados, simplificando la construcción del software. Plex basa todo su trabajo en el principio de la reutilización y la herencia. Comenzó, en su primera época bajo el nombre de Obsydian, usando estos principios bajo el nombre de "Clases". El paso a la utilización de Patterns no significó cambios en la base en que Plex se sustenta (herencia, encapsulamiento, reuso), pero sin embargo a poco de usar uno u otro sistema de conceptos, está claro que no son lo mismo, y que el enfoque basado en el concepto de Patterns es superior. La discusión acerca de la transición hacia el uso de Patterns en Plex es un debate que ocupó algún tiempo algunos años atrás, pero hoy sólo existen dudas en aquellas compañias que tienen una inversión grande instalada en el primer sistema de clases creadas para Obsydian. En otro sitio dedicaremos algo de tiempo a las acciones a tomar para pasar de uno a otro sistema, transicionalmente. No obstante, se pueden afirmar dos puntos: El repositorio de Patterns permite soluciones superiores, y el paso de uno a otro sistema es posible sin mayores dificultades.

Qué es Websydian? Un conjunto de Patterns diseñados para resolver la presentación y el back end de una aplicación en la Web, construída con Plex y para Plex. Es una vía rápida para pasar una aplicación modelada con Plex a su explotación en Internet, o cualquier vía que use el protocolo HTTP.
Tan simple como agregar un "is a" a una entidad definida en un modelo de Plex. Y desde allí, hasta desarrollos más y más complejos. Actualmente es posible usar Websydian para una aplicación Web típica, o para Wap, o manejarla como un Servicio Web, usando SOAP y XML. La gran ventaja que ofrece es que el diseño está hecho, con lo que el grado de conocimiento requerido y la inversión necesaria para adquirirlo bajan radicalmente. Con este conjunto de Patterns es posible poner a trabajar un proyecto en tiempos sustancialmente bajos, y lo que es mejor aún, estrechamente integrados a las aplicaciones preexistentes en las que se basa, mediante Plex. Hablar de decenas de miles de dólares (o euros), es algo más que probable cuando se encara un desarrollo de este tipo, que además requerirá la utilización de un equipo con nuevas habilidades, y que desatará la pesadilla de la administración del contenido, y sus contínuas modificaciones. Es aquí donde la importancia de un repositorio integrado, un modelo que propaga sus cambios inmediatamente, y que es flexible a la hora de ser modificado, hace la diferencia.

Dónde conocer Websydian
Softdesign La empresa que creó Websydian, comenzando por un pequeño grupo de desarrolladores, en Dinamarca. Migrando su nombre y su sitio al de Websydian, hoy más conocido que la empresa que lo creó.
Los patterns de Websydian El conjunto de patterns no sólo incluye el marco básico, sino también soluciones específicas terminadas, como el carrito de compras
La documentación de los patterns Completa referencia en línea de los productos, y de las versiones anteriores
Las preguntas frecuentes (FAQs) Guía básica para los problemas más frecuentes que pueden encontrarse. A partir del área de Soporte, varias formas de obtener información. Existe más información, pero requiere login. Hay un boletín al que es posible suscribirse.
La experiencia de Lucio Gayosso disponible Lucio aporta un buen número de sugerencias para el diseño con Websydian. El sitio de Lucio está migrando, y se actualizarán los enlaces cuando suceda.
Michel Weber en Alemania Gracias a Leslie Franke encontré la página, con información útil para la configuración de Websydian
Websydian en el Foro de Usuarios EDGE mantiene un hilo de discusión abierto sobre Websydian específicamente

Características destacables/Servicios disponibles

Server Side Scripts
Posibilidad de usar Websydian en conjunto con ASP o JSP, configurando un Servidor Web para la aplicación, y un Servidor Web para los scripts. Detalles de implementación en la documentación.
Servicios Web
Posibilidad de usar patterns para incorporar Servicios Web con SOAP a Websydian. La Librería Wsysoap permite desarrollar cualquiera de las dos partes (o ambas) involucradas en un servicio Web; La parte que inicia la solicitud de un servicio (Suscriber), y la parte que acepta la solicitud del servicio (Publisher), agregando una capa más a las páginas ya desarrolladas con Websydian. Un XMLHandler agrega la funcion de creación de un documento XML que es intercambiado. Detalles de su implementación, y un ejemplo de uso en la documentación en línea, junto a una descripción de las partes que componen el patrón usado para construír el servicio
J2EE
Patterns para la inclusión de Websydian en J2EE. Variante posible desde la apertura de la arquitectura distribuida (DWA) elegible como alternativa de mayor alcance que la arquitectura clásica previa (CWA). En el modelo DWA, la arquitectura de las aplicaciones está distribuida en tres módulos que interactúan y permiten escalabilidad y variabilidad de plataformas: Un Servidor Websydian del Repositorio de Aplicaciones, Un Servicio de atención de solicitudes de cada aplicación, y un Relay Service que actúa como mediador entre el requerimiento de un Web Browser y el Servicio de Websydian. Websydian usa un modelo de dos capas en el servidor, un contenedor Web, y un contenedor de EJB: la aplicación (J2eeEventDispatcher, EventHandlers, y PageGenerators) implementada en el J2EE Web Container con un J2eeProxy Servlet; y el acceso a los datos construído a través de EJBs de Plex, y un Proxy EJB de Plex. Una descripción de las partes que componen el patrón puede consultarse en el sitio de Websydian.
Aplicaciones Wap
Websydian Enterprise WAP ofrece un conjunto de patrones destinados a desarrollar aplicaciones WAP para telefonía y otros medios móviles inalámbricos. Es posible extender a WAP las páginas básicas de Websydian (Es decir, la extensión WAP puede aplicarse a modelos que se hayan construído con los patrones básicos de Websydian). Puede consultarse en la documentación en línea, la arquitectura del soporte de Websydian a WAP.
Páginas con JScript
Pattern para incluír soporte de Jscript. Si bien el uso de JScript es simple de incluír a mano, el patrón aumenta la funcionalidad del patrón generador de páginas, permitiendo automatizar la generación del código correspondiente a inicializaciones de Campos tipo List, Combo, CheckBox, o Radio.
Generadores XML
Constituyen un caso de especialización de un patrón más básico: el generador de Páginas HTML. En dos sucesivos pasos de especialización, el patrón permite generar documentos XML en su primer nivel, y descarga de archivos usando XML en el segundo.
Manejo de Sesiones y Usuarios
Las Librerías Wsysess y Wsyuser permiten agregar patrones que permiten aplicar funcionalidad de manejo de sesión y seguimiento de usuarios que puede partir de un esquema simple, y especializarse al nivel de complejidad que se desee. Cada usuario mantiene una sesión independiente, es posible regular el timeout que se admite, es controlable el ingreso de usuarios desde distintas IP simultáneas, se mantiene registro del estado de sesión, se mantiene registro de la hora de ingreso a la sesión, y otras facilidades.
Control de Integridad
El conjunto de patrones de Wsyinteg permite el control de integridad de los datos que son enviados en formularios, evitando que la página sea alterada desde el cliente. Se utiliza el algoritmo MD2 para firmar digitalmente la información intercambiada, con una firma de 128 bits. El uso de esta facilidad, junto con el manejo de sesiones y usuarios, permite construír aplicaciones de excelente nivel profesional, rápida y fácilmente.
Estructura tipo Lista
Wsystructure es un patron para manejar listas: la estructura tipo Lista fue desarrollada en Plex, hacia la versión 3.0 con el patrón Bstructure. Este es un caso de especialización a una estructura expuesta como documento HTML, pero con el mismo sentido: obtener listas o estructuras complejas, con facilidades para recorrerlas y asegurar su integridad (no referencias circulares).

Tips en el uso de Websydian

Paginas Parent/Child

Sin olvidar que es posible usar Frames o no, existen dos estilos básicos disponibles para el diseño de páginas: Disposición de los datos en formato de detalle, y en formato de grilla. No obstante, un despliegue más complejo de los datos se puede obtener con el concepto de las páginas child. Este es un patrón que permite desplegar un subformato de datos dependiente de una region Detail o Grid. Así, se consigue una página que es el resultado de la combinación de dos distintas, con presentación de datos tan variada como sea necesario. Es posible aplicar este concepto tanto a la creación de áreas de grilla dependiente de otra tipo grilla o detalle, o también para la creación de listas tipo ListBox o Combo
Existe información adicional en la documentación de Websydian, por lo que aquí se describirá sólo aquello que no era suficientemente explícito en tal documentación, respecto a la implementación.

Estos son los pasos

Desarrollo gráfico del caso:

Figura 1. Código original generado por Websydian para la página Parent

Pagina Parent antes de los ajustes

Figura 2. Apariencia inicial de la página parent:

El marcador P233EXT representa la llamada al generador de la página child, que debe ser reubicado manualmente.

Presentacion inicial de pagina parent

Figura 3. Código inicial de la página Child
El código de la página child es económico, y sólo abarca la fila child.

Codigo inicial de la pagina child

Figura 4. Código modificado de la página parent:
El marcador inicial con el nombre de implementación de la página child fue movido al interior de la grilla del parent, indicado como el contenido de una fila de la tabla.

Codigo parent modificado

Figura 5. Código modificado de la página Child:
Sólo queda como código de la plantilla child, la definición de la fila de la tabla, la que queda incluída en el padre. Se mantiene el marcador de grilla.

Codigo modificado de la página Child