06 Nov Herencia y herencia inversa en Velneo V7
Vamos a suponer que en el Proyecto A de una solución, queremos usar un objeto que se encuentra en uno de los proyectos (B) heredados por el Proyecto A… ningún problema. Velneo V7 mediante el concepto de herencia nos permite reutilizar este objeto.
Pero ¿y si lo que queremos es coger un objeto que se encuentra en el Proyecto A y utilizarlo en el Proyecto B? Aquí la cosa se complica… pero solo un poco. Mediante herencia inversa también podemos realizar esta acción.
Vamos a ver como conseguir nuestro propósito
Antes de comenzar con el desarrollo de nuestro ejemplo, vamos a ver (como siempre) algo de teoría.
¿Qué es la herencia?
Según el «Sumo Hacedor» de Velneo V7 la herencia no es mas que «la reutilización de lo que ya tenemos hecho«. Puedes ver la definición completa aquí.
Algunos ejemplos en los que se ve claramente el concepto de herencia serían los dibujos y las constantes usadas en nuestras soluciones. Lo mas «correcto» sería crear un proyecto específico para cada uno de estos objetos y meter en ellos todas las constantes y todos los dibujos que vamos a usar. Posteriormente en otros proyectos bastaría con heredar estos dos proyectos para poder utilizar cualquiera de los objetos incluidos en ellos.
¿Qué es la herencia inversa?
Pues voy a tomar también la definición de Juan Muñoz-Cobos que para eso es el que mas sabe de Velneo V7. La herencia inversa es «la utilización en los maestros de sus plurales«. Puedes ver la definición completa aquí
En cristiano… Vamos a suponer que tenemos un proyecto llamado por ejemplo «MAESTROS» donde tenemos nuestras tablas maestras (clientes, proveedores, contactos, etc etc) y por encima hemos creado un nuevo proyecto llamado «ERP» donde tenemos nuestros pedidos, albaranes, facturas, etc que hereda el proyecto «MAESTROS».
Para seleccionar un cliente o un proveedor en nuestros pedidos o albaranes no tendríamos ningún problema ya que el proyecto «ERP» hereda el proyecto «MAESTROS»… pero ¿y si lo que queremos es mostrar en nuestra ficha de clientes o proveedores la lista de pedidos o albaranes que les hemos realizado?. De forma automática no se podría realizar puesto que el proyecto «MAESTROS» no hereda el proyecto «ERP». Para eso vamos a utilizar la herencia inversa.
Queda claro pues que la herencia inversa sólo se puede aplicar entre objetos visuales de proyectos de aplicación.
Puntos de inserción e inserciones en la herencia inversa
Vamos con un poco mas de teoría… La herencia inversa sólo se puede realizar en formularios y acciones.
- Los formularios con herencia inversa solamente podrán ser usados en controles de tipo separador formularios
- Las acciones con herencia inversa solamente podrán ser usadas en menús y toolbars
Para aplicar la herencia inversa, deberemos realizar dos pasos:
- Definir el estilo de un formulario o acción como «Punto de inserción»: La activación de este estilo hará que el formulario o acción no pueda ser editado ya que su contenido será establecido en el proyecto heredado por éste.
- Crear en un formulario o acción un subobjeto «Inserción»: Si en un proyecto heredado por el proyecto actual hemos activado a un formulario o a una acción el estilo Punto de inserción, mediante este subobjeto podremos resolver qué formulario o acción del proyecto en curso será usando en aquel.
Creando los puntos de inserción
Una práctica muy recomendable es dejar en el separador de pestañas de nuestros maestros un par de puntos de inserción… nunca se sabe quién heredará nuestras aplicaciones.
Si os fijáis en el ejemplo, he dejado en el formulario de entidades un par de puntos de inserción al comienzo del separador de formularios y otro par de ellos al final. Hay que indicar que en cada «Punto de inserción» se pueden «Insertar» uno o mas formularios.
Para crear los puntos de inserción en el separador de formularios, debemos crear un formulario de la tabla en la que nos encontremos y marcarle el estilo «Punto de inserción».
Además en la ventana del editor, se verán claramente los formularios marcados como puntos de inserción puesto que aparecerán en cursiva.
Creando las inserciones
Una vez que hemos definido en nuestros proyectos heredados los puntos de inserción, vamos con la segunda parte: Insertar algo en esos puntos de inserción.
Si os fijáis en el ejemplo de arriba los formularios marcados como puntos de inserción en los que no hayamos insertado nada, no aparecerán en el separador de formularios.
Para poder insertar un formulario en el punto de inserción, simplemente creamos un formulario con los campos que queramos (o con un proceso que devuelva una lista de registros relacionados con la tabla que incluye el punto de inserción. En mi caso para el ejemplo he creado un formulario con campos de una tabla de extensión de entidades (** Veremos en otro artículo como incluir mediante herencia inversa extensiones de ficha y formularios de una tabla de extensión)
Este es el formulario que vamos a insertar en el punto de inserción del proyecto heredado… no pongáis botones de aceptar o cancelar puesto que ya estarán en el formulario donde se va a insertar.
Ya tenemos el formulario pero ¿cómo lo insertamos en el punto de inserción?. Tenemos que crear un subobjeto «Inserción» en el formulario. En este subobjeto es donde le indicaremos el punto de inserción en el que lo insertaremos.
Con esto habremos terminado de realizar nuestra herencia inversa y podremos incrustar formularios o acciones en proyectos heredados.
¿Sabías utilizar ya la herencia inversa? ¿Te ha parecido útil el artículo? Déjame un artículo y lo debatimos
JSV
Posted at 16:15h, 06 noviembreCon sinceridad , la herencia inveresa y los puntos de inserccion , no es ni mas ni menos que una deficiencia de la herramienta en el sistema de acceso a los diferentes opciones del erp que estamos contruyendo.
Francisco José Vila Martín
Posted at 16:26h, 06 noviembreHola Juan:
Si es cierto que a la herencia le faltarían cosas, aunque con la herencia inversa y el uso de la api + javascript está casi completa.
Con el artículo lo único que pretendo es explicar el funcionamiento de la herencia inversa sin entrar a valorar si la herramienta tiene alguna deficiencia en este sentido o no.
Un saludo y gracias por participar en el blog
Francisco José Vila Martín
Posted at 16:29h, 06 noviembreHola Juan:
Si es cierto que a la herencia le faltarían cosas, aunque con la herencia inversa y el uso de la api + javascript está casi completa.
Con el artículo lo único que pretendo es explicar el funcionamiento de la herencia inversa sin entrar a valorar si la herramienta tiene alguna deficiencia en este sentido o no.
Un saludo y gracias por participar en el blog
Juan Sanchez
Posted at 14:07h, 07 noviembreBuenas.
Seamos sinceros, lo que es al vdelop estamos en pañales con respecto a cualquier herramienta de desarrollo actual, no entiendo que para trabajar en grupo tengamos que hacer y generar mogollon de cajas, con lo cual necesistamos , este tema de herencia inversa etc,.
Lo normal en herramientas de desarrollo actuales ,es el bloque por objeto , hasta el refresco en todos los usarios de desarrollo.
Creo a mi modesto entender que a esto , hay que darle una gran vuelta de verdad, y que si se quiere estaren primera division, hay que tener moldes de primera .
Saludos