Ir al contenido principal

APEX 03 - 06 - Trabajar en Correcciones y Funcionalidades en paralelo mientras se minimizan los conflictos (Primera Parte)

En esta sexta entrega de la SAGA Ciclo de Desarrollo para aplicaciones APEX veremos cómo Oracle APEX permite que los equipos de desarrolladores trabajen en paralelo en una instancia de desarrollo compartida, proporciona bloqueo de página y protección contra pérdida de actualizaciones con el objetivo de ayudar a evitar que los desarrolladores no se pisen los pies unos a otros. 

Este tópico de trabajo en paralelo tiene muchas aristas y su explicación es extensa, por lo que he decidido dividirlo en dos partes.

Para facilitar su comprensión es importante entender cómo funciona el desarrollo multiusuario de APEX, cómo utilizar el bloqueo de páginas y cómo modularizar las aplicaciones para minimizar los conflictos, ahora hablaremos del bloqueo de páginas.

Comprender el desarrollo multiusuario de APEX

Oracle APEX es un entorno de desarrollo multiusuario que mantiene la versión actual de los metadatos de su aplicación almacenados en la base de datos. 

Los desarrolladores APEX utilizan un navegador web para crear y modificar las páginas de aplicaciones utilizando el Diseñador de páginas, además, utilizan asistentes y páginas de edición para trabajar en los demás tipos de componentes. 

Todos los aspectos de la experiencia en tiempo de diseño de APEX está preparada para que varios miembros del equipo puedan crear y editar componentes de la aplicación al mismo tiempo.

Cuando surgen conflictos potenciales entre los cambios que realizan diferentes desarrolladores a la vez, APEX se inclina por el lado de la precaución, por lo que es bueno estar consciente de cómo se comportará APEX cuando tu y un compañero de equipo choquen el uno con otro sin darse cuenta en su trabajo diario.

Desarrollo multiusuario para componentes

Mientras tu y tu equipo utilizan APEX para implementar correcciones o funciones, considera dos situaciones que podrían surgir debido al desafortunado momento de las acciones entre dos colegas. 

Imagina que tanto tu como un colega realizan el siguiente cambio aproximadamente al mismo tiempo:

  • Ambos crean una Lista de Valores llamada CLIENTES_LOV
  • Ambos editan la misma fuente de datos REST de "Pagos Recientes"

En ambos escenarios, uno de los cambios del desarrollador se guardará primero y el otro desarrollador recibirá un mensaje de error que dirá algo así:

  • “CLIENTES_LOV: ORA-00001: Restricción única violada”
  • “La versión actual de los datos en la base de datos ha cambiado desde que el usuario inició el proceso de actualización”

😉 APEX genera estos errores para evitar que los cambios de un desarrollador sobrescriban silenciosamente el cambio de otro que ha hecho lo mismo casi al mismo tiempo. El desarrollador que reciba el error deberá intentarlo nuevamente, tal vez se dé cuenta en el proceso que el trabajo ya fue realizado por un colega.

Desarrollo multiusuario para páginas

El Diseñador de Páginas también evita que los desarrolladores sobrescriban el trabajo de otros, pero refuerza la protección a un nivel más detallado que los asistentes de componentes y las páginas de edición.  El Diseñador de páginas realiza un seguimiento de los cambios en cada propiedad de cada componente de la página y guarda solo lo que ha cambiado. 

💡 Si dos desarrolladores editan la misma página al mismo tiempo y cada uno cambia diferentes componentes de la página, o cambia diferentes propiedades del mismo componente de página, entonces, ambos conjuntos de cambios respectivos se guardarán correctamente, el resultado será la unión de aquellas modificaciones. 

Mientras los compañeros de equipo realizan cambios en la misma página, ellos no ven los cambios “en vivo” no guardados de los demás, pero, cuando un desarrollador guarda sus propios cambios en la página, el Diseñador de Página se actualizará para reflejar cualquier cambio que los colegas hayan guardado mientras tanto.

🙈 Ahora, si dos colegas que trabajan en Diseñador de Páginas en la misma página cambian la misma propiedad del mismo componente de página, entonces el que guarde primero tendrá éxito mientras que el segundo recibirá un error “¡Error al guardar los cambios! Consulte los mensajes para obtener más detalles”.

Como se muestra en la Figura 1, cuando esto ocurre, las propiedades en conflicto se identifican con un icono circular rojo "x" en el Editor de propiedades y la ventana de Mensajes indican qué valores de propiedad han entrado en conflicto con los guardados recientemente por parte de un colega. El desarrollador que se encuentre con esta situación no podrá guardar la página, pero los valores originales se conservan en caso de que quiera copiarlos en una ubicación alternativa antes de abandonar su edición actual e intentar realizar los cambios en la página actual nuevamente.

Figura 1: El Diseñador de Página mostrando múltiples conflictos en cambios sobre las propiedades

Utiliza el bloqueo de páginas para evitar cambios conflictivos

Después de realizar un trabajo importante en una página, imagine la frustración de hacer clic en el botón Guardar solo para encontrar un mensaje "¡Error al guardar los cambios!". 🙇

Mientras trabajas para mejorar la funcionalidad de la página, vamos a suponer que un colega abre la misma página y guarda una edición rápida en una de las propiedades del componente de página en la  que estás ocupado realizando cambios. Esto provocaría inadvertidamente el mensaje "¡Error al guardar los cambios!", cuando más tarde guardes la página. 

😓 En este escenario, lamentablemente, te verías obligado a abandonar los cambios en esa página y hacerlos todos nuevamente. 

Aunque las funciones de edición multiusuario descritas anteriormente ofrecen una protección útil, es una buena práctica evitar crear ediciones que puedan causar conflictos en primer lugar.

Mantener una comunicación con los compañeros de equipo en forma global es una forma para que los demás sepan en que estás trabajando y para que eviten interrumpir involuntariamente el trabajo de los demás, sin embargo, la función de bloqueo de página es una forma aún más efectiva para desarrollar en forma defensiva para que el guardado de tus datos siempre resulte bien.

Bloquear una página para tomar propiedad exclusiva temporalmente

🙅 El bloqueo de páginas de Oracle APEX permite a un desarrollador reclamar derechos de edición exclusivos de una página mientras trabaja en cambios importantes. La duración del bloqueo es flexible, podría ser por unos pocos minutos o podría estar bloqueado durante semanas para dar cabida a amplias mejoras en la funcionalidad de una página existente. 

Los demás miembros del equipo ven que la página está bloqueada, no obstante,  aún pueden ver la página en el Diseñador de Páginas, sin embargo, no se les permite realizar ediciones hasta que se desbloquee la página. 

Como se muestra en la Figura 2, después de hacer clic en el icono de bloqueo para bloquear la página, puedes ingresar un comentario útil para explicar por qué lo estás haciendo.

Figura 2: Proporcionando un comentario útil cuando se bloquea una página

Vea qué páginas están bloqueadas en su aplicación

En la lista de páginas de la aplicación, en el modo “Informe”, los miembros del equipo ven una lista tabular que contiene una columna “Lock” que muestra el ícono apropiado al lado de cualquier página bloqueada como se muestra en la Figura 3

Figura 3: La lista de páginas de la aplicación muestra las páginas bloqueadas con un icono

Ver una página bloqueada en el Diseñador de páginas

Cuando un compañero de equipo visita la página que has bloqueado en Diseñador de Páginas, el editor de página se comporta como de solo lectura y el icono de bloqueo confirma esto. 

Al pasar el mouse sobre el icono se muestra qué colega está trabajando en la página como se muestra en la Figura 4. También puedes hacer clic en el ícono de bloqueo para ver el comentario que explica en qué está trabajando tu compañero de equipo.

Figura 4: Los colegas pueden ver que has bloqueado la página y ver el comentario de bloqueo que has dejado

Desbloquear una página para permitir que otro miembro del equipo la edite

Una vez que el desarrollador que bloqueó la página ha terminado de trabajar en ella, podrá volver a hacer clic en el icono de bloqueo en la página del diseñador para desbloquearlo. Al realizar este paso, puede ajustar su comentario original si es necesario. Después, otro miembro del equipo puede bloquear la página y trabajar en un nuevo tema relacionado con esa página.

😎 Si por algún motivo, el desarrollador original que bloqueó la página no se encuentra disponible, cualquier miembro del equipo que tenga el rol de "Administrador del Espacio de Trabajo" podrá desbloquear la página.

Juntos, creamos las aplicaciones del futuro!

Mi nombre es José Preda.

* José es Analista de Sistemas e Ingeniero de Software con especializaciones en tecnologías de Oracle, Microsoft, redes, infraestructura tecnológica y gestión de recursos humanos. Posee más de 30 años de experiencia en el área de tecnología, es de Paraguay, vive y trabaja en San Luis, Argentina. Fue consultor, capacitador y soporte técnico para Base de Datos y herramientas de Oracle, desde el año 2013 es miembro activo del Grupo de Usuarios Oracle de Argentina del cual es miembro del directorio desde el año 2023. Es CEO de su propia Consultora: Soft San Luis, una startup especializada en brindar formación profesional, consultoría, mentoría y soluciones con tecnología Oracle y Oracle APEX a empresas, equipos de desarrollo de consultoras y a particulares. En 2024 ha sido reconocido como  Oracle ACE Associate por la Corporación Oracle por sus contribuciones a la Comunidad de Usuarios de Tecnologías de Oracle




Comentarios

Entradas populares de este blog

Oracle APEX 24.1 ya se encuentra disponible!

Oracle APEX 24.1 ya se encuentra disponible! Descargalo:  https://www.oracle.com/tools/downloads/apex-downloads/ Ashish Mohindroo, Vicepresidente de gestión de productos Plataforma de aplicaciones APEX Low Code ha anunciado hoy Lunes 17 de Junio de 2024 que Oracle APEX 24.1 ya está disponible para su descarga y se está implementando en las regiones de desarrollo de aplicaciones OCI APEX y servicio de nube de base de datos autónoma en todo el mundo. Con esta última versión, aprende a crear tu primera aplicación de bajo código con GenAI. Esta versión se basa en tres pilares principales de innovación que permiten crear aplicaciones atractivas de nivel empresarial con facilidad:  Desarrollo de aplicaciones asistido por IA Aprovechamiento del poder de la plataforma de datos de próxima generación de Oracle y  Potentes componentes de nivel empresarial para crear aplicaciones web y aplicaciones para web móviles sofisticadas. Desarrollo de aplicaciones asistido por IA Con este lanzamiento, se i

APEX 23.1 - Notificaciones Push

Las notificaciones push PWA (Progresive Web App) en Oracle APEX son mensajes instantáneos que pueden ser enviados a los usuarios de una aplicación web progresiva sin que estos tengan que estar activamente utilizando la aplicación en ese momento.  Estas notificaciones se envían directamente a los dispositivos móviles o computadoras de los usuarios, permitiendo que estos se mantengan informados sobre actualizaciones relevantes, novedades o cualquier otra información importante relacionada con la aplicación que deseemos enviarles. Las notificaciones push PWA en Oracle APEX son una herramienta poderosa para aumentar la interacción de los usuarios con la aplicación y mejorar la experiencia del usuario en general.  Algunos usos que se le dan son:  enviar recordatorios, alertas, actualizaciones de contenido, promociones, estos entre otros mensajes que ayudan a mantener a los usuarios comprometidos y conectados con la aplicación. Mediante la configuración adecuada en Oracle APEX, los desarroll

APEX 02-06 - Cosa Número 5 de 10: Los estándares de SQL y PL/SQL

Aunque APEX es una plataforma de desarrollo de bajo código, rara vez nos salimos con la nuestra con proyectos que no involucren al menos algo de código. Muchos, de hecho, involucran MUCHO código y lo más probable es que el tuyo también lo haga. El código SQL y PL/SQL es fundamentalmente uno de los códigos más importantes que escribo para mis clientes y socios. La diferencia entre un SQL y PL/SQL que funciona bien y otro que no funciona puede ser la diferencia entre un sistema exitoso y una gran decepción. Ya sea que te guste tu código en minúsculas o mayúsculas o prefieras los nombres de tus tablas en singular o plural, o tengas preferencias particulares sobre el formato del código, es importante tener estándares que estén documentados e implementados en tu base de código. Mis estándares de codificación SQL y PL/SQL están adaptados de trivadis ( https://trivadis.github.io/plsql-and-sql-coding-guidelines/v4.3/ ) y, sean cuales sean tus estándares, asegúrate de comunicarlos bien a todo t