Velneo V7: Herencia y Maestros distribuidos en v7

Con las posibilidades ofrecidas por la herencia, la forma en que planteamos la arquitectura de nuestras aplicaciones debe ser redefinida, pues esta característica nos ofrece una nueva forma de reutilizar tanto los objetos visuales como modelos de datos, este cambio nos llevara tarde o temprano a plantearnos cómo organizar los modelos de datos para reutilizar las tablas maestras mas genéricas en otros proyectos con lo que se llegan a tener Maestros distribuidos (No sé si el termino existe), me explico:

Como pude verse en la imagen de ejemplo, el objeto de los maestros distribuidos es poder reutilizar la estructura básica de un maestro en varios módulos, los cuales a su vez le agregan atributos que solo son relevantes en ese modulo en particular; en el caso de las Entidades en el proyecto vBase se guardarán Nombre, teléfono, dirección y demás datos que son comunes a una persona y que pueden ser reutilizados en la gran mayoría de nuestros proyectos, para la reutilización de estos atributos el proyecto vAgenda hereda el Proyecto vBase, para añadirle mas atributos a la entidad se crea una tabla Pacientes en vAgenda que apunta a la tabla Entidades de vBase estableciendo el índice de Entidades como de clave única, de esta forma se genera la relación de 1:1 entre la tabla Entidades de vBase y la tabla Pacientes de vAgenda, por lo tanto Pacientes es una extensión de los atributos de Entidades, con lo que el proyecto queda así:

Muy lindo en la base de datos y en los objetos visuales para el Alta ?

Cuando se plantea un maestro distribuido se genera un problema en el momento de programar el objeto visual que se encarga de su alta, pues la entidad es un solo concepto que guarda sus datos en dos o más tablas de la solución, la forma de resolver esta problemática es a través de una nueva instrucción disponible en v7 => “Crear nueva ficha en memoria”: lo que nos permite esta instrucción es tener la instancia de un registro de la base de datos en memoria para jugar con ella antes de guardarla, así que para dar el alta de una nueva entidad desde el proyecto vAgenda se debe crear un proceso que:

  1. Cree una ficha en memoria de la tabla Entidades y que posteriormente llame a un formulario para su edición, este form tendrá el botón aceptar con una fórmula que determinara su texto entre “Aceptar” y “Siguiente” dependiendo de la variable global en disco “Distribuido”, el objeto de hacer esto es darle a conocer de alguna forma al formulario de Entidades de vBase que está siendo llamado desde un proyecto que lo hereda y que al dar en siguiente se seguirán editando atributos de esa Entidad pero que están en otra tabla.
  2. Si la persona edita el form de Entidades y da click en siguiente, se procede a crear una ficha en memoria de la tabla Pacientes y a llamar a su formulario para la edición de la ficha.
  3. Si el usuario acepta el form se procede a guardar las dos fichas que estan en memoria, primero la de Entidades y después la Pacientes relacionándole el código que genero el alta en Entidades.

Ok, con eso se subsana el alta y para modificar la ficha ?

Para realizar la modificación la metodología es la misma, creas un proceso asociado al evento doble click de la rejilla en el cual la primera línea sea “modificar ficha de maestro” de Entidades de vBase,  si el usuario  acepta procedes a llamar el formulario para la edición de la ficha de la tabla Pacientes de vAgenda y listo obtienes el mismo comportamiento de asistente que tienes en el alta pero en la modificación, el proceso quedaría así:

Nota: Primero se debe utilizar la instruccion leer ficha seleccionada porque el origen del subobjeto evento es lista y no ficha.

Mi conclusión:

Esta es la forma de reutilizar los objetos de datos más práctica que encontré, no necesariamente la más optima, pero es realmente sencilla y bastante más intuitiva que tener que crear el maestro desde el proyecto que lo hereda para poder editar los atributos adicionales, en mi opinión la forma ideal sería que el V7 de alguna forma detectara los enlaces 1:1 y que una vez detectados o declarados permita realizar en cualquiera de las dos tablas edición directa de los atributos de la tabla enlazada, de igual forma se podría aplicar para los enlace singular de plural por índice y por posición.

Aquí el video en ejecución de esta metodología:

Saludos y espero que les sea útil,

5 thoughts on “Velneo V7: Herencia y Maestros distribuidos en v7

  1. Hola. Interesante propuesta, tengo una pregunta, ¿ y si el operador quiere volver atrás, al los datos de vBase desde el formulario segundo, por ejemplo, porque se ha dado cuenta de que ha metido la pata en digamos el teléfono ?.
    A ver si damos con un método que nos convenza a todos, yo por mi parte también estoy dándole vueltas, si saco alguna conclusión decente lo publicaré en el foro.

    Saludos.
    Miguel.

    PD:Sigo pensando que el Gran Maestro y padre de la criatura, debería iluminarnos en este tema.

  2. Si Miguel, le proceso se hace un poco mas abstracto y largo pero se puede de hecho peqare un imagen del proceso como me quedo en para ir atras y adelante en el foro.

  3. Hola,

    Excelente propuesta, una pregunta si se me permite. ¿Y si usáramos variables locales del formulario? Se podría hacer que los campos apuntaran a variables locales creadas en el formulario, de este modo sólo nos haría falta un formulario, resolviendo el tema del “atrás”. Cuando el usuario hiciera clic en “Aceptar”, mediante proceso se ejecutarían las instrucciones oportunas de “Modificar campo” usando estas variables locales que estarían rellenas de valor.

    Un saludo.

    1. Hola,

      Gracias por el comentario, pues en su momento tambien considere utilizar variables, pero no tiene sentido pues solo aplica para campos edit que no tengan maestros, por ejemplo con un variable no podria utilizar flechas arriba y abajo para seleccionar el pais, ni tampoco un localizar maestro, ni mucho menos un crear maestro y para hacerlo tendriamos que inventarnos un sin fin de eventos y procesos.

      Un saludo,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s