AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Desarrollar una aplicación o un sitio web / MVP (Modelo, Vista, Presentador)
  • Presentación
  • ¿Cómo proceder?
  • Los pasos para generar la ventana
  • Los elementos generados por el RAD
  • Gestión de errores en las clases generadas por el MVP RAD
  • WLanguage: Características específicas utilizadas para simplificar la arquitectura MVP
  • Presentación
  • atributo " mapping "
  • MyMappedFile y MyUniqueMappedKey palabras clave
  • atributo " associated "
  • Atributo "Presentador": gestión de la actualización de vistas
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
WINDEV propone un MVP RAD que genera las ventanas "tabla" y "form" así como las clases presenter y Model necesarias.
Las ventanas corresponden a las Vistas de MVP.
El código generado es libre y puede ser adaptado según las necesidades: es la generación del esqueleto de la aplicación básica.
Atención: Este modo de desarrollo utiliza OOP: requiere un buen conocimiento de estos conceptos. Este modo de desarrollo es un modo de desarrollo avanzado.
AndroidiPhone/iPadMac Catalyst El MVP RAD no está disponible. Un ejemplo con las diferentes clases para construir una aplicación MVP está disponible.

WINDEV
¿Cómo proceder?

Los pasos para generar la ventana

Para generar una ventana en modo "MVP RAD:
  1. Haga clic en en los botones de acceso rápido:
    • La ventana de creación de nuevos elementos se abre: haga clic en "Ventana", y luego en "Ventana".
    • El asistente de creación de ventanas se abre.
  2. En el asistente:
    • Haga clic en la pestaña "RAD.
    • Seleccione el patrón "MVP RAD.
    • Seleccione el tipo de ventana a generar (Formulario o Tabla).
    • Finalizar la creación de la ventana asistente.
    • La generación de MVP RAD asistente comienza.
  3. En el asistente:
    • Especificar si el RAD debe crear una nueva clase de presenter (opción necesaria si el MVP RAD no se ha utilizado ya).
    • Especifique si RAD debe crear una nueva clase Model (opción requerida si el MVP RAD no se ha utilizado ya).
    • Selecciona el archivo de datos para usar.
    • Seleccione los elementos a utilizar.
    • Especificar si RAD debe crear una nueva clase para la gestión de errores (opción necesaria si el MVP RAD no se ha utilizado ya)..
    • Personalizar (si es necesario) el nombre de las clases que se generarán.
    • Seleccione los miembros de la clase de modelo que se mostrará en la ventana (la vista).
    • Especifique el título y el nombre de la ventana que se generará.
  4. Finalice el asistente.

Los elementos generados por el RAD

Al generar una ventana Formulario y una ventana Tabla en un archivo de datos denominada "MiArchivoEjemplo", el MVP RAD genera 6 clases y 2 ventanas.
El MVP RAD genera 2 clases "base":
  • M Base: clase base de todas las clases del Modelo (M de Modelo). Contiene las funcionalidades básicas del código de negocios (que será compartido con las otras clases modelo a través de la herencia).
  • CError: para gestionar los errores. Esta clase centraliza el código para la gestión de los errores que pueden ser señalados por las diferentes clases (errores de negocio o errores de base de datos).
El MVP RAD también genera 2 clases de la capa "Modelo", específicas para el proyecto:
  • MMyExampleFile: clase que refleja los datos de la empresa. En este ejemplo, esta clase "mapea" directamente la estructura del archivo de base de datos "MiArchivoEjemplo" (a través del atributo "mapping").
  • MArrayMyExampleFile: clase de modelo para la ventana tabla. Contiene una array de objetos MMyExampleFile.
El MVP RAD también genera 2 clases de la capa "presenter", específicas para el proyecto.
  • PTableMyExampleFile: gestiona la visualización de los datos en la ventana de visualización o tabla.
  • PFormMyExampleFile: gestiona la visualización de datos en la ventana de vista o formulario.

Gestión de errores en las clases generadas por el MVP RAD

En MVP RAD, los errores se admiten a través de una clase CError. Cada procedimiento del presenter espera un parámetro CError. Por lo tanto, las vistas pueden recuperar los posibles errores generados por la presenter.
clError is CError
// Validation
IF NOT gclPresenter.bOK(clError) THEN
Error(clError.FormatMessage())
RETURN
END
De hecho, sólo la vista muestra los posibles errores (y no el modelo o la presenter).
Este modo de gestión de errores ( Procedure que espera el parámetro CError ) permite un desarrollo de aplicaciones más riguroso.
WLanguage: Características específicas utilizadas para simplificar la arquitectura MVP

Presentación

Para simplificar la implementación de una arquitectura MVP, es importante identificar y entender los elementos específicos de WLanguage:
  • el atributo mapping (así como las palabras clave MyMappedFile y MyUniqueMappedKey ),
  • el atributo associated ,
  • el atributo " presenter " ,
  • las funciones RequestRefreshUI y RequestRefreshUIParent, y la ventana (o reporte) actualización Event.
El MVP RAD utiliza estas características, pero pueden utilizarse en cualquier tipo de arquitectura.

atributo " mapping "

El atributo mapping se usa para crear un "enlace directo" entre la clase y el archivo de datos .
Ejemplo:
MMyExampleFile is Class,mapping = MyExampleFile
Mediante este atributo:
  • MemoryToFile copiará automáticamente el valor de los miembros de la clase en los elementos del archivo actual Record.
  • FileToMemory copiará automáticamente los elementos del archivo actual Record en los miembros de la clase.
Importante:
  • Para que este mecanismo funcione, los nombres de los miembros de la clase deben ser idénticos a los nombres de los artículos de el archivo de datos.
  • Si es necesario: el atributo mapping permite utilizar prefijos o nombres diferentes a los de análisis. Para hacerlo, reutilice la palabra clave mapping en los miembros de la clase para volver a crear el vínculo entre el miembro y su elemento de análisis..
    Ejemplo:
    m_sEstateTitle is ANSI string <MAPPING=EstateTitle>

MyMappedFile y MyUniqueMappedKey palabras clave

En la clase MBase generada por el MVP RAD, se utilizan dos palabras clave para simplificar la gestión de mapping: MyMappedFile y MyUniqueMappedKey. Estas palabras clave se utilizan para identificar, para la clase base MBase, el archivo y la clave única del modelo:
  • MyMappedFile hace referencia el archivo de datos definido por la palabra clave mapping en la clase "Modelo".
    Por ejemplo, en el método bSave de la clase MBase se utiliza el siguiente código:
    HReset(MyMappedFile)

    Este código realizará una llamada a HReset en el archivo de datos para la que se generó el RAD.
  • MyUniqueMappedKey hace referencia al elemento definido por la "clave única" mapping en la clase "Modelo".
    Por ejemplo, en la clase MMyExampleFile, MyUniqueMappedKey es equivalente al elemento MyExampleFileID:
    m_nMyExampleFileID is int<MAPPING=MyExampleFileID, unique key>
Estas palabras clave le permiten utilizar código genérico en esta clase base.

atributo " associated "

El atributo asociado se utiliza para acceder a los miembros, los métodos y las propiedades de una clase Model desde su clase presenter sin tener que realizar ningún "rebote"..
Ejemplo:
PFormMyExampleFile is Class
PROTECTED
m_clCurrentModel is MMyExampleFile <associated>
En el ejemplo anterior, los objetos PFormMyExampleFile tienen un miembro "associated" cuyo tipo es MMyExampleFile.
Los objetos PFormMyExampleFile exponen directamente los métodos, propiedades y miembros de la clase associated, sin tener que redefinirlos.
A través del atributo asociado , no es necesario volver a crear sistemáticamente todas las propiedades en la clase presenter para exponer los miembros del modelo.
La arquitectura MVP generada por el RAD contiene clases genéricas y clases específicas para el proyecto.. Se puede personalizar por completo!
Basta con crear los métodos y propiedades deseados en la clase "presenter" para override el comportamiento del modelo.
Tiene la posibilidad de vincular un control a un miembro o a una propiedad de la clase " presenter ". Por lo tanto, este enlace se puede realizar sobre todos los miembros o propiedades del "Modelo", expuestos por la clase "presenter" con este mecanismo.

Atributo "Presentador": gestión de la actualización de vistas

El atributo presenter se utiliza durante la declaración global de las ventanas generadas. Se utiliza para asociar una clase de la capa presenter con una vista (ventana o reporte).
Por ejemplo:
PROCEDURE WIN_Table_MyExampleFile(...
gclPresenter is PTableMyExampleFile dynamic<presenter>=Null)
Cuando se utiliza este atributo, la llamada a la ventana actualización Event será activada por:
Por ejemplo , al eliminar un elemento de una ventana de tabla generada por MVP RAD, se realiza una solicitud de actualización de UI mediante la llamada a RequestRefreshUI:
  • MArrayMyExampleFile es miembro de associated de PTableMyExampleFile,
  • PTableMyExampleFile se define como "presenter" de la ventana "WIN_Table_MyExampleFile".
Entonces, la actualización Event de "WIN_Table_MyExampleFile" será llamada automáticamente cuando se elimine un elemento.
La interfaz de usuario actualización Event permite agrupar todos los procesos de la ventana actualización, en lugar de distribuirlos en varios Event(clic, etc.).
Este mecanismo también se encuentra en la ventana del formulario. La ventana del formulario es relacionado a la clase presenter PFormMyExampleFile que contiene un miembro de associated MMyExampleFile. Por lo tanto, las peticiones de actualización realizadas en MMyExampleFile afectan a la ventana del formulario.
Atención: La interfaz de usuario actualización Event no debe ejecutarse "en cualquier sitio"..
Importante: RequestRefreshUI y RequestRefreshUIParent son asíncronos: la UI actualización Event se ejecuta al final del proceso actual, y las llamadas a RequestRefreshUI o RequestRefreshUIParent no se apilan. Estas funciones y este mecanismo pueden incluso utilizarse fuera de una arquitectura MVP. Este modo de funcionamiento ofrece una gran ventaja: si un bucle Process en el modelo llama 50 veces a RequestRefreshUI, WLanguage realizará una única llamada al final de Process (evita el parpadeo de UI).
Nota: para solicitar una UI síncrona actualización, basta con utilizar ExecuteRefreshUI (o ExecuteRefreshUIParent).
Versión mínima requerida
  • Versión 20
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/11/2023

Señalar un error o enviar una sugerencia | Ayuda local