Herencia


([N3] blavan) #1

Tengo una solución Agenda 1 (proyecto + proyecto datos1+ proyecto de datos 2)

Carpeta de datos Agenda 1

Creo otra solución Agenda 2 (proyecto + datos) que hereda de la anterior

Carpeta de datos Agenda 2

Pero quiero que AGENDA 2, además de sus datos propios, tambien tenga acceso a los datos de proyecto de datos 2 de AGENDA 1

 

Por favor como planteo las instancias

Gracias

 

 

 

 


([N1] aztecmexico) #2

Hay varias consideraciones que hacer Benito, si pudieras poner capturas de pantalla de la pestaña de herencia de la solución Agenda2 serviría mucho para indicarte bien qué es lo que tienes que hacer.

Pero mientras vamos a partir de los siguientes supuestos:

Solución: Agenda1

ProyApp: Ag1_app

ProyDatos: Ag1_dat1

Ag1_dat2

Supuesto 1: Ag1_app hereda a Ag1_dat1, quien a su vez hereda a Ag1_dat2

Solución: Agenda2

ProyApp: Ag2_app

ProyDatos: Ag2_dat

Bueno, lo “normal” para heredar aqui sería que si te vas a la pestaña de herencia de Ag2_app vieras que en la parte izquierda (proyectos heredados) verías que solo heredas a :

Ag2_dat

Ag1_app

Esto está bien para vDevelop, en desarrollo puedes tener acceso a todos los proyectos a partir de esta definición de herencias, pero en ejecución y por lo que planteas que quieres no funcionaria asi, ya que “Siempre” la solución Agenda2 crearía las tablas de TODOS los proyectos de datos en el directorio por defecto asignado a Agenda2, sin POSIBILIDAD alguna de que pudieras compartir datos de las otras soluciones heredadas y que aparte estén en otras carpetas.

Para solucionar esto, es bastante simple, en la misma pestaña de herencia de las propiedades del proyecto Ag2_app (que supongo es el que va a quedar hasta arriba en el árbol de herencia) pasa TODAS los proyectos de la sección derecha (heredables) a la sección izquierda (heredados), En el vDevelop no vas a notar ningún cambio, ya que te va a seguir pintando las herencias igual que en el primer caso, de tal forma que te debe quedar asi:

Sección heredados de propiedades de Ag2_app

Ag2_dat

Ag1_app

Ag1_dat1

Ag1_dat2

Una vez hecho esto ya podrás controlar perfectamente el poder utilizar tanto instancias de aplicación como de datos ya existentes y compartirlas o crear nuevas que sean exclusivas para algún cliente que no desea compartir nada.

Ahora algunos puntos para que esto funcione adecuadamente.

Asumo que la solución Agenda1 ya esta instanciada y funcionando y con su correspondiente carpeta de datos.

Bien, ahora, una vez que generas en vDevelop las herencias de los proyectos tal como te lo comenté, y que ya tienes un Marco (autoexec) ejecutable en el proyecto Ag2_app, BORRA todas las instancias (ojo, las instancias, no la solución) que existan (datos y aplicaciones) generadas a partir de Agenda2.

Una vez que borraste todas esas instancias, ahora sí puedes proceder a crear una nueva instancia de aplicación a partir del proyecto Ag2_app de la solución Agenda2.

Al momento de generar la instancia de este proyecto, te va a preguntar si deseas generar nuevas instancias o utilizar las ya existentes de los proyectos (datos y aplicación) de Agenda1, en este caso ya tú decides cuales compartir y cuales utilizar.

Por lo que comentas en tu post, asumo que solo te interesa utilizar los datos de los dos proyectos de datos de Agenda1, por lo que a esos 2 seleccionas utilizar las que ya existen, y en todas las demás opciones seleccionas crear nueva, tambien podrías utilizar la instancia de aplicación ya existente de Ag1_app.

Esto funciona así porque al instanciar los proyectos de aplicaciones, estos solo preguntan sobre la creación o utilización de ya existentes de los proyectos que le son heredados en directo, y no por los que van “colgados” de estos.

Espero te sirva y puedas lograr y obtener los resultados que esperas.

Haz de disculpar el rollote, pero no soy bueno en eso de compactar posts.

Un saludo.

Martin Ibarra.


([N3] blavan) #3

Muchas gracias, por la molestia que tes has pegado.

Como a mi no me salía pensaba en lo siguiente:

Si tengo una solución que resuelve una cierta temática y esa solución me la piden x clientes en vez de hacer soluciones diferentes para cada cliente, crear tantos proyectos de aplicación y de datos dentro de la msma solución como clientes surjan y así en el marco de cada cliente ya dispongo el acceso a las tabla común que me interese

 

Solución Agenda proyecto + proyecto datos1 + proyecto datos 2. Carpeta Agenda

Cliente 1 proyecto + proyecto datos heredan de Agenda y tiene acceso a proyecto datos 2 de agenda Carpeta Cliente 1

Cliente 2 lo mismo pero en Carpeta Client2

 


Pregunta . Que es mejor, este planteamiento, es decir Solución única ó Tantas soluciones como Clientes

Gracias

 

 

 

 

 


([N3] blavan) #4

Muchas gracias, por la molestia que tes has pegado.

Como a mi no me salía pensaba en lo siguiente:

Si tengo una solución que resuelve una cierta temática y esa solución me la piden x clientes en vez de hacer soluciones diferentes para cada cliente, pue creo tantos proyectos de aplicación y de datos dentro de la misma solución como clientes surjan y así en el marco de cada cliente ya dispongo el acceso a las tabla común que me interese

 

Solución Agenda proyecto + proyecto datos1 + proyecto datos 2. Carpeta Agenda

Cliente 1 proyecto + proyecto datos heredan de Agenda y tiene acceso a proyecto datos 2 de agenda Carpeta Cliente 1

Cliente 2 lo mismo pero en Carpeta Client2

 


Pregunta . Que es mejor, este planteamiento, es decir Solución única ó Tantas soluciones como Clientes

Gracias

 

 

 

 

 


([N3] blavan) #5

Gracis Ibarra, ya me funciona tal como expusiste, a mí me faltaba el detalle de hacer heredar a Agenda 2 TODOS los proyectos de datos de Agenda 1, SOLO heredaba el de nivel más alto.


Ahora voy a probar con mi 2º propuesta, pero aquí me encuentro que en el momento que creo un proyecto de datos ó de aplicación que hereden del principal de la solución no veo la forma de eliminarlos?

Evidentemente siendo N3, todas estas cuestiones me las atiende perfectamente Soporte pero quiero exponerlas en el foro como ayuda y apoyo a los que se inician o tienen soporte limitado

Gracias

 

 


([N1] aztecmexico) #6

Hola,

No me queda claro lo de tu segunda propuesta, pero vamos, una opción sería como planteas, por así decirlo un “software de caja” en cloud.

La ventaja que yo veo en que hayas resuelto lo de las herencias es el control “absoluto” que puedes llegar a tener sobre las soluciones, ya que la misma solución la puedes instanciar de diversas maneras. Todo dependerá de tu modelo de negocio y las características particulares de tus clientes.

Por ejemplo, con la solución ya cargada en el vServer puedes instanciarla de estas maneras:

  1. Creas una instancia de aplicación para cada cliente con su propia carpeta de datos para Agenda2 (y sus proyectos propios) y que TODAS compartan la instancia de datos de Agenda1, de esta manera digamos que tú te encargas de mantener al día los datos de Agenda 1.

  2. Creas una instancia de aplicación para cada cliente y para todos sus proyectos le indicas que genere nuevas instancias, con esto TODAS las instancias de proyectos de datos te van a quedar en una sola carpeta del cliente que prefiere tener solo su información y no compartir nada con nadie.

  3. La otra opción que manejas yo la llamaría “Personalizada” para cada cliente, y esto solo significa que a partir de Agenda2 (que sería tu “software de caja en cloud”) creas nuevos proyectos únicamente de aplicación (Agenda2-Ferretera, Agenda2-Retail, etc) en los que le personalizas imagen, colores, formularios, etc. lo que esté dispuesto a pagar y a partir de aqui igualmente puedes instanciar compartiendo o no a Agenda1.

Todo esto en el supuesto de que tú tienes un servicio cloud para tus clientes pero si el vServer estuviera en un equipo de algún cliente, y este cliente te fuera pidiendo nuevos módulos, nuevas soluciones, etc, aqui viene la gran ventaja de instanciar cada proyecto de datos por separado y poder controlar con qué nuevas soluciones lo vamos a compartir o no, ¿Te imaginas?, repito, aquí es donde verdaderamente en lo particular veo el poder de las instancias separadas de datos, en entornos empresariales cerrados.

Mi sugerencia final entonces es, que por cada solución solo tengas UN solo proyecto de datos, si pones en una misma solución dos o más proyectos de datos vas a poder instanciarlos por separado, lo que no vas a poder hacer es SEPARAR las carpetas de datos de cada uno, ya que por defecto quedan en una misma carpeta, para evitar esto y pensando en que todo crece podemos crear soluciones con solo un proyecto de datos y posteriormente ir instanciandolas por separado, así cuando unes todas en un solo proyecto de aplicación tienes el CONTROL total sobre cada proyecto de datos en particular, y decides que compartir y qué no, y lo más importante, donde ponerlo.

Saludos.

Martin Ibarra.


([N3] blavan) #7

Gracias Ibarra, evidentemente la casuística de la vida es muy compleja y cada caso precisa de un estudio

Más que nada es para comentar posibilidades

En un curso de velneo si mostraron una solución de la que colgaban muchos proyectos de aplicación con su proyecto de datos.

Lo que no percibía es que la caja de datos es única, es decir vadmin no pide carpeta para datos para cada proyecto apli- proyecto datos añadidos a la misma solución.

No ves, abase de chalar y molestar se me aclaran los conceptos

Muchas gracias