Dominio WikiPage o agregar contenido semi-estructurado a mi aplicación

Desde hace un tiempo, vengo encontrando un patrón repetido en las aplicaciones que estamos desarrollando: Hay que agregar algún tipo de contenido no demasiado estructurado a determinadas tablas.

Para que se pueda entender pongo algunos ejemplos:

User Control en el GeneXus MarketPlace. 
Necesita una pagina con texto con formato, un titulo, una explicación, links a paginas de ejemplo y algunos archivos adjuntos para poder bajar dicho control

Sistema de Incidentes. 
Se necesita tener una explicación y una resolución con una historia de los mismos, dejando registro de quien agrega / cambia algo.
Es util tambien tener links a otros incidentes y tener adjuntos.

Proyectos de desarrollo compartido.
Es bueno tener una pagina donde se explique el alcance, los objetivos, las tareas que quedan por hacer. También es bueno tener para bajar los archivos necesarios para hacer funcionar dicho proyecto.

Varias de estas necesidades las podemos resolver con un Wiki, por lo que se me ocurría que seria conveniente agregar a las aplicaciones GeneXus un Data Type o un dominio WikiPage.

De esta forma, podríamos definir la tabla de proyectos de la forma

Proyectos
*ProyectoId          ID
ProyectoNombre       VarChar(100)
ProyectoWikiPage     WikiPage
ProyectoFechaInicial Date


En WikiPage, podría verse en la pantalla como un link o como un editor sencillo, que apunte a un Wiki.
Cuando use la tabla de productos, voy a tener disponible tanto un link como el contenido de la pagina en HTML para poder usarla en cualquier lugar de mi aplicación.

La primera vez que voy a la pagina en el wiki, se debe crear la misma con un Template predefinido en este caso para proyectos, donde se pueda poner los datos que el diseñador de dicho Template establezca, cargándose estos datos con un SDT predeterminado.

Se deben hacer algunos controles básicos, como que si la pagina ya existe se debe editar y si no existe se debe crear y también si el usuario esta autorizado o no a editarla.

Que propiedades podría tener este dominio?
  • WikiHost  (Servidor, puerto, directorio virtual, etc del wiki donde se crearan las paginas)
  • Template (Plantilla a utilizar para la creación de la pagina)
  • SDTWikiPage (los datos que se quieran creación incial de la pagina, por ejemplo se podría crear una pagina en el wiki con una tabla que tenga el nombre del proyecto, la fecha de creación,  etc). 
  • Categorías (Para dejar a la pagina ya clasificada con una categoría en el wiki, de forma de agrupar todas las paginas de proyectos). 
A partir de ese momento, si quiero agregar un archivo adjunto al proyecto, no me queda mas que editar la pagina del Wiki, adjuntar el archivo y ya quedara disponible para los usuarios de la aplicación.

Los componentes básicos necesarios para hacer funcionar esto, ya están desarrollados, por lo que faltaría integrarlos y pensar bastante en su usabilidad para que fuera sencillos utilizarlos.

Porque no usar una pagina HTML ? 
El editor Wiki es mas facil de usar que un editor HTML. Tiene resuelto la subida de imagenes, archivos adjuntos y el link a otras paginas de forma mas facil para el usuario final.
Ademas quedan grabado toda la historia de cambios, por lo que se sabe quien y cuando hizo determinado cambio.




Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.