WPFUI Overview
Este proyecto contiene la versión de escritorio de la UI del ERP. Esta aplicación se desarrolló utilizando como tecnología a WPF de .NET Core, debido a las múltiples ventajas que tiene sobre WinForms, por ejemplo:
- Ofrece mayor flexibilidad de modelamiento.
- La interfaz gráfica es más moderna, vistosa y es compatible con distintos recursos como animaciones y temas.
- Tiene la habilidad de separar la interfaz gráfica de la lógica de forma más efectiva a través de los data binding.
- Permite desarrollar UI para aplicaciones de Windows y aplicaciones Web.
El patrón de diseño al que se encuentra orientada la aplicación es Model View ViewModel o MVVM, con el objetivo principal de desacoplar la lógica de negocio de los elementos de dominio. Además, se utiliza como framework a Caliburn Micro para asistir en el proceso de data binding de los diferentes elementos en las Vistas. Una de las características que sugiere este framework, es que debe existir una estructura simétrica entre los View y ViewModel, es decir que para cada ViewModel existe una Vista. Esto ayuda a que cada que se cargue un ViewModel, este sepa a que Vista corresponde.
El punto de inicio de la aplicación se encuentra en la clase Boostrapper, que es una clase inicialización del sistema, en donde se registran todos los servicios y componentes que se van a utilizar como los ViewModel, controles, etc.
A continuación, se detalla brevemente los principales directorios que se encuentran dentro del proyecto:
|
|
Behaviors |
Comportamientos que se agregan a determinados controles. |
|
Converters |
Para convertir valores lógicos a valores de comportamiento para diferentes controles. Ej: de boolean a color. |
|
|
Helpers |
Control de las conexiones, direcciones de servidores para el control de licencias, modificar archivo de configuración de la aplicación. |
|
|
MappingProfiles |
Perfiles de mapeo automático que se hacen con el AutoMapper. |
|
|
Models |
Contiene toda la información que se muestra por pantalla, como mensajes o ítems correspondientes a distintas entidades. |
|
|
Resources |
Animaciones, imágenes de la aplicación, archivos de traducción, diccionario de estilos. |
|
|
Services |
Logger de la aplicación de escritorio. |
|
|
SessionRefresher |
Se encarga de mantener la sesión abierta. |
|
|
UserActivityDetector |
Se encarga de detectar si hay actividad sobre la aplicación, en caso de tener la opción de tiempo de inactividad habilitada. |
|
|
ViewModels |
Enlace entre el modelo y la vista, contiene la lógica de la aplicación. |
|
|
Views |
Las vistas o interfaz graficas que se muestran por pantalla. |
La comunicación entre los componentes de la aplicación sigue un modelo de agregación de eventos, en donde la clase EventAggregator publica determinados mensajes en un bus de eventos que los controladores pueden entender.
La estructura visual de la aplicación está dividida en diferentes secciones, las cuales han sido señaladas y separadas para mejor comprensión en la siguiente imagen:

Cada una de estas secciones pueden ser consideradas como contenedores, que administran y controlan todas las vistas y elementos que se presenten en su interior, y están comunicadas entre ellas, como cuando los íconos de la barra de tareas se van habilitando dependiendo de la página que se esté mostrando.
Esta estructura brinda flexibilidad y mejora el proceso de mantenimiento de la aplicación. A continuación se procede a detallar brevemente cada una de estas secciones:
|
|
|
|
Shell View Model |
Contenedor global de la aplicación que aloja todos sus elementos visuales. |
|
Menú Principal |
Menú de opciones y operaciones especificas a la ventena de aplicación, como abrir archivos, manuales de ayuda, cambiar el tema, guardar favoritos, etc. |
|
Administración de Usuario |
Menú de administracion de usuario, cambio de contraseña, cierre y bloqueo de sesión. |
|
Barra de tareas |
Barra de iconos que representan todas las tareas disponibles al usuario dentro de la aplicación como: Editar, Guardar, Crear, Actualizar, Exportar, etc. |
|
Menú Lateral |
Índice de los diferentes módulos que tiene la aplicación. |
|
Control de Pestañas |
Representa al área de trabajo del usuario y controla las pestañas que se van abriendo y mostrando en pantaña. |
|
Página |
Cada pestaña que se abre y alberga todo el contenido que en ellas se muestra. |
|
Control de Administración |
Observa las interacciones de la barra de herramientas y asi modificar el contenido de la página. |
|
Contenido o Control de Usuario |
El contenido que se muestra o controles con el que interactua el ususario como textbox, combobox, listview, etc. |
|
Barra de estado o notificaciones |
Barra inferior que muestra el estado de ciertos servicios, si se realizaron con éxito o si existe algún problema. |
Created with the Personal Edition of HelpNDoc: Write eBooks for the Kindle

