Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Automatizando Procesos
• Detonando Microflows
• Microflow expressions
• Retrieving data
• Knowledge Check
Módulo 8
• Validación de información
• Regex
• Validation Microflows
• Borrando objetos
• Knowledge Check
Módulo 9
• Roles y módulos de usuario
• Reglas de acceso
• Seguridad
• Knowledge Check
Módulo 10
• Apps móviles
• Nanoflows
Restricted • Knowledge Check
Calcular la fecha de fin de curso automáticamente
La siguiente historia de usuario le va a permitir al usuario llenar automáticamente la fecha de fin de Curso.
Esto mejorará la experiencia de usuario, reduciendo algunos pasos, pero lo más importante, evitará posibles
errores en el llenado del documento.
En nuestro caso utilizaremos el comportamiento de “on change” ya que al cambiar el valor del widget de “no
selection” a “specific selection” este detonara el microflow.
Change object
En el menú de actividades de un microflow se encuentran actividades para trabajar con objetos
Change object nos permitirá cambiar el valor de un atributo de un objeto
Para poder alcanzar un atributo en otro objeto que no se encuentra en el alcance, se tendrá que agregar una
operación llamada “retrieve”
Esta es una de las razones por la cual una entidad no se va a mostrar en el autocompletado del “Expresión
editor”
“Retrieve”
Cuando trabajamos en la edición de un texto, esta información es visible en la pantalla (1 cliente) y a su vez guardada en
memoria (2 RAM), si esta información no es guardada en disco duro (3 hard drive) esta información se elimina.
Algo similar para en Mendix, cuando se genera P.E. el usuario da click a una nueva ubicación en nuestra app, se genera
un espacio vacío en el Application Server (2) el objeto es enviado al Cliente (1) donde es visible y se puede llenar, al
llenar la información esta será visible en el cliente y grabada en memoria, sin embargo si no se da click en salvar, la
información nunca se mandara a la base de datos y se perderá.
Retrieve “by association” or “by database”
Al solicitar información directamente desde la memoria es llamado un “association retrieve” esto significa que Mendix
buscara primero en la memoria y cuando esto no es posible, buscará en la base de datos la información que
necesitamos.
Esto puede hacer una app mas dinámica, ya que no tiene que hacer una conexión a la base de datos para traer la
información.
“Debugging the application”
Mendix nos ofrece diferentes herramientas para poder buscar errores en el desarrollo de nuestra aplicación, desde una
descripción detallada de los errores hasta ejecución paso a paso para poder encontrar el origen de este error de una forma
más fácil.
Análisis del error
El error es debido a que no todos los ingredientes de la función addDays están presentes al mismo tiempo, al
intentar Mendix hacer el cálculo sobre un objeto vacío se ejecuta un error.
Importante mencionar: esta lógica incluye decisiones, estas decisiones solo pueden tener UN flujo de entrada
Commit
Una vez hemos terminado el trabajo actual haremos commit hacia nuestro team server, es decir subiremos al team
server el avance en la app hasta ahora creada
¿Qué pasaría si Mendix reporta varios errores al hacer el commit? Esto significa que la app no puede correr en el
estado actual y por consecuencia no puede enviarse al team server, deberemos solucionar todos los errores antes de
terminar el commit.
Generando automáticamente el número de reservaciones
El usuario busca poder calcular el número de reservaciones que va a tener para cada entrenamiento, esto para poder
calcular el número de recursos necesarios como podrían ser espacios en la ubicación, materiales, o incluso “coffee
brake”
Datos Almacenados (Stored) vs Datos Calculados (Calculated)
Al elegir como se debe almacenar un atributo, es importante elegir si este atributo o dato será calculado o bien,
almacenado. Esto se puede a resumir de la siguiente forma:
• Si el valor cambia más frecuente de lo que el usuario lo observa, el dato será calculado
• Si el usuario observa el dato más frecuentemente de lo que cambia, será almacenado en la base de datos
Esto reduce el número de cálculos necesarios para mantener la información lo más exacta posible a la hora de mostrarla
Event Handlers
Otra forma de detonar la lógica de un microflow es a través de los “event handlers”, esto significa que Mendix
“escuchará” cómo se comporta un objeto es decir, si este objeto es creado, borrado, almacenado o bien se da cancelar
antes de poder crearlo (Roll back).
En nuestro caso vamos a generar un conteo de registros y usaremos esta herramienta en la entidad Registros para
poder calcular el número de ellos.
Validation Rules
Antes de crear cualquier validation rules, es importante tener en mente que se deben haber creado las entidades con
anterioridad.
Es por eso que existen los Validation Rules, que nos permiten verificar la información antes de guardarla en la base de
datos, estas validaciones se pueden agregar a los atributos o en el microflow.
Cuando los mensajes de validación no están conectados a un widget visible en la página, el error de validación de
mostrara en un pop up o inclusive en la pagina donde se ingresan los datos, algunas de las validaciones disponibles son
las siguientes:
La validación de datos debe ayudarnos a prevenir, campos vacíos, borrados no intencionales, o bien datos sin sentido
Agregando validaciones el Domain model
Coloquemos nuestra siguiente historia de usuario en corriendo:
Agregando validaciones el Domain Model
Nuestro usuario final solicita que las siguientes reglas sean aplicadas a los datos:
Regex = Regular expressions
Al realizar la verificación de cada uno de los atributos, nos damos cuenta que el campo de correo electrónico tiene una
particularidad: es necesario cumplir con la estructura nombre@mail.com esto nos permitirá asegurar que el dato se ha
integrado correctamente
El “merge” nos permitirá reintegrar la lógica al flujo principal, de esta manera podremos hacer todos los checks en un
solo paso.
El comportamiento por default de salvar puede ser replicado a través de una actividad Commit + Close
page
Creando un “Flag”
Una variable flag nos permitirá identificar si una condición se ha cumplido a través del proceso
Borrando objetos
Al borrar objetos existe la posibilidad de borrar objetos que estén asociados, esto podría causar efectos no
deseados en nuestra aplicación, por ejemplo: borrar por error los registros de un evento el cual ya tiene alumnos
registrados.
Para que no pase esto, utilizaremos ciertas propiedades de las asociaciones.
Un “delete behavior” define qué pasará al objeto asociado cuando un objeto es eliminado
Por ejemplo, si queremos evitar que se elimine un vuelo que tiene pasajeros, configuraremos un “prevention of
delete”
Borrando en cascada
Otra característica que nuestro usuario busca, es la posibilidad de borrar todos los registros de un alumno cuando este se
da de baja, esto para evitar tener registros falsos dentro de un evento de entrenamiento.
Niveles de seguridad
• Administradores
• Profesores
• Alumnos
De esta forma cada usuario tiene su propio grupo de derechos de acceso, por ejemplo: el administrador tendrá
acceso a crear y eliminar eventos de entrenamiento, mientras que el alumno solo tendrá derecho a ver los eventos
de entramiento y su información
Mendix separa la información de esta manera para permitir que los módulos sean reusados de una manera más
sencilla
¿Cuál es la relación entre los user roles y los module roles?
Un “user roles” está definido a nivel del proyecto y tienen module roles asignados a este.
En el “App security” se van a definir todos los roles no importando si esto es de una PWA, de una web
app o de una app nativa.
Reglas de acceso a páginas y Microlfows
Para evitar que un usuario pueda aterrizar en páginas que contienen ligas que no puede ejecutar debido a su perfil, es
necesario definir una página de inicio basada en su rol de usuario.
Creando accesos a las entidades
Para poder configurar los accesos a las entidades (objetos), es necesario activar la seguridad en modo producción,
esto nos generara varios errores, al no tener una definición de que roles de usuario podrán tener acceso a estas
entidades, esto lo solucionaremos a continuación
App Security Settings
Cuando un usuario tiene acceso a una página la cual posee un atributo al cual el usuario no tiene acceso, resulta
en un conflicto de seguridad, esto se puede resolver usando las propiedades de visibilidad condicional del atributo.
App Security settings
Existen otras opciones dentro de la sección App Security las cuales nos van a permitir:
• Administrator tab: establecer el password del administrador, este password es válido para un “local deployment”. Al
publicar la aplicación se solicitaran credenciales para cada ambiente.
• Demo users tab: esta sección permitirá cambiar rápidamente de roles para probar la seguridad dentro de nuestra app
• Anonymus users tab: se podrá habilitar usuarios de forma anónima sin embargo, es importante tener en mente que se
debe limitar el acceso para evitar perder la rastreabilidad de quien hace que.
• Password policy tab: Aquí es donde se determina que tan estrictos serán nuestros passwords y que política seguirán.
Cuando un usuario no tiene acceso a un elemento, por ejemplo: un microflow, Mendix ocultará
los elementos que muestren detonen este Microflow
9no knowledge check
Going Mobile
Existen muchas características a tomar en cuenta al pensar en una app móvil, como por ejemplo, si la navegación está
optimizada para dispositivos móviles o bien, si el layout se adapta de forma correcta a estos dispositivos, o si un widget se ve
mejor en un dispositivo que en otro.
elegir entre una aplicación que será app que será desplegada en una app store o una que se desplegada en una plataforma
basada en un navegador web
Una PWA permitirá la función “add to home screen” de tal manera que lanzará la app dentro de un browser, sin la necesidad
de descargarla desde una app store
PWA
Las “Progressive Web Applications” tienen tres principales beneficios:
• Son instalables: se pueden instalar en los dispositivos móviles y funcionar dentro de una experiencia que aparenta
ser nativa (sin las barras o herramientas del browser),
• Confiables: Una PWA nos permitirá trabajar parcialmente offline o completamente offline permitiendo así más
flexibilidad
• Capacidades extendidas: se puede hacer uso de las capacidades del dispositivo móvil donde reside, como: cámaras,
gps, nfc, dispositivos biométricos, etc.
Habilitar la casilla de “Allow Add To Home Screen Promt” y “Publish as a PWA” nos permitirá generar una
PWA
Los layouts preferentes para este tipo de aplicaciones serán “Phone Specific” mientras que los templates
específicos para estas apps serán Phone (Web)
Nuestra aplicación en móvil
Nuestro usuario final busca tener una página móvil para sus alumnos, en la cual sus alumnos puedan tomar
provecho de las herramientas móviles, como la geolocalización o bien compartir la información en redes.
Nanoflows
Los Nanoflows al igual que los Microflows, nos ayudan a expresar lógica dentro de Mendix con algunas ventajas:
A través de Nanoflows:
Los nanoflows son lógica que se ejecuta directamente en el dispositivo, por lo que esta lógica puede
usarse de forma offline
Los nanoflows están basados en una notación “BPMN” (Business Process Model and
Notation)
+
Los nanoflows ejecutan las “actividades de cliente” en cada paso
Compartiendo información vía mobile social channels
Restringiendo información a través de Xpath
10mo knowledge check
Thank You
Go Make It!