GeneXus y sincronización de objetos


Estaba leyendo SSE, que es un protocolo parecido a RSS que permite sincronización en ambos sentidos y se me ocurrió una idea sencilla que puede funcionar.

Si todos los objetos GeneXus, tienen una propiedad adicional, que contiene la url del feed de donde fue generada, podría implementarse algo bastante sencillo para mantener sincronizados objetos que se desarrollan en diferentes KB.

Escenario 1:

KBCore: Objetos principales del sistema
KBMdl: Tiene todos los objetos de KBCore y algunos objetos adicionales.

Entonces todos los objetos de KBCore, tendrían una propiedad que podría tener el valor "https://servidor/kbcore/kbrss.aspx?,,,", que es la URL que debería llamarse para recuperar un RSS (o SSE) que (opcionalmente) incluye el distribute de dicho objeto.

Cuando exporto objetos de KBcore y los importo en KBMdl, estos se importan con dicha propiedad, por lo tanto esos objetos van a quedar "marcados" como que no son mantenidos desde la KBMdl.

Que ventajas tiene esto?.
Podría dar un aviso, si alguien desarrollando en KBMdl quiere modificar algun objeto que en realidad es de KBCore.

Al estar desarrollando en KBMdl, podría tener una opción que me trajera todos los objetos modificados en KBCore y actualizándolos a la ultima versión. También me puede advertir si hay objetos de KBCore que fueron modificados en KBMdl.

Hay que pensar algunas cosas mas para manejar esto como son:
Poder tomar un objeto consolidado como propio
Poder cambiar el feed de varios objetos en forma simultanea (agrupando fuentes de objetos?)

Una vez resuelto el Escenario 1, se puede pasar a

Escenario 2:

KBConsolidada. Tiene la KB del modelo corporativo, tiene todos los sistema de la empresa.

KBCore. Tiene todos los objetos centrales y compartidos del sistema.
KBMdl1. Tiene los Objetos de un modulo (por ejemplo, Facturacion) e incluye KBCore
KBMdln. Tiene los objetos de otro modulo (por ejemplo, Cobranzas) e incluye KBCore

Entonces sincronizar (o armar) KBconsolidada, seria recorrer todos los fuentes de objetos y sincronizarlas.

Que ventajas tiene esto?
  • Evita errores. Se evitarían modificar objetos en lugares incorrectos.
  • Ahorra trabajo manual y puede automatizarse. Se pueden evitar muchas exportaciones/importaciones con un mecanismo mas agil.
  • Creo que puede ayudar a tener desarrollos distribuidos pues podrían sincronizarse KB que se publiquen en Internet. Trabajando con el nivel de autenticación y encriptación adecuados, puede estar bueno.
Puede estar bueno para hacer una extensión.

UPDATE : En Simple Sharing Extensions to FeedSync, Jon Udell escribe sobre el tema y se pueden encontrar otros links interesantes.

Comentarios

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

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.