Crear y Gestionar la Lista de Control de Acceso (ACL)

Es muy común en cualquier tipo de aplicación que necesitemos controlar el nivel de acceso de los usuarios a ciertas páginas o componentes de la aplicación dependiendo el privilegio otorgado a un usuario dado, es por ello por lo que vamos a crear una Página de Control de Acceso.

Para este ejemplo vamos a tener tres niveles diferentes de usuarios, por ejemplo, usuarios que solo pueden ver la información, usuarios que pueden ver y además editar la información de la aplicación y por último el usuario de tipo administrador.

Gestionar Control de Acceso

Crear Página de Control de Acceso

Al agregar la función de control de acceso a una aplicación, se crean varias páginas y los siguientes componentes:

  • Una región de control de acceso
  • Roles de acceso
  • Esquemas de autorización
  • Una opción de compilación à Feature: Access Control
  • Una configuración de aplicación à ACCESS_CONTROL_SCOPE

Los desarrolladores utilizan la lista de control de acceso para asociar los privilegios, vieweditadministration, con los usuarios de la aplicación. 

Dentro de la interfaz de usuario de control de acceso final, cada privilegio se correlaciona con una función de acceso:

  • View se correlaciona con el Reader rol.
  • Edit se correlaciona con el Contributor rol.
  • Administration se correlaciona con el Administrator rol.

Cuando usted agrega la función de control de acceso a una aplicación, el asistente de PL/SQL crea los siguientes esquemas de autorización:

Administration Rights – Este esquema de autorización verifica si el usuario actual en la aplicación tiene asignado el rol de ADMINISTRATOR.

return APEX_ACL.HAS_USER_ROLE (p_application_id=>:APP_ID, p_user_name => :APP_USER, p_role_static_id => 'ADMINISTRATOR');

Contribution Rights – Este esquema de autorización verifica si al usuario actual en la aplicación se le asigna el rol de ADMINISTRATOR o el rol de CONTRIBUTOR.

if apex_acl.has_user_role (
  p_application_id=>:APP_ID,
  p_user_name => :APP_USER,
  p_role_static_id => 'ADMINISTRATOR') or
  apex_acl.has_user_role (
    p_application_id=>:APP_ID,
    p_user_name=> :APP_USER,
    p_role_static_id=> 'CONTRIBUTOR') then
    return true;
else
    return false;
end if;

Reader Rights – Este esquema de autorización devuelve VERDADERO si el control de acceso está configurado para permitir que cualquier usuario autenticado acceda a la aplicación. Si este comportamiento no está permitido, comprueba si el usuario actual de la aplicación está asignado a algún rol de la aplicación.

if nvl(apex_app_setting.get_value(
   p_name => 'ACCESS_CONTROL_SCOPE'),'x') = 'ALL_USERS' then
    -- allow user not in the ACL to access the application
    return true;
else
    -- require user to have at least one role
    return apex_acl.has_user_any_roles (
        p_application_id => :APP_ID,
        p_user_name      => :APP_USER);
end if;

Lo primero que vamos a realizar es la creación de una página de control de acceso mediante la ejecución del Asistente para páginas de control de acceso.

Desde la página de inicio de Oracle APEX, ingresamos a nuestra aplicación, en mi caso: Demostration – Projects.

Desde la página de inicio de la aplicación, haga clic en el botón Create Page.

Seleccione el tab Feature, y luego seleccione Access Control.

En la ventana Create Access Control Pages:

  • Administration Page Reference: Identify an existing page

  • Existing Administration Page: 10000

Nota: en mi caso ya tenia una página de administración creada, en caso de que tú no la tengas creas una nueva.

Haga clic en el botón Next.

Verifique la ventana de Confirmation. Luego haga clic en el botón Create.

Ejecutar Página de Control de Acceso

Ejecutamos la página 10000 y podemos ver que se ha agregado una región de Access Control.

Dentro de esta región hay una lista que contiene la lista de Usuarios y la habilitación o no del Control de Acceso.

Haga clic en el botón Add User.

Ingrese en Username: CLARA. Marque el checkbox como Contribuitor, luego haga clic en Add User. Nota: El usuario debe existir como un usuario final en el espacio de trabajo.

Ingrese en Username: JANE. Marque el checkbox como Reader, luego haga clic en Add User. Nota: El usuario debe existir como un usuario final en el espacio de trabajo.

Haga clic en Users para ver los usuarios y sus roles.

Podemos ver que tenemos un usuario administrador, un usuario contribuidor y un usuario lector.

Desactivar Lista de Control de Acceso

Si desea desactivar la Lista de Control de Acceso y que cualquier usuario autenticado en APEX pueda ingresar a la aplicación, haga clic en Access Control. Luego en la pantalla modal haga clic en el botón para habilitar a cualquier usuario que ingrese a la aplicación.

Restringir acceso a usuario de tipo Lector

El usuario JANE no puede crear tareas ni editar tareas, por ello hay que restringir el botón créate y el enlace de edición de tareas a que sólo los usuarios de tipo Contribuidor y Administrador puedan tener acceso.

Desde la página de inicio de la aplicación, haga clic en la página 10 – Demo Tasks.

Haga clic en el botón CREATE.

Desde el panel de propiedades del botón navegue hasta la sección Security. Seleccione: Authorization Scheme: Contribuitor Rights.

Seleccione la región de informe interactivo Demo Tasks.

En la ficha Attributes de la región, y dentro de la sección Link, seleccione: Authorization Scheme: Contribuitor Rights.

Guarde los cambios de la página.

Probar el acceso de usuario CLARA – Con rol de CONTRIBUIDOR

Inicie sesión como el usuario CLARA.

Navegue hasta la página Demo Tasks.

El usuario CLARA puede editar una tarea o crear nueva tarea. Además, tampoco puede ver el menú de Administración.

Cierre sesión usuario CLARA.

Probar el acceso de usuario JANE – Con rol de LECTOR

Inicie sesión como el usuario JANE.

Navegue hasta la página Demo Tasks.

El usuario JANE no puede editar una tarea o no puede crear nueva tarea.

Cierre sesión de la usuaria JANE.

Resumen

En esta práctica hemos podido ver cómo implementar en APEX la Lista de Control de Acceso. Cabe destacar que es un trabajo muy puntual y de detalle ya que se debe determinar el nivel de acceso para los usuarios de sólo visualización, de edición de datos y el de nivel administración para toda la aplicación.

En este ejemplo hemos visto cómo implementarlo en una sola página con un informe interactivo, pero está demás decir que para cada parte de nuestra aplicación debemos indicar el nivel de acceso de los usuarios si tenemos implementado la lista de control de acceso.

El Viaje Apasionante de Oracle APEX: Una Década de Descubrimiento y Compromiso #JoelKallmanDay

Hace más de una década, en el lejano año 2009, mi vida dio un giro inesperado. Me encontraba viviendo en un país distante al mío, enfrentando un cambio de proporciones colosales al aventurarme en el mundo de la tecnología Oracle APEX. En ese entonces, era un completo desconocido para mí.

Suelo pensar que las cosas suceden por una razón, y mi viaje en la exploración de Oracle APEX comenzó gracias a una amiga de la universidad, Gisela Velazco, que visitó mi hogar de aquella época en Tampa, Florida. Ella me introdujo en el intrigante universo de las tecnologías Oracle. Sin embargo, fue la fascinante versión 4.0 de Application Express la que realmente capturó mi atención, quizás porque se trataba de desarrollo y no de administración de bases de datos. Me embarqué en un viaje para descifrar el misterio de esta herramienta, que prometía la creación de aplicaciones web sin necesidad de escribir código, basándose en la creación de componentes en forma totalmente declarativa.

Debo admitir que, al principio, todo me parecía un enigma indescifrable. ¿Cómo era posible desarrollar aplicaciones web de esta manera tan aparentemente sencilla? Mi mente dudaba, pero mi curiosidad persistía. Venia del mundo de la programación en Visual Basic 6.0, el cual crear una aplicación se basaba en líneas de código y no en asistentes declarativos.

Fue en 2012 cuando emprendí un viaje significativo, una travesía de autodescubrimiento hacia el mundo de Oracle APEX. Con cada paso que daba, mi determinación crecía, y mi deseo de compartir mis conocimientos con la comunidad de habla hispana se hacía más fuerte. Sabía que había una falta alarmante de contenido en español sobre esta poderosa herramienta.

Los años pasaron, y año tras año, organizamos el Oracle APEX Tour, un evento que reunía al principio a los grupos de usuarios de Oracle de Brasil, Uruguay y Argentina y que luego a lo largo de los años ya serían más de diez paises participando de un evento a lo largo de todo Latinoamérica! Fue durante estas experiencias que conocí a personas maravillosas y forjé amistades duraderas.

Pero un giro del destino me permitió participar en el evento en vivo en 2012, gracias a mi empleador en ese momento, SkillBuilders. Ese año, fue un año que pude conocer a grandes referentes de APEX como Daniel Bozzolo mi amigo que hoy ya no está con nosotros, también conocí a Daniel McGhan extraordinaria persona y que me enseño y me ayudó en mis primeros pasos con Oracle APEX 😊, y a todos mis amigos parte del cuerpo directivo de los Grupos de Usuarios de Uruguay, Brasil y Argentina y aunque no pude asistir en los años siguientes, siempre mantuve mi compromiso de difundir Oracle APEX entre las comunidades latinas.

En 2013, me atreví a llevar el Oracle APEX Tour Latinoamérica a California, ¡y fue una experiencia extraordinaria! Luego, el evento cambió de nombre y se convirtió en el Oracle Developer Tour, y a pesar de trabajar incansablemente en la organización, no siempre pude asistir debido a los costos de viaje desde California a otros países.

A lo largo de estos años, recuerdo las interminables reuniones para organizar eventos, el trabajo voluntario en la creación de los sitios web y la dedicación para promover los productos de Oracle. La vida avanza, las carreras evolucionan, y en este viaje, conocí a personas excepcionales, algunas de las cuales ya no están con nosotros, como Joel Kallman que me apoyó en todo momento para continuar mi trabajo evangelizando Oracle APEX en español! y mi amigo Daniel, a quienes recuerdo hoy con mucho cariño.

Durante más de una década, he dedicado una parte significativa de mi vida a difundir Oracle APEX en español. Me llena de satisfacción ver cómo esta herramienta se ha consolidado como la principal solución low-code en el arsenal de Oracle, desempeñando un papel fundamental en la estrategia de la empresa hacia las tecnologías respaldadas por la inteligencia artificial y el low-code. Lo vemos hoy cuando Larry Ellison y otros oradores exepcionales mencionan APEX en sus keynotes en Las Vegas en el Oracle Claud World 2023!

Siempre imaginé que APEX sería una herramienta formidable para el desarrollo de aplicaciones web, y hoy me alegra constatar que es la herramienta número uno para Oracle Corporation en sus soluciones empresariales.

En este emocionante viaje, he tenido el honor de escribir los tres primeros libros en español sobre Oracle APEX, crear numerosos cursos en español y redactar cientos de artículos sobre esta apasionante herramienta.

Mi camino sigue su curso, firme y constante, y lo más importante de todo es que me ha permitido conocer personas extraordinarias y formar parte de un grupo excepcional, como es el Programa ACE. Deseo que mis más de miles de alumnos, que han pasado por mis clases, vivan la misma pasión y tengan la experiencia de difundir esta herramienta práctica.

Mi último trabajo es el curso de Fundamentos de Oracle APEX 23.1 que estoy desarrollando para la comunidad hispana, seguimos con todo difundiendo Oracle APEX.

Sigamos adelante, juntos, construyendo sobre los cimientos que Joel estableció hace tantos años. Vivamos la experiencia de afirmar con orgullo que Oracle APEX es y seguirá siendo nuestra herramienta low-code preferida. ¡A todos los que han sido parte de este viaje, les doy mi más sincero agradecimiento!

Joel Kallman, Daniel Bozzolo, Fernando García, Marcelo Vazquez, Gisela Velazco, Daniel MacGhan, Javier Porrata, Adrian Filomeni, Marcelo Burgos, Monica Godoy, Marcelo Ochoa, Gustavo Gonzalez, Rita Nuñez, Lisandro Fernigrini, Javier Morales, José Manuel Preda, Javier Gallardo, Juan Pablo Di Fiori, Dimitri Gielis, Jackie McIlroy, Jennifer Nicholson, Jonathan Dixon, Joel Perez, Eddie Molina, Marco Lazo, Lorena Vénica, Francisco Gonzalez Lezcano, Edel Kammermann, Nelson Calero, Francis Mignault

¡Y muchas más personas que han pasado por este viaje del aprendizaje y el desarrollo profesional!

¡Muchas gracias a todos!

Cómo crear una página de búsquedas en APEX

En este artículo aprenderemos cómo podemos crear una página de búsqueda en una aplicación en Oracle APEX utilizando las configuraciones de búsquedas.

Para agregar una búsqueda a una aplicación debemos realizar dos pasos básicos:

  1. Crear una configuración de búsqueda en Componentes Compartidos. Una configuración de búsqueda contiene información sobre la fuente de datos que se puede buscar. Los tipos de búsqueda permitidos incluyen:
    • Estándar: La búsqueda se basa en una tabla, consulta SQL o fuente de datos REST. Podemos seleccionar la tabla en el asistente o ingresar una consulta SQL.
    • Lista: La búsqueda se realiza dentro de una lista seleccionada de Componentes Compartidos.
    • Oracle TEXT: La búsqueda se ejecuta utilizando la funcionalidad Oracle TEXT que proporciona capacidades de búsqueda lingüística y difusa.
  2. Crear una página de búsqueda. Podemos crear una página de búsqueda ejecutando el Asistente para Crear Página y seleccionando Página de búsqueda, o agregando componentes de búsqueda manualmente. Una página de búsqueda presenta un campo de búsqueda (o elemento de página) que permite a los usuarios enviar términos de búsqueda y una región de resultados de búsqueda. La región de Resultados de búsqueda contiene origenes de búsqueda que se asignan a configuraciones de búsqueda.

Preparando la Búsqueda de Aplicación

Para el siguiente ejemplo de cómo crear una búsqueda estándar vamos a partir de los siguientes supuestos:

  • Instalamos el juego de datos de ejemplo Datos de proyectos en nuestro esquema. (Desde el módulo Utilidades -> Juego de datos de ejemplo).
  • Creamos una aplicación en base a este juego de datos que contendrá dos informes interactivos uno de la tabla EBA_PROJECTS y otro de la tabla EBA_PROJECT_TASKS.

Tareas

Una configuración de búsqueda contiene información sobre un origen de datos con capacidad de búsqueda. Vamos a trabajar primero en crear dos configuraciones de búsqueda y luego vamos a crear una página de búsqueda utilizando el Asistente para crear página.

Crear Configuración de Búsqueda

La primera configuración de búsqueda se asigna a la tabla EBA_PROJECTS. La segunda configuración de búsqueda se asigna a la tabla EBA_PROJECT_TASKS.

Los pasos a seguir para crear dos configuraciones de búsqueda estándar son:

  1. Ingresamos a la página de inicio de la aplicación en la cual tenemos los dos reportes interactivos de las tablas EBA_PROJECTS y EBA_PROJECT_TASKS.
    Hacemos clic en Componentes Compartidos.
  2. En la sección de Navegación y búsqueda, hacemos clic en Buscar configuraciones.
    Aparece la página de Buscar Configuraciones.
  3. Vamos a crear la primera configuración de búsqueda que se asigna a la tabla EBA_PROJECTS:
    En la página Buscar Configuraciones, hacemos clic en Crear. Aparece el asistente de Crear configuración de búsqueda.

En el paso 1 del asistente: Detalle:

  • Nombre: ingrese un nombre, por ejemplo, Search Projects.
  • Tipo de Búsqueda: seleccione Estándar.
  • Haga clic en Siguiente.

En el paso 2 del asistente: Origen:

  • Origen de Datos: seleccione Base de Datos Local.
  • Tipo de Origen: seleccione Tabla.
  • Propietario: seleccione el propietario de la tabla.
  • Nombre de Tabla/Vista: seleccione EBA_PROJECTS.
  • Haga clic en Siguiente.

En el paso 3 del asistente: Asignación de Columna:

  • Columna de Clave Primaria: seleccione la columna ID.
  • Columna de Título: seleccione la columna NAME.
  • Columna de Descripción: seleccione la columna DESCRIPCIÓN.
  • Origen de icono: configure el icono que se muestra en el encabezado del resultado de la búsqueda. Las opciones incluyen:
    • Iniciales: se utiliza la columna Título para mostrar el icono como iniciales.
    • Clase de Icono: se utiliza las clases CSS ingresadas para mostrar el ícono.
    • Columna Clase de icono: se utiliza la columna seleccionada que contiene el icono de clase CSS para mostrar el icono. Para este ejemplo, aceptamos el valor predeterminado Iniciales.
  • Hacemos clic en Crear configuración de búsqueda.

Se crea la configuración de búsqueda y aparece la página Editar Buscar configuración y muestra el mensaje Configuración de búsqueda creada.

4. Ahora vamos a crear la segunda configuración de búsqueda que se asigna a la tabla EBA_PROJECT_TASKS:

Hacemos clic en la ruta de navegación de Buscar Configuraciones para regresar a la página de Buscar Configuraciones.

Hacemos clic en el botón Crear en la página de Buscar Configuraciones.
Aparece el asistente Crear configuración de búsqueda.

En el paso 1 del asistente: Detalle:
Nombre: ingrese un nombre, por ejemplo, Search Project Tasks.
Tipo de Búsqueda: seleccione Estándar.
Haga clic en Siguiente.

En el paso 2 del asistente: Origen:
Origen de Datos: seleccione Base de Datos Local.
Tipo de Origen: seleccione Tabla.
Propietario: seleccione el propietario de la tabla.
Nombre de Tabla/Vista: seleccione EBA_PROJECT_TASKS.
Haga clic en Siguiente.

En el paso 3 del asistente: Asignación de Columna:
Columna de Clave Primaria: seleccione la columna ID.
Columna de Título: seleccione la columna NAME.
Columna de Descripción: seleccione la columna DESCRIPCIÓN.
Origen de icono: configure el icono que se muestra en el encabezado del resultado de la búsqueda. Para este ejemplo, aceptamos el valor predeterminado Iniciales.

Hacemos clic en Crear configuración de búsqueda.

Se crea la configuración de búsqueda y aparece la página Editar Buscar Configuración.

Hacemos clic en la ruta de navegación de Buscar Configuraciones para regresar a la página de Buscar Configuraciones.

Editar Configuraciones

Desde la página de Editar Buscar configuraciones, hacemos clic en la primera configuración: Search Project Tasks.

En la sección o ficha Enlace, seleccionamos Redirigir a Página en esta Aplicación. Buscamos la página correspondiente al reporte interactivo.

Luego, hacemos clic en Aplicar Cambios.

Seleccionamos la segunda configuración: Search Projects para editar.

Seleccionamos la ficha Enlace y en tipo de enlace seleccionamos Redirigir a página de esta Aplicación.

Crear una página de búsqueda estándar

Una página de búsqueda presenta un campo de búsqueda y una región de resultados de búsqueda. En el Diseñador de Página, la región de Resultados de búsqueda contiene origenes de búsqueda que se asignan a las configuraciones de búsqueda definidas en Componentes Compartidos.

Nota: Utilizando APEX en lenguaje en español se genera un error de que no se puede crear la página. Por ello, hay que crear esta página utilizando APEX en idioma inglés, de ese modo la página será creada normalmente. (Este error ya lo he reportado al equipo de APEX :))

Para crear una página de búsqueda ejecutando el Asistente para crear página:

Navegamos hacia la página de inicio de la aplicación:

  • En la página de inicio de nuestro Espacio de Trabajo, hacemos clic en el icono del Creador de Aplicaciones.
  • Seleccionamos la aplicación.
  • En la página de inicio de la aplicación, hacemos clic en Crear Página.
  • Aparece la ventana modal de Crear Página y presenta tres pestañas: Componente, Función y Páginas heredadas.
  • En Componente, seleccionamos Página de búsqueda.
  • En la sección, Definición de página:
    • Nombre: Search Projects.
    • Este texto también se utiliza para el título de la página. Después de la creación de la página, podemos modificar el título en el Diseñador de Páginas.
    • Modo de Página: Normal.
    • Buscar Configuraciones: seleccionamos Search Project Tasks y Search Projects.
    • Navegación: aceptamos el valor predeterminado.
    • Hacemos clic en Crear Página.

Aparece el diseñador de página.

En la pestaña Representación de página, vemos el elemento de la página, P6_SEARCH y la región de Resultados de la búsqueda. P6_SEARCH es el campo de búsqueda que permite a los usuarios enviar términos de búsqueda. La región de resultados de búsqueda contiene los resultados de la búsqueda y dos origenes de búsqueda que se asignan a las configuraciones de búsqueda creadas en componentes compartidos. Podemos refinar y controlar aún más la visualización y el comportamiento de la búsqueda editando atributos en el Editor de propiedades.

Tengamos en cuenta también que, si seleccionamos un origen de búsqueda, los atributos del origen de búsqueda se muestran en el Editor de propiedades.

Ejecutamos y probamos la página:

En el campo de búsqueda, ingresamos una búsqueda, por ejemplo, web development y presionamos <Enter>.

Aparecen los resultados de la búsqueda.

De esta forma podemos crear una página de búsqueda estándar en APEX.

¡Hasta la próxima!




Comparto contigo mi vivencia en el Oracle Cloud World 2023

El emocionante evento Oracle Cloud World 23, que tuvo lugar la semana pasada en la vibrante ciudad de Las Vegas, Nevada, congregó a apasionados por la tecnología, influyentes de la industria y entusiastas de Oracle de todos los rincones del planeta. Fue una experiencia inolvidable repleta de emocionantes anuncios, inspiradoras ideas y valiosas oportunidades para establecer conexiones en red. Como miembro del Programa Oracle ACE, tuve el privilegio de asistir y, al mismo tiempo, representar con orgullo a mi empresa, Kiú Software Integration. ¡Fue un evento verdaderamente excepcional!

Te comparto mis experiencias:

Día 1 – 18 de Septiembre del 2023

¡El lunes 18 fue día de registración para mí, la verdad todo muy bien organizado y muy rápido a la vez! Muy contenta obtuve mi tarjeta de registración:

Luego tuve la gran oportunidad de reunirme con los Oracle ACEs que habían llegado para el video de bienvenida al evento del Oracle Cloud World. Estuvo muy divertido hacerlo y me encontré con tantos amigos de Latinoamérica como Gustavo Gonzalez, Rita Nuñez, Edel Kammermann, Nelson Calero y Rolando Carrasco.

Puedes ver el video AQUÍ.

Lo lindo de este evento es que te puedes reunir con personas que trabajas remotamente y en este evento te permite poder verlos personalmente como el caso de que pude ver a Jackie Mcllroiy y a Dimitri Gielis de APEX Office Print – AOP, Junto con Edel y Nelson.

Después me fui a buscar el regalito del evento 🙂 una botella de agua, una cartuchera, un anotador y una lapicera 🙂

Por la tarde tuve el placer de compartir tiempo de buena conversación y comida en Yard House, lo recomiendo si se pasan por Las Vegas, con miembros del Programa ACE, Michel Schildmeijer, Sean Scott y su esposa Maggy, y mi amiga Rita Nuñez.

Por la noche tuve el placer de conocer personalmente a Javier Morales y disfrutar una cena y charlar sobre Café Database, APEX y mucho más! La verdad que linda reunión ha sido!!!

¡Este primer día fue muy emocionante para mí ya que el poder hablar en persona con mis amigos de la distancia es lo más lindo que hay!

Día 2 – 19 de Septiembre del 2023

¡Este día empezaron las sesiones y Keynotes!

Lo interesante es que al entrar al evento pasabas por controles para no pasar nada metálico adentro, en mi caso la primera vez sonaron todas las alarmas y se prendió la luces del control jajajajaja sacaba una cosa de la mochila, volvía a pasar, volvía a sonar la alarma jajaja así estuve un buen tiempo al final casi saque todo de la mochila y al fin pude pasar, ahí me di cuenta que lo que sonaba era mi porta tarjetas personales que era de un material metálico, entonces nunca mas lo cargue conmigo, lo deje en el hotel y no tuve mas problemas para pasar los controles 😊

Otras personas me contaron que el estuche de lo lentes también hacía sonar la alarma y prender las luces rojas jajajajaja. A tenerlo en cuenta para el próximo año!

¡Al entrar al lugar del evento todo era muy emocionante!

Sesión “La organización impulsada por la Inteligencia Artificial”

Los líderes de Cohere, NVIDIA, Oracle y Deloitte explicaron los enfoques que las organizaciones líderes están forjando en torno a la IA. La verdad este evento se centró muchísimo en la Intel inteligencia Artificial!

Conferencia magistral de Safra Catz “Poner el éxito del cliente en el centro de todo” (ver aquí)

Este fue mi primer Keynote, muy interesante. Se habló sobre cómo las empresas abordan el cambio, ven oportunidades y se adaptan, y se mencionó a Uber como un ejemplo de empresa que ha experimentado una transformación significativa.

El CEO de Uber Dara Khosrowshahi, destaca varios aspectos importantes:

  1. Transformación de Uber: El CEO menciona que Uber ha experimentado una increíble transformación desde su llegada a la compañía y destaca el trabajo en equipo de todos los empleados de Uber en esta transformación.
  2. Crecimiento: Se enfatiza que el enfoque de Uber para el año 2024 es el crecimiento. La compañía opera a gran escala, realizando 2 mil millones de viajes cada trimestre y tiene como objetivo agregar mil quinientos millones de viajes adicionales cada año a su plataforma.
  3. Innovación y nuevos productos: Se mencionan varios ejemplos de nuevos productos e innovaciones que Uber está desarrollando, como servicios de entrega de alimentos, transporte en dos ruedas, vehículos tipo autobús y más. La innovación es clave para el crecimiento continuo de la empresa.
  4. Cambio en el negocio: El CEO destaca que Uber ha evolucionado desde ser una empresa de transporte tradicional hasta convertirse en una plataforma que ofrece una amplia gama de servicios, incluyendo transporte de personas, entrega de alimentos y productos.
  5. Modernización de infraestructura: Se menciona que Uber ha modernizado su infraestructura para adaptarse al crecimiento y mantener los costos bajo control, incluyendo una asociación con Oracle Cloud para escalar de manera efectiva.
  6. Uber Direct: Se resalta la iniciativa de Uber Direct, que permite a minoristas conectar su sistema de punto de venta directamente a la plataforma de Uber para ofrecer entregas rápidas y flexibles, compitiendo con gigantes como Amazon.
  7. Elasticidad en la nube: Se hace hincapié en la ventaja de utilizar la nube para escalar y ajustarse según las necesidades, especialmente durante tiempos inciertos.

En caso de AON se destacó:

– La automatización de ventas, marketing y servicio en Aeon y su enfoque en la satisfacción del cliente.

– La consolidación de datos de múltiples sistemas en Oracle para mejorar la capacidad de servicio a nivel global.

– El uso de inteligencia artificial (AI) para impulsar la eficiencia y la innovación en Aeon y abordar desafíos específicos de la industria.

– La importancia de proteger datos, privacidad y propiedad intelectual al implementar AI.

También Safra habló con otros clientes como Loblaw, la cual es una empresa de comestibles y farmacia líder en Canadá que busca ayudar a los canadienses a vivir una vida major, el cual  enfatizó el éxito de la migración de su base de datos, una de las más grandes con aproximadamente 180 terabytes, a Oracle Cloud dando importancia a la seguridad de los datos y la mejora de la postura de seguridad durante la migración a la nube.

En caso de Emerson, una empresa que se fundó originalmente como un fabricante de motores eléctricos y ventiladores en 1890, pero a lo largo de su historia, ha evolucionado a ser una empresa de tecnología industrial que ofrece soluciones de automatización para industrias esenciales, como energía, química y farmacéutica. La empresa opera a nivel global, con presencia en más de 80 países, 130 fábricas y una amplia red de proveedores, subraya su compromiso con la optimización de operaciones y la sostenibilidad en un mundo cada vez más automatizado.

Y finalmente First Solar, es una empresa de tecnología solar con la misión de combatir el cambio climático. First Solar ha implementado soluciones de Oracle en sus operaciones, incluyendo Oracle HCM (Human Capital Management) y Oracle ERP (Enterprise Resource Planning) para simplificar y mejorar sus procesos empresariales. La empresa está comprometida con la sostenibilidad y tiene una baja huella de carbono en la producción de sus paneles solares. También ha desarrollado la capacidad de reciclar el telururo de cadmio, lo que contribuye a la sostenibilidad a largo plazo. First Solar está interesada en la implementación de inteligencia artificial (IA) en sus procesos de fabricación para mejorar la eficiencia y la calidad. La empresa está ansiosa por explorar las capacidades de IA ofrecidas por Oracle.

En resumen, se resaltó cómo Oracle y sus clientes están trabajando juntos para aprovechar la tecnología y los datos para impulsar el éxito empresarial, mejorar la satisfacción del cliente y abordar los desafíos del futuro.

Sesión corta “Brinde soporte a un sitio con 6 millones de visitants: Oracle APEX en Acción”

Esto fue de lujo, vemos como el sitio de Oracle LiveLabs aprovecha el poder de Oracle APEX para crear una experiencia de taller inmersiva para más de 6 millones de visitantes y ofrece más de 700 talleres.

Tuve el placer de conocer a su presentador Rene Fontcha, Master Principal Solution Architect de Oracle.

¡Vamos a ver si podemos crear laboratorios en español para nuestra querida comunidad!

Stand de Oracle APEX

Después de tanta información me acerqué al stand de Oracle APEX y pude conocer en persona a Mónica Godoy, Senior Principal Product Manager de APEX. Sin ser repetitiva que lindo es conocer a colegas que trabajas a la distancia y ahora puedes verlos “face to face”. 😊

Sesión “Oracle APEX con IA: Cambiando la cara del Desarrollo de Aplicaciones”

Muy interesante la presentación realizada por Ashish Mohindroo, GM/ Vice president, Low-Code & AI Applications Platform de Oracle.

Mucho enfoque en la velocidad de desarrollo con Oracle APEX. Con esta frase dicha por el mismo Larry Ellison:

Se habló de lo que es Low Code sus beneficios y por supuesto qué es Oracle APEX 😉

Pero lo mas importante es el futuro del uso de la IA generativa:

Mostraron una aplicación móvil que es utilizada en New York para encontrar escuelas secundarias según ciertos criterios que utiliza IA por ejemplo para generar la carta para realizar el envío de la aplicación para la escuela.

Conferencia magistral de Larry Ellison “La visión de Oracle para el futuro” (ver aquí)

Hay mucho que decir de este keynote pero te dejo unos puntos esenciales que destaco.

  1. La IA generativa, como APEX, está reemplazando la programación manual en Java para la creación de aplicaciones. Esto reduce el tamaño de los equipos de desarrollo y mejora la velocidad de desarrollo. Además, las aplicaciones generadas son más seguras y fiables.
  1. El Oracle Autonomous Database se presenta como una solución revolucionaria que no requiere administradores de bases de datos (DBA). La base de datos se instala, configura, actualiza y ajusta automáticamente, lo que mejora la seguridad y la confiabilidad al eliminar errores humanos.
  1. La IA está transformando cómo Oracle aborda la gestión de datos, y se destaca cómo las aplicaciones se pueden especializar para campos como el derecho y la medicina utilizando datos de entrenamiento específicos almacenados en una base de datos Vector de Oracle.
  1. Se enfatizó que la IA está haciendo que Oracle sea más competitiva y eficiente en el mercado de la nube, con un enfoque en la velocidad y la economía en el entrenamiento de modelos de IA y en la interconexión de computadoras en la nube.
  1. Se mencionó que la automatización, impulsada por la IA, es más confiable y segura que las tareas manuales, y se compara con la seguridad de los vehículos autónomos en comparación con los vehículos conducidos por humanos.

En resumen, Larry destacó cómo la IA está transformando la forma en que Oracle desarrolla aplicaciones y administra bases de datos, lo que conduce a una mayor eficiencia, seguridad y confiabilidad en sus servicios en la nube. También se enfatizó la importancia de la automatización en la eliminación de errores humanos.

Meetup Oracle APEX

¡Después de tanta información llegó el momento de hacer conexión con los APEX fans! Pude asistir a la reunión que impulsó Insum en el área de comidas del Hotel Venetian.

Pude reunirme con algunos de los referentes de APEX a nivel mundial como Francis Mignault, Jonathan Dixon, y Jackie Mcllroy, y muchos más!

¡Mas tarde ese día pude ver la majestuosidad de las Vegas en una linda reunión en las alturas!

Día 3 – 20 de Septiembre del 2023

Conferencia magistral de Juan Loaiza “The future of data and app dev” (ver aquí )

¡Este Keynote me exploto la cabeza! Me encantó como estuvo organizado. Compartí este evento juntos a mis amigos Rita y Javier.

En esta presentación Juan habló sobre la atención que están recibiendo las nuevas tecnologías en el ámbito de la gestión de datos y el desarrollo de aplicaciones. Él mencionó que el futuro de la gestión de datos se centra en aumentar la productividad a través de la generación de soluciones de datos en lugar de programarlas manualmente. Para ello se describen tres estrategias clave para lograr esto: la generación de datos centrados en el usuario, la generación de aplicaciones completas y el uso de la inteligencia artificial generativa para aumentar la productividad.

Se presentó el concepto de “JSON Relational Duality Views” como una forma de lograr que una base de datos relacional genere datos en formato JSON de manera eficiente. Se describió cómo se definen estas vistas para reflejar la estructura de los documentos JSON deseados y cómo se pueden consultar utilizando API de documentos estándar. También se habló que las vistas de gráfico en la base de datos 23c permiten declarar la intención de tratar los datos como vértices o aristas en un gráfico, lo que facilita la consulta de conexiones y relaciones entre datos en un grafo. Un tema que seguro mi amigo Javier Morales podrá profundizar!

Lo que más me encantó es que se habló sobre la generación de aplicaciones utilizando tecnologías de bajo código (low code) y la incorporación de inteligencia artificial (IA) en el desarrollo de aplicaciones.

Se mencionó que Oracle APEX es una herramienta líder en el campo del desarrollo de aplicaciones de bajo código, que permite a los desarrolladores crear aplicaciones de cualquier nivel de complejidad de manera más sencilla y productiva. También se destacó que más de 2 millones de aplicaciones APEX han sido desarrolladas y que la herramienta es altamente preferida en la industria. ¡Vamos Oracle APEX!

Se mencionó que Oracle está extendiendo el uso de tecnologías de bajo código para abordar una variedad de casos de uso, como flujos de trabajo, aplicaciones móviles y aplicaciones interconectadas. Se enfatizó que la combinación de la declaración de intenciones en el uso de datos con tecnologías de bajo código facilita la generación de aplicaciones más complejas y avanzadas.

Además, se mencionó que Oracle está incorporando tecnología de inteligencia artificial (IA) en sus aplicaciones y servicios, lo que permite una búsqueda y generación de contenido más avanzada y personalizada.

¡Este Keynote lo describiré en más detalle en otro artículo porque la verdad vale la pena!

Sesión: Oracle Forms a Oracle APEX: Historias de éxito de clientes

Esta sesión fue presentada por Mónica Godoy, Senior Principal Product Manager de APEX. En ella explicó sobre qué es Oracle APEX y luego dio paso a las historias de éxitos de clientes que han modernizado sus sistemas de Forms a Oracle APEX.

Es interesante este diagrama de flujo para conocer cuando deberíamos modernizar.

Y se presentó el desafío de Humanic en la modernización de Forms a APEX de la mano de su presidente Bradeley Toland y su CTO Juan Flores.

Al finalizar la charla, me puse a repartir botones que hice de APEX para los fans!!! A muchos les gustó!!!

Cena de los Oracle ACEs

Como todos los años en el Oracle Cloud World se realiza una cena para todos los miembros del Programa ACE y este año no pudo faltar. La cena se realizó en el restaurante Mercato Della Pescheria en el Gran Canal Shoppes en el Hotel The Venetian. ¡Quiero expresar mi agradecimiento a Jennifer Nicholson y a todo el Programa ACE (Oana Bonu, Sapna B) por organizar esta cena para todos nosotros!

Tuve la oportunidad de re-encontrarme con otros amigos ACEs (Rita, Javier, Rolando) y conocer a nuevas lindas personas como Matt Mulvaney, Stefan Oehrli, Roy Salazar entre muchos más!

Fiesta del Oracle Cloud World 2023

¡Para finalizar el día participamos de la fiesta del evento! ¡Imperdible fue lindo pasar tiempo con los amigos!

Día 4 – 21 de Septiembre del 2023

Este día fue mucho networking y recorrer los distintos stands del evento. ¡Ya con mucha calma y menos gente era más fácil recorrer todo el lugar!

Reunión de Despedida 

Ya con el evento terminado pudimos tomarnos el tiempo de reunirnos para despedirnos y dar nuestras impresiones del evento!

Día 5 – 22 de Septiembre del 2023

Aventura en Kayak organizado por el Programa Oracle ACE

¡Esta fue mi primera experiencia realizando la Aventura con el grupo del Programa ACE sino subiendo a un Kayak!! ¡Al principio me sentía bastante nerviosa pero después al ver que el kayak era bastante estable lo disfrute mucho y la verdad fue muy divertido!

Conclusión

Participar en el emocionante Oracle Cloud World 2023 no solo enriqueció mi mente con ideas innovadoras, conocimientos de vanguardia y las últimas tendencias tecnológicas, ¡sino que también me brindó una experiencia que atesoro profundamente!

Durante el evento, tuve la oportunidad de establecer conexiones significativas con personas increíbles, reunirme cara a cara con colegas que comparten mi pasión y sumergirme por completo en la energía de un evento de escala global. ¡No solo amplié mi red profesional, sino que también forjé nuevas amistades que enriquecerán mi vida!

En resumen, mi participación en el Oracle Cloud World 2023 no solo me mantuvo al tanto de lo último en tecnología, sino que también me llenó de alegría al descubrir el poder de la comunidad y la oportunidad de crear lazos duraderos en este emocionante mundo global. ¡Un evento inolvidable que espero con ansias participar el siguiente año!

Usando directivas de plantillas en una región de tipo tarjetas

Las directivas de plantilla solo son compatibles con los complementos de componentes de plantilla, atributos específicos en plantillas de correo electrónico y las siguientes regiones: tarjetas, cuadrícula interactiva, informe clásico, búsqueda de aplicaciones y región de informe interactivo. 

Las directivas se pueden anidar, lo que significa que cualquiera de los textos de la plantilla puede contener otra directiva. Estas directivas se procesan como parte de sustituciones del lado del cliente o del servidor.

Para determinar si un atributo admite directivas de plantilla, la Ayuda de Page Designer incluye el texto “Admite directivas de plantilla del lado del cliente” o “Admite directivas de plantilla del lado del servidor”. 

Directiva de Condición IF

Utilizamos la directiva IF para mostrar texto condicionalmente en función de si un elemento o columna tiene un valor.

{if TAGS/}
    <ul class="a-tags">
    {loop "," TAGS/}
 	    <li class="a-tag">&APEX$ITEM.</li>
    {endloop/}
    </ul>
{endif/}

Si el valor de la columna TAGS no es nulo, la directiva IF toma un valor, en este caso el valor separado por comas TAGS y lo divide en una lista. El símbolo especial APEX$ITEM toma el valor del elemento de la lista actual.

La siguiente tabla resume las directivas de condición disponibles.

Puede haber cero o más directivas elseif. La directiva elseif else son opcionales. Las directivas deben ir en el orden mostrado.

Ejemplo

Un informe de tarjetas contiene una columna denominada DESCRIPTION. El siguiente atributo de expresión HTML mostrará la descripción si no es nula (cadena vacía) y de lo contrario mostrará “Sin descripción”. 

{if DESCRIPTION/}&DESCRIPTION.{else/}No description.{endif/}

Directiva de Condición CASE

Utilizamos la directiva CASE para mostrar texto según el valor de un elemento o columna.

{case NAME/}
{when STRING1/}
TEMPLATE_TEXT1
{when STRING2/}
TEMPLATE_TEXT2
{otherwise/}
TEMPLATE_TEXT
{endcase/}

NAME es un atributo de elemento, nombre de columna o componente de plantilla. El valor se compara con las cadenas después de cada directiva WHEN y, si son iguales, se genera el siguiente texto. Si ninguna directiva WHEN coincide, se emite el texto después de la directiva OTHERWISE, Een caso de que exista. El valor y cada cadena se eliminan los espacios iniciales y finales antes de la comparación. La comparación distingue entre mayúsculas y minúsculas.

Ejemplo

Este ejemplo que utiliza la tabla EMP y muestra la compensación de manera diferente según el JOB. Para los vendedores, muestra tanto el salario como la comisión. Para el presidente muestra “–” en lugar de salario y para todos los demás puestos muestra solo el salario.

{case JOB/}
{when SALESMAN/}
&SAL. (&COMM.)
{when PRESIDENT/}
--
{otherwise/}
&SAL.
{endcase/}

Directiva de BUCLE

Utilizamos la directiva LOOP para repetir el texto una vez para cada elemento en un elemento o valor de columna de valores múltiples (delimitados por caracteres).

{loop ["SEP"] NAME/}
TEMPLATE_TEXT
{endloop/}

NAME es un nombre de elemento o columna que tiene varios valores separados por el carácter dado por SEP. El separador predeterminado es ” :“. Si SEP tiene más de un carácter, se trata como una expresión regular.

El texto de la plantilla dentro del bucle puede utilizar estos símbolos de sustitución:

  • APEX$ITEM– Este es el valor del elemento actual en la lista.
  • APEX$I– Este es un índice basado en el elemento actual en la lista.

Ejemplo

El siguiente ejemplo toma una columna llamada TAGS que contiene una lista de etiquetas separadas por comas (,) como “manzanas, cerezas, peras” y la convierte en una lista HTML a la que se le puede aplicar un estilo con CSS.

<ul class="tags">{loop "," TAGS/}
  <li class="tag-item">&APEX$ITEM.</li>
{endloop/}</ul>

Directivas WITH y APPLY

Utilizamos la directiva WITH para asignar valores a los marcadores de posición para el componente de plantilla que se especifica en la directiva APPLY.

{with/}
PLACEHOLDER1:=VALUE1
PLACEHOLDER2:=VALUE2
{apply TEMPLATE_INTERNAL_NAME/}

Los requisitos al utilizar esta directiva incluyen:

  • Utilice la directiva WITH para asignar valores a marcadores de posición para el complemento Componente de plantilla que se especifica en la directiva APPLY.
  • Los complementos del componente de plantilla utilizan la representación del lado del servidor.
{with/}
FOO:=Foo
BAR:=Bar
{apply FOOBAR/}

En este ejemplo, FOOBAR es el nombre interno de un complemento de componente de plantilla instalado en la aplicación. Esta plantilla tiene dos marcadores de posición FOO BAR a los que se asignan valores.

Ejemplo de Tarjetas con Directiva IF

Para la siguiente demostración creamos una página en nuestra aplicación demo con un informe clásico y su formulario de gestión de datos de la tabla EBA_DEMO_CARD_EMP. (Esta tabla corresponde a la aplicación de ejemplo de Cards).

Seleccionamos la región de Informe Clásico y en propiedades configuramos:

  • Identificación, Titulo: Empleados
  • Identificación, Tipo: Tarjetas
  • Apariencia, Opciones de Plantilla: hacemos clic en Utilizar Valores por Defecto de Plantilla
    Se abre la ventana modal de Opciones de Plantilla
    Común, Style: Style B
    Hacemos clic en el botón Aceptar

Hacemos clic en la ficha Atributos de la región de Tarjetas Empleados.

Tarjeta, Columna de Clave Primaria 1: EMPNO.

Título, Columna: ENAME.

Subtitulo, Columna: JOB.

En la sección Cuerpo:

  • Cuerpo, Formato Avanzado: Habilitar
  • Cuerpo, Expression HTML:
{if TAGS/}
<ul class="a-tags">
{loop "," TAGS/}
<li class="a-tag">&APEX$ITEM.</li>
{endloop/}
</ul>
{endif/}

En la sección Medio:

  • Medio, Origen: Columna BLOB
  • Medio, Columna BLOB: PROFILE_IMAGE(number)
  • Medio, Posición: Primero
  • Medio, Apariencia: Pantalla Panorámica
  • Medio, Tamaño: Ajustar
  • Medio, Descripción de Imagen: &ENAME. – &JOB.

En la sección Atributos BLOB.

  • Columna de Tipo MIME: MIMETYPE
  • Última Columna Actualizada: IMAGE_LAST_UPDATE

Haga clic en el botón Guardar.

Además, necesitamos eliminar el botón Create.

Finalmente ingresamos estilos CSS para personalizar los TAGS.

En propiedades de la página en Estilos CSS En Línea, ingresamos las siguientes reglas CSS:

.a-tags {
    list-style: none;
}
.a-tag {
    background-color: #ebe7e7;
    color: #666;
    border-radius: 5px;
    padding: 5px;
    margin: 3px;
    display: inline;
}

A continuación, creamos una Acción de tipo Tarjeta Completa, para que al hacer clic en la tarjeta se habrá el formulario de carga de gestión de datos del empleado.

Desde la Representación de Página, dentro de la región de tarjetas Empleado, hacemos clic en Acciones con el botón derecho del mouse y seleccionamos Crear Acción.

En propiedades de la Acción, configuramos:

  • Identificación, Tipo: Tarjeta Completa
  • Enlace, Tipo: Redirigir a Página en esta Aplicación
  • Enlace, Destino: Hacemos clic en No se ha definido ningún enlace
    Se abre la ventana modal Creador de Enlaces: Destino
    Destino, Página, seleccione la pagina del formulario de Empleados en mi caso es 11
  • Definir elementos, Nombre: PX_EMPNO
  • Definir elementos, Valor: &EMPNO.
  • Hacemos clic en el botón Aceptar

Hacemos clic en el botón Guardar y Ejecutar.

De esta forma hemos creado una región de tipo Tarjetas que utiliza una directiva de plantilla.

Hasta la próxima!

¡La versión 23.1 de APEX Office Print está lista para descargar!

La versión 23.1 de APEX Office Print (AOP) ya está lista para descargarse en la sección de descargas de la aplicaciión del producto.

Compatibilidad

APEX:

  • AOP 23.1 es compatible con APEX 19.2 y superior (para APEX 18.1-19.1, enviamos AOP 22.2.6).

En las instalaciones: 

  • El servidor AOP está disponible para Windows y Linux (Red Hat/Oracle 8 y superior y Ubuntu 18.04 y superior).
  • Ahora se requiere Java 8 o superior para instalar el servidor AOP.

Servidor AOP

¡El servidor AOP fue rediseñado, lo que abrió muchas posibilidades nuevas!

  • Mejoras de seguridad; Todos nuestros módulos backend están actualizados.
  • Mejoras de rendimiento al exportar un informe interactivo a Excel
  • Se requirió la instalación de Java. La instancia de AOP no se ejecutará si Java no está disponible
  • Mejoras de estabilidad; La forma en que AOP maneja las solicitudes ha cambiado por completo, brindándole las siguientes mejoras:
    • Capacidad para eliminar una solicitud activa
    • Capacidad de especificar memoria por solicitud a través del archivo aop_config.jsonc
    • Capacidad para especificar un límite de tiempo para solicitudes entrantes a través del archivo aop_config.jsonc
  • Ahora se crearán registros específicos del usuario si no se puede acceder a los archivos de registro debido a un problema de permisos.
  • Se agregó un nuevo punto final (/available_fonts) para obtener la lista de fuentes disponibles que reconoce el servidor AOP
  • Se agregó soporte para comprimir un solo archivo y proporcionar un nombre personalizado para el archivo de salida.
  • Se agregó soporte para caracteres latinos especiales y caracteres devanagari en nombres de etiquetas.
  • Se agregó un nuevo argumento (–generate_license_request_file) para generar un archivo de solicitud de licencia incluso cuando Internet esté disponible
  • Espacios fijos en sms QR
  • Se corrigió la salida a controladores de la nube como Google Drive, Microsoft OneDrive y Dropbox.
  • Se solucionó el problema que incluía -.. en lugar de (..) para la máscara de formato numérico con prefijo PT
  • El servidor AOP está disponible para Windows y Linux (Red Hat/Oracle 8 y superior y Ubuntu 18.04 y superior).
  • Ahora se requiere Java 8 o superior para instalar el servidor AOP.

Editor Web

  • Se agregó una nueva región para ingresar la ubicación local de una plantilla.
  • Posibilidad de anonimizar los datos. También proporciona una opción para ignorar claves específicas mientras se anonimiza
  • Capacidad para ver las tareas actualmente en ejecución y la capacidad de finalizar una tarea específica
  • Posibilidad de obtener la lista de fuentes disponibles en el sistema y obtener una vista previa de ellas.
  • Capacidad para verificar y descargar la configuración del sistema AOP

Nube AOP

  • El convertidor de Microsoft Office sólo se puede utilizar cuando se ejecutan créditos de producción. Ya no está disponible en modo de desarrollo.
  • Cuando se ejecuta en modo de desarrollo, la solicitud del usuario está limitada a 50 MB
  • Actualmente, api.apexofficeprint.com ejecuta LibreOffice 6.4 como convertidor. LibreOffice 7.4 está disponible al especificar el convertidor “libreoffice-next”.
  • Para finales de 2023, planeamos cambiar permanentemente la versión de LibreOffice a 7.4.
  • Las URL api-eu, api-us, api-apac ya ejecutan LibreOffice 7.4.

Word

  • Soporte para subplantillas con comentarios.
  • Soporte para subplantillas con imágenes.
  • Soporte para subplantillas en el encabezado y pie de página.
  • Soporte para bucle horizontal dentro de otro bucle
  • Las imágenes HEIC ahora se convierten a JPEG (porque LibreOffice no puede procesar imágenes HEIC)
  • Las URL SVG ahora son compatibles
  • Las imágenes anteriores a la etiqueta de subplantilla ya no se eliminan
  • Opción de alineación vertical agregada para Informe interactivo y Cuadrícula interactiva
  • Se agregó una nueva opción para proporcionar el número de página inicial (usando output_page_number_start_at como una de las opciones de salida)
  • no_data_found_message se imprime cuando no se proporcionan datos en IR/IG
  • Capacidad de ignorar elementos HTML específicos para IG e IR agregando data-aop-ignore como atributo en expresiones HTML
  • Soporte para Interactive Grid con múltiples elementos HTML
  • Las celdas fusionadas se consideran al eliminar las columnas de una tabla
  • Soporte para encabezados de columna no combinados cuando hay un grupo de columnas presente
  • La dirección del texto del contenido HTML/Markdown se toma de las variables de globalización.

Excel

  • Se agregó validación de celda usando {validate tagName}
  • Posibilidad de eliminar hojas según una condición usando {eliminar (condición)}
  • Se agregó ocultar columna usando la etiqueta {hideColumn condition}
  • Se agregó ocultar fila usando la etiqueta {hideRow condition}
  • Se agregó soporte para la opción de congelar panel para Informe interactivo y Cuadrícula interactiva cuando HTML se proporciona a través de expresiones HTML.
  • Se actualizó la lógica para calcular la altura de la celda.
  • Se agregó una nueva opción height_scaling, que le permite cambiar la altura de la celda en caso de inconsistencia, (por ejemplo: 1,5 o 150% aumentaría la altura de la celda evaluada en 1,5 veces)
  • Las URL SVG ahora son compatibles
  • Opción de alineación vertical agregada para Informe interactivo y Cuadrícula interactiva
  • Capacidad para recorrer registros filtrados y ordenados usando etiquetas de bucle {#filtered} y {#sorted}, respectivamente, similares a la plantilla docx
  • Capacidad para hacer coincidir el nombre de una hoja
  • no_data_found_message se imprime cuando no se proporcionan datos en IR/IG
  • Capacidad de ignorar elementos HTML específicos para IG e IR agregando data-aop-ignore como atributo en la expresión HTML
  • Corrección de errores: ya no se produce un XLSX no válido cuando hay varios IR en una hoja mientras el encabezado con el filtro está activado
  • Corrección de errores, una celda con múltiples bucles (condicional seguido de bucles anidados) se maneja correctamente
  • Corrección de errores para encabezados de grupos de columnas mal colocados y no combinados cuando el grupo de columnas se aplica en IG
  • Corrección de errores al iniciar un IG una línea debajo de la etiqueta cuando se aplica un grupo

Power Point

  • Las URL SVG ahora son compatibles

PDF

  • Posibilidad de adjuntar archivos a la salida PDF
  • Capacidad para extraer archivos adjuntos de un PDF
  • Posibilidad de insertar códigos de barras en un PDF usando la etiqueta {|barcode_name}

HTML

  • Soporte para renderizar imágenes a través de una URL
  • La representación de atributos es posible en todos los tipos de nodos de etiquetas.

MD

  • Soporte para renderizar imágenes a través de una URL
  • Soporte para manipulación de rotación, altura y ancho de una imagen.

Anteponer/añadir archivos

  • Cuando un EML se pasa como un archivo antepuesto y adjunto, ahora también se incluirán los archivos adjuntos del correo electrónico.
  • Capacidad para especificar el texto en los archivos adjuntos de un archivo EML

Documentación

La documentación der AOP recibió una revisión completa, lo que hace que le resulte aún más fácil aprovechar al máximo AOP.

Complementos Oracle APEX mejorados

Nuevos complementos de Oracle APEX son compatibles con Oracle APEX 19.2 y superiores. 

Modalidad AOP 

  • Capacidad para definir la salida de una plantilla, por ejemplo, cuando una plantilla de Excel solo debe enviarse a Excel y no a PDF.
  • Aplicación de administrador de descargas y suscripciones actualizada

AOP DA

  • Soporte nativo para salida a APEX Office Edit y PDF Region Pro
  • Se cambió la depuración remota a la depuración de la nube AOP, para que los datos se envíen con mayor claridad a nuestra nube.
  • Compatibilidad con nuevas funciones del servidor AOP (ver arriba), por ejemplo, get_attachments
  • Capacidad de generar resultados en múltiples regiones en línea especificando una variable global

API PL/SQL

  • Se agregó un paquete adicional llamado aop_plsql_only_pkg que no necesita Oracle APEX. Las solicitudes REST se realizan con UTL_HTTP.
  • Se agregó una función convert_blob para convertir un archivo de un formato a otro.
  • Instalación exclusiva de Oracle APEX Runtime; ejecute aop_db_pkg.sql y aop_modal_pkg.sql desde la línea de comando SQL

Aplicaciones de muestra de AOP

  • Las tres aplicaciones de muestra de Oracle APEX se actualizan con nuevos ejemplos.

Recomendamos a todos que actualicen APEX Office Print a la versión 23.1.

Cómo exportar Espacios de Trabajo, Aplicaciones y Componentes en APEX

En esta entrega vamos a ver cómo podemos exportar nuestro espacio de trabajo, nuestras aplicaciones y componentes desde Oracle APEX.

Por ejemplo: tenemos la aplicación demo “Sample Database Application” en nuestro espacio de trabajo y al ingresar a la página de inicio de la aplicación vemos el icono de Exportar/Importar.

Nos pregunta el asistente que deseamos hacer.

Hacemos clic en el botón Siguiente.

El asistente nos permite exportar el espacio de trabajo completo incluyendo o no el modulo del Desarrollo de Equipos.

Ademas podemos exportar la aplicación completa en un solo archivo de SQL o podemos descargar la aplicaciíon como un archivo zip que contiene archivos distintos para cada página, componente compartido, etc.

Pero quizás solo queremos exportar el Tema que está utilizando la aplicacion.

También podemos exportar los Plugins que utiliza la aplicación.

Exportar Páginas  

Para exportar una página en particular, ingresamos a la aplicación y seleccionamos la página que queremos exportar.

Por ejemplo, página 2 Customers, y desde el diseñador de páginas seleccionamos la opción Exportar del menú de Utilidades.

Podemos seleccionar a partir de cuantos minutos antes queremos la exportación. Esta opción permite volver en el tiempo en la aplicación, quizás para recuperar un objeto suprimido.

Esta utilidad utiliza el paquete dbms_flashback. La asignación de registro de hora a SCN (Número de Cambio del Sistema) se refresca cada 5 minutos aproximadamente, por lo que tal vez tengamos que esperar ese espacio de tiempo para obtener la versión que estamos buscando.

El tiempo que se mantiene la información de deshacer depende del parámetro de inicio undo_retention (tres horas por defecto), pero esto solo afecta al tamaño del tablespace de deshacer.

Mientras que dos bases de datos pueden tener el mismo parámetro undo_retention, puede volver atrás en el tiempo en la base de datos con menos transacciones, ya que las transacciones no están rellenando el tablespace de deshacer, forzando así el archivado de los datos más antiguos.

Exportar Componentes  

Seleccionamos la aplicación que queremos exportar los componentes, por ejemplo “Sample Database Application”.  

Seleccionamos Componentes Compartidos, y en la lateral de la derecha hacemos clic en “Exportar Componentes de Aplicación”.

Y se despliega el asistente en el cual podemos seleccionar los componentes que queremos exportar, ya sea por listado de Componentes:

O podemos exportar por el listado de componentes por página:

O finalmente por el Estado de Opción de Creación

Por ejemplo vamos a exportar desde el listado de Componentes por Pagina, la página 2 Customers. Hacemos clic en el botón Agregar a Exportación.

Se agrega el componente en la parte inferior:

Hacemos clic en el botón Siguiente.

Hacemos clic en el botón Exportar Componentes.

Se abre la ventana de Guardar Como y guardamos el archivo sql.

De esta forma podemos exportar cada componente de nuestra aplicación para después llevar por ejemplo un control de versionado.

Uso de CSS en la Cuadrícula Interactiva

En esta demostración, estamos usando una cuadrícula interactiva de la tabla empleados para colorear las filas de la cuadrícula según la acción del usuario antes de guardar las operaciones.

Por ejemplo, si agrega una fila que se pinte de un color. Si realiza una modificación a una fila se pinte de otro color y si realiza una eliminación que se pinte de otro color.

Eso ayuda a que antes de que el usuario haga clic en el botón guardar pueda ver las operaciones realizadas en la grilla y darse cuenta visualmente cuantas operaciones de nuevas filas tiene, cuantas modificaciones y cuantas eliminaciones.

Veamos el ejemplo, usando la tabla EMP.

Ingresamos el identificador estático en la grilla interactiva como: igemp.

Colocamos en propiedades de la página en CSS Inline:  

#igemp .a-GV-row.is-inserted .a-GV-cell {  
    background-color:  #A7EC5A;
}  
#igemp .a-GV-row.is-updated .a-GV-cell  {  
    background-color: #6AECF5;  
}  
#igemp .a-GV-row.is-deleted .a-GV-cell  {  
    background-color: #F5B3C9;
}   

Podemos agregar estilos a todas las filas con la clase a-GV-row y las clases is-selected, is-hover, is-active, is-focused, is-deleted, is-inserted, is-updated, y is-error state modifier.

Además, podemos agregar estilos a celdas con una clase a-GV-cell y las clases is-changed, is-error state modifier.

Por ejemplo, con el CSS anterior al agregar una fila se pinta la fila de color verde:

Si editamos una fila, la fila se pinta de celeste:

Si suprimimos una fila se pinta de rosado:

También tenemos la forma de utilizar tabla (table) y filas (tr) en el CSS:  

.a-GV-table tr.is-inserted .a-GV-cell {  
    background-color:  #A7EC5A; 
}  
.a-GV-table tr.is-updated .a-GV-cell {  
    background-color:  #6AECF5;  
}  
.a-GV-table tr.is-deleted .a-GV-cell {  
    background-color: #F5B3C9;
}  

Trabaja de la misma manera:

Espero sea de utilidad!

Uso de la “Opción de Creación” en APEX

En este artículo te mostraré cómo podemos utilizar las Opciones de Creación para habilitar y deshabilitar fácilmente funcionalidades.  

Las Opciones de Creación se pueden utilizar en tres escenarios.

El primer escenario es habilitar y deshabilitar funcionalidades durante una instalación. Por ejemplo, si tenemos configurado un SMTP en nuestro servidor o estamos implementando nuestra aplicación, es posible que deseemos habilitar la funcionalidad para enviar correos electrónicos.  

El segundo escenario consiste en ocultar funcionalidades incompletas en diferentes entornos. Si estamos trabajando en algunas funcionalidades que aún no están terminadas en el entorno de desarrollo, podemos asignar una opción de creación o el estado “exclude” para deshabilitarlas en otros entornos.  

El tercer escenario es determinar las consecuencias de eliminar una funcionalidad. Si tenemos una funcionalidad y no estamos seguro de que si la eliminamos podría causar problemas, entonces podemos asignar una opción de creación “exclude” solo para esa funcionalidad y ver cuál sería el impacto de eliminarla. Si todo funciona bien, podemos eliminar la funcionalidad de forma segura junto con los elementos asociados; de lo contrario, simplemente podemos cambiar la opción de creación o cambiarla a “include”.  

Utilizamos las “Opciones de Creación” para mostrar de forma condicional una funcionalidad específica en una aplicación, en otras palabras, las opciones de creación son valores predefinidos que determinan si un componente está activado dentro de una aplicación.  

Las opciones de creación tienen dos valores posibles:

  • Incluir: es para habilitar un componente e incluirlo con la aplicación, es decir, si se especifica un atributo como “Incluir” el motor de Application Express lo considera en tiempo de ejecución.
  • Excluir: es para deshabilitar un componente y excluirlo de la aplicación, es decir, el motor de Application Express lo trata como si no existiera en la aplicación.

Podemos aplicar opciones de creación o de compilación a una página, componente, control de página o componente compartido en el Diseñador de Páginas.

Una vez que se crea una opción de creación en Componentes Compartidos, podemos seleccionarla para una página, un componente (informe, gráfico o formulario), un control de página específico (botón, elemento, lista de valores) y otros componentes compartidos (ruta de navegación, lista o LOV).  

En el Diseñador de Páginas, seleccionamos la página, o el componente, o un control de página especifico o algún componente compartido y buscamos la sección “Configuración” -> Opción de Creación.  

Para esta demostración usaremos la aplicación de ejemplo “Sample Reporting” de la galería de aplicaciones de ejemplo de APEX:  

Si ejecutamos la aplicación podemos ver todas las páginas en funcionamiento en la aplicación.

Como ejemplo vamos a agregar una opción de creación de tipo “Excluir” en la página 17, correspondiente a la Grilla Interactiva de Proyectos de la aplicación de ejemplo.  

Ingresamos a Componentes Compartidos de la Aplicación, en la sección Lógica de la Aplicación, seleccionamos “Opciones de Creación”.

Hacemos clic en el botón Crear e ingresamos los siguientes datos:

  • Aplicación: 211 Sample Reporting
  • Opción de Creación: Sample Reporting – Siguiente Versión (Introduzca un nombre descriptivo para esta opción de creación. Las opciones de creación son valores predefinidos que determinan si un componente está activado dentro de una aplicación.)
  • Estado: Excluir
  • Valor por defecto en la Exportación: – igual que el Estado Actual – (Seleccione si el estado de la opción de creación en la aplicación desplegada se debe mantener o se debe sobrescribir con el estado especificado cuando se cambia la versión de la aplicación. La selección de  para mantener el estado desplegado es útil si la aplicación soporta la configuración de la opción de creación (a través de la API APEX_UTIL.SET_BUILD_OPTION_STATUS) para activar o desactivar la opción de creación en la aplicación desplegada y allí donde desee respetar esa configuración después del cambio de versión.)
  • Comentarios: Mover a la siguiente Versión.

Hacemos clic en el botón “Crear Opción de Creación”.

Regresamos a nuestra aplicación y entramos al Diseñador de Páginas de la Página 17 “Interactive Grid”.

En el panel de la derecha de propiedades, en la sección Configuración, seleccionamos en Opción de Creación: Sample Reporting – Siguiente Versión.

Guardamos los cambios.  

Por último, nos queda excluir la entrada al Menú de Navegación de nuestra aplicación, para ello vamos a componentes compartidos y seleccionamos en la sección de Navegación, el Menú de Navegación.  

Hacemos clic en el enlace “Navigation Menu” y luego hacemos clic en el icono del lapicito que corresponde a la entrada del menú “Interactive Grid”.

En la ficha Configuración, seleccionamos en Opción de Creación que sea “Sample Reporting -Siguiente Versión”.

Y aplicamos los cambios.  

Regresamos a la aplicación y la ejecutamos y podremos ver que el menú de Interactive Grid ya no está visible en la aplicación en ejecución y si colocamos en la URL el nombre de la página interactive-grid obtendremos un error ya que APEX no lo encuentra.

Eliminar Opciones de Creación 

Eliminar una opción de compilación no elimina los componentes asociados. Antes de eliminar una opción de creación, debemos revisar los componentes asociados para determinar si los componentes deben eliminarse.  

Hacemos clic en Componentes Compartidos > Opciones de Creación > Clic en Sample Reporting – Siguiente Versión.

Dentro de la sección Componentes Asociados hacemos clic en el botón Eliminar Componentes.

Luego al hacer clic en el botón Eliminar Componentes aparece un mensaje de confirmación de eliminación:  

IMPORTANTE: Si suprimimos los componentes asociados, en este caso se eliminaría la página 17 y la entrada del menú de navegación asociada.

Luego de eliminar los componentes asociados podemos eliminar la opción de creación, haciendo clic en el botón Suprimir.  

Ver la utilización de las Opciones de Creación 

Es un reporte que nos permite ver el uso de las opciones de creación que tenemos en nuestra aplicación.  

Ingresamos a Componentes Compartidos -> Opciones de Creación -> Uso, luego seleccionar la opción de creación y hacer clic en el botón Ir.

Exportar Opciones de Creación o Crear Estado de Opción  

Exportar estado de opción de creación para activar o desactivar las opciones de compilación dentro de otro entorno.  

Podemos exportar opciones de creación o crear estado de opción en la página “Exportación de Componentes”.

Por ejemplo, podemos usar esta función para implementar una aplicación de producción con una función oculta asociando los componentes de la función oculta con una opción de creación que tenga el estado EXCLUDE.

Después de la implementación, podemos habilitar la función oculta al cambiar el estado de la opción de compilación a INCLUDE y luego exportar el estado de la opción de creación.  

Una vez que se aplica el Estado de las Opciones de Creación a la instancia de producción, aparece la nueva función.  

Para exportar opciones de compilación o crear estado de opción:  

Hacemos clic en Componentes Compartidos -> Desde la Lista de Tareas (lateral derecha) -> Clic en Exportar Componentes de Aplicación.  

Hacemos clic en Estado de Opciones de Creación. Seleccionamos los componentes y hacemos clic en el botón de Agregar a Exportación.

Se agrega a los componentes a exportar:  

Hacemos clic en el botón Siguiente.

Definimos el formato de archivo si es DOS o UNIX y en el recuadro A partir de…  

(Especificamos un tiempo en minutos para volver atrás en la exportación. Esta opción nos permite volver en el tiempo en la aplicación, quizás para recuperar un objeto suprimido).

Esta utilidad utiliza el paquete dbms_flashback. La asignación de registro de hora a SCN (Número de Cambio del Sistema) se refresca cada 5 minutos aproximadamente, por lo que tal vez tengamos que esperar ese espacio de tiempo para obtener la versión que estamos buscando. El tiempo que se mantiene la información de deshacer depende del parámetro de inicio undo_retention (3 horas por defecto), pero esto solo afecta al tamaño del tablespace de deshacer. Mientras que dos bases de datos pueden tener el mismo parámetro undo_retention, podemos volver atrás en el tiempo en la base de datos con menos transacciones, ya que las transacciones no están rellenando el tablespace de deshacer, forzando así el archivado de los datos más antiguos.)  

Hacemos clic en el botón Exportar Componente, y nos permite guardar un script sql del componente.

De este modo podemos nosotros condicionar los atributos o funcionalidades que queremos que se muestren en nuestra aplicación y llevar los componentes de un entorno a otro.    

Añadir Opciones de Creación en objetos de Soporte de la Aplicación

También estando en la página de inicio de nuestra aplicación de ejemplo, podemos hacer clic en el icono de Objetos de Soporte y en la sección de Instalación hacer clic en “Opciones de Creación”:  

Las opciones de creación de la aplicación se enumeran a continuación, junto con el valor actual de cada una de ellas.

Podemos activar la casilla situada junto a una opción de creación para permitir a un usuario que instala la aplicación cambiar el valor como parte del proceso de instalación.

El valor actual será el valor por defecto de cada opción de creación.

Aplicamos los cambios.  

De ese modo podemos ver que se muestra que hay una Opción de Creación en la sección de Instalación.  

Para esta demostración exportamos la aplicación de ejemplo Sample Reports.  

Luego importamos la aplicación con el archivo sql generado en la exportación.  

En el proceso de importación, indicamos que en Actualizar Objetos de Soporte.

Hacemos clic en el botón Siguiente.  

Y es aquí en donde el usuario puede especificar si desea incluir o no las Opciones de Creación disponibles.  

Hasta aquí esta demostración del uso y creación de las Opciones de Creación en Oracle APEX.  

¡Espero haya sido de utilidad, será hasta la próxima!  

Las ventajas de migrar de Oracle Forms a Oracle APEX: Un enfoque moderno para la modernización de aplicaciones

Introducción:  

En la era digital actual, las empresas se enfrentan a un panorama tecnológico en constante evolución. Para mantenerse competitivas y satisfacer las demandas cambiantes de los usuarios, es esencial que las organizaciones modernicen sus aplicaciones antiguas. Oracle Forms ha sido una herramienta popular durante décadas, pero ahora es el momento de considerar una migración a Oracle Application Express (APEX).

En este artículo, exploraremos las ventajas de migrar de Oracle Forms a Oracle APEX y por qué los gerentes de proyectos y las empresas deben considerar esta opción para sus proyectos de modernización de aplicaciones.  

I. La evolución de las aplicaciones empresariales:  

Las aplicaciones empresariales desempeñan un papel crucial en el éxito de una organización. Sin embargo, las aplicaciones antiguas, como Oracle Forms, a menudo presentan desafíos significativos en términos de mantenimiento, escalabilidad y usabilidad. Con la llegada de tecnologías web y móviles, las empresas buscan soluciones más modernas y flexibles. Es aquí donde entra en juego Oracle APEX, una plataforma de desarrollo de aplicaciones basada en la web para la base de datos Oracle.  

II. Ventajas de modernizar a Oracle APEX:  

1. Modernización y mejora de la experiencia de usuario: Oracle APEX ofrece una interfaz de usuario moderna y amigable que se adapta a los estándares actuales. Con APEX, las empresas pueden crear aplicaciones web altamente interactivas y receptivas, lo que mejora la experiencia de usuario y aumenta la satisfacción del cliente.  

2. Mayor agilidad y productividad: APEX proporciona un entorno de desarrollo rápido y ágil. Los desarrolladores pueden crear aplicaciones de forma más eficiente utilizando herramientas visuales y componentes predefinidos, lo que acelera el tiempo de comercialización y mejora la productividad del equipo.  

3. Integración sin problemas con otras tecnologías de Oracle: Oracle APEX está estrechamente integrado con otras soluciones de Oracle, como Oracle Database, Oracle BI Publisher, Oracle E-Business Suite, Oracle Cloud, entre otros. Esto facilita la integración de datos y servicios, lo que brinda a las empresas una mayor flexibilidad y capacidad de expansión.  

4. Mejora en la experiencia de usuario: APEX ofrece una experiencia de usuario moderna y personalizable. Permite la creación de aplicaciones con una interfaz de usuario atractiva y fácil de usar, lo que puede mejorar la satisfacción del usuario.

5. Seguridad mejorada: APEX ofrece funciones de seguridad robustas, incluida la autenticación y autorización de usuarios, cifrado de datos y control de acceso. Al migrar a APEX, las empresas pueden garantizar la protección de los datos confidenciales y cumplir con los requisitos de cumplimiento normativo.  

6. Reducción de costos de mantenimiento: Las aplicaciones antiguas a menudo requieren una inversión significativa en mantenimiento y soporte. Con Oracle APEX, las empresas pueden reducir los costos de mantenimiento a largo plazo, ya que APEX es una plataforma gratuita y de código bajo. Además, las aplicaciones desarrolladas con APEX pueden ser mantenidas y actualizadas por el mismo equipo de desarrollo, sin necesidad de contratar personal adicional. 

III. Razones para que los gerentes de proyectos consideren Oracle APEX:  

1. Modernización de la aplicación: Oracle Forms es una tecnología antigua que muy pronto no recibirá soporte oficial de Oracle. migrar a Oracle APEX permitirá modernizar la aplicación y utilizar tecnologías más actuales.  

2. Amplia comunidad y soporte: Oracle APEX cuenta con una comunidad activa de desarrolladores y usuarios que comparten conocimientos, recursos y mejores prácticas. Además, Oracle brinda soporte técnico y actualizaciones regulares para garantizar un entorno estable y confiable.  

3. Escalabilidad y flexibilidad: APEX permite a las empresas escalar sus aplicaciones a medida que crecen y se expanden. Con la capacidad de agregar fácilmente nuevos módulos y funcionalidades, los gerentes de proyectos pueden adaptar las aplicaciones a las necesidades cambiantes de la organización.  

4. Rentabilidad: Oracle APEX ofrece una licencia gratuita con la base de datos Oracle, lo que reduce los costos de adquisición y licenciamiento. Esto hace que sea una opción atractiva desde el punto de vista económico para las empresas que desean modernizar sus aplicaciones sin incurrir en altos gastos iniciales.  

Conclusión:  

La migración de Oracle Forms a Oracle APEX proporciona a las empresas una solución moderna y flexible para la modernización de aplicaciones. Las ventajas de APEX, como la mejora de la experiencia de usuario, la agilidad en el desarrollo, la integración con otras tecnologías de Oracle, la seguridad mejorada y la reducción de costos de mantenimiento, hacen que sea una opción atractiva para los gerentes de proyectos y las organizaciones en general.

Al considerar Oracle APEX, las empresas pueden impulsar la productividad, mejorar la satisfacción del cliente y mantenerse al día con las demandas del entorno empresarial actual.