Compartir datos entre soluciones en un mismo vServer

De que se puede, se puede, pero no es tan sencillo como aparenta ser.

Problema: En un vServer instalé primero la open app vBase en su última versión, me interesa que los datos contenidos en esta solución sean visibles para TODAS las soluciones que instale en este vServer, principalmente los que se refieren a Localizaciones.

El directorio de datos para los proyectos de la solución vBase se llama vBase2-3.

Haciendo pruebas con vERP (el cual hereda la misma versión de vBase previamente instalada en el vServer), encuentro que NO HAY MANERAde que desde la instalación del .vin de vERP se puedan compartir los datos de la instancia del proyectos de datos de vBase_Localizaciones.

Lo anterior se debe a qué para instalar a partir de un .vin solo se pregunta por el directorio de datos de la aplicación, y es ahí donde instala TODAS las tablas de todos los proyectos de datos (de la solución y de las heredadas), ni cuenta se dá de que ya existen instancias de datos de los proyectos vBase_Localizaciones, vBase_Usuarios y vBase_Entidades.

Marracuada (Solución nada elegante): Para tu vServer y copia los archivos de datos, índices y contenedores del directorio de datos de vBase al directorio de datos de la solución que acabas de instalar.

Consecuencia: Duplicas información a lo carajo.

Intento de solución. Borrar todas las instancias de aplicación y de datos que se acaban de crear al instalar vERP mediante el .vin y generar las instancias de forma “Manual”, primero la de aplicación principal.

Resultado obtenidoEl mismo, toda vez que al resolver herencia de las cajas de datos SOLO te pregunta (el asistente) por la resolución de la caja de datos vERP 1.0.0 y a partir de ahí genera todo en la carpeta que se le indique, nuevamente no se da cuenta que ya existen en el vServer instancia de los proyectos de datos comentados anteriormente.

¿Cual es el problema entonces?, bueno, depende de la manera en cómo se vea, para algunos estará bien, para otros estará mal, para mi en lo particular es un punto a mejorar.

A nivel de vDevelop todo funciona perfectamente, ya que con solo heredar a vBase_Entidades al proyecto de datos de vERPMaestros, tengo visibilidad de todas las tablas y proyectos de datos de vBase.

Pero esto no funciona así cuando quiero compartir proyectos de datos previamente instanciados con nuevas instalaciones de soluciones.

Solución medio definitiva.Si quieres que en un vServer se compartan proyectos de datos con otras soluciones que instalarás posteriormente Debes heredar DIRECTAMENTE dichos proyectos de datos (aunque sean de otras soluciones) al proyecto de aplicación principal de la nueva solución. ¿A qué me refiero con DIRECTAMENTE?, simple, si seleccionamos el proyecto de aplicación vERP y nos vamos a la ventana de propiedades del proyecto, en la pestaña de soluciones, veremos que en el cuadro de la izquierda (soluciones heredadas) SOLO hereda los proyectos de datos de vERP y vERPMaestros, quedando los de vBase sin heredar.

¿Qué no es así?, pues sí y no, hasta ahora me doy cuenta, para desarrollar con vDevelop con eso es suficiente, pero (repito) para compartir la información de los proyectos de datos entre soluciones no es suficiente.

Entonces, los proyectos de datos que quieras que se compartan con otras soluciones tambien debes pasarlos a la ventana izquierda en la pestaña de herencia del proyecto de aplicación principal de tu solución.

De esta manera solo es necesario que generes una nueva instancia del proyecto de aplicación con el vAdmin, y como ahora si dicho proyecto hereda en DIRECTO a los proyectos de datos que deseas compartir (no importa que sean de otras soluciones) al momento de resolver las herencias, el asistente te preguntará por cada uno de esos proyectos heredados y listo, a compartir información y ser felíz.

¿Porqué dije que solución definitiva a medias o medio definitiva? Pues porque aún poniendo la herencia directa si instalas con el vInstallBuilder sigue pasando lo mismo, ni cuenta se dá de dicha situación, por lo que si lo haces de esta manera no te salvas de tener que borrar las instancias generadas e instanciar manualmente el proyecto principal de tu aplicación para que el asistente te pregunte por la resolución de la herencia.

Espero esto le sirva a más de alguno, aclaro que busqué información al respecto en el foro y en el manual del vAdmin, pero no encontré nada que me sirviera o me guiara, a excepto de un post por ahí donde Pepeto (Gracias) dá una pista de cómo va el asunto.

Si esto ya estaba claramente explicado en algún lugar, pues una disculpa por tanto rollo y si fueran tan amables de pasarme el link para que no se me olvide. :stuck_out_tongue_winking_eye:

Un saludo.

Martin Ibarra.

Hola, Martín.
Te saluda José Pablo Tejeda.
Si te entendí bien, otra inconveniencia es que tus usuarios finales dependerán de tu intervención siempre que les instales un programa, es así?
Yo aún no me enfrento a esta situación… pero para allá voy. Ya en su momento comentaré como me va.
Saludos.

Hola Pablo, qué gusto ya verte por estos lados.

No me atrevería a verlo como una inconveniencia, como mencioné en el post, todo depende el ángulo o punto de vista o del modelo de negocio de cada quien.

En mi caso particular y por el uso que pretendo dar (de momento) no me afecta tanto, ya que pretendo “rentar” las aplicaciones y crear instancias diferentes para futuros clientes de las soluciones, y solo pretendo compartir con todos el proyecto de datos de “Localizaciones” y ser yo el que le da mantenimiento a los datos de dicho proyecto.

Pero en otros casos en que quizás solo se venda la aplicación a un cliente y por temas de distancia o por lo que sea no sea posible instalarlo yo, sea en forma presencial o remota, pues ahí creo que si le complicaría al cliente la instalación de la solución, ojo, siempre y cuando pretenda que se dé tal situación de compartir datos de proyectos previamente instalados.

Los escenarios son interminables y hay que hacer un muy buen análisis de cada caso en particular.

Lo que si sugiero es que el vInstallBuilder y la instanciación “manual” sean mejorados a la brevedad posible, para que si detecta instancias que ya existen en un vServer de proyectos de datos incluidos en la solución que se está instalando, pregunte por la resolución de la herencia de TODOS los proyectos que se incluyen y que ya existen en otras instancias en el vServer. Y, porqué no, de una vez que se “arregle” o mejore el tema de la visibilidad de dichos proyectos por la herencia, esto es, que no tenga que heredarlos directamente al proyecto principal de aplicación, sino que como en vDevelop, si heredo un proyecto raíz y de ahi cuelgan los demás, que con eso sea suficiente para que detecte instancias de datos ya existentes.

Se ahorraría mucho tiempo y se evitarían dolores de cabeza, tanto a los clientes como a nosotros los desarrolladores.

Insisto, el modelo actual me gusta, pero como todo se puede mejorar, y, se puede lograr la compartición de datos con unos cuantos ajustes extras a los proyectos y durante las instalaciones.

Saludos.

Martin Ibarra.

Oye, y tu que ya eres experimentado en v7 y cloud… cual será el mejor modelo de renta?
Pienso en un vServer por cada empresa, o también un sólo vServer con n instancias de aplicaciones (1 por c/empresa).
Tu que recomiendas?
Saludos.