viernes, 28 de octubre de 2011

Oracle WebCenter Portal PS3: Bug al ejecutar Task Flows con inline-popups

Uno de los Bug más curiosos que me encontré al aterrizar en la versión PS3 de Oracle WebCenter fue el siguiente:

Al ejecutar Custom ADF Task Flows que a su vez ejecutan otros Task Flows en forma de Dialog/inline-popup en una aplicación de Oracle WebCenter Portal. Me encontré que los popups, en Firefox/Chrome, renderizaban la misma página del Portal en la que se encontraba el Task Flow invococador en lugar del Task Flow al que invocaba. Curiosamente este "Bug" no ocurría en Internet Explorer.

Enlace de descarga

Aquí os presento un sencillo ejemplo que presenta el curioso Bug y una solución de contingencia al mismo hasta que encuentre una solución limpia a ello.
  • En primer lugar crear una Fusion Middleware Application (ADF) del cual generar una ADF JAR Library con los Custom ADF Task Flows que se van a ejecutar en la aplicación de WebCenter.
  • Básicamente generar 2 ADF Bounded Task Flows:
    • Uno basado en page-fragments (jsff), que actuará como el llamador.
    • Uno basado en pages (jspx) que será el Task Flow que se renderizará en el popup.
Task Flow llama a otro en forma de Diálogo / inline-popup
  • El ADF Task Flow basado en fragmentos llamará al otro como Run-as-Dialog / inline-popup.
    Propiedades de la llamada al Task Flow en diálogo
  • Crear una aplicación de WebCenter Portal e incluir nuestro Task Flow al catálgo de la misma. (Podeis hacerlo como comenté en un Post Anterior de cómo incluir Task Flows en aplicacines de WebCenter Portal).
  • Ejecutar la aplicación de WebCenter Portal. Incluir mediante Oracle Composer el Task Flow invocador del diálogo y ejecutar el mismo.
    Se puede observar que en Firefox/Chrome no renderiza el Task Flow que en Internet Explorer si.

    Ejecución en Firefox

    Ejecución en IE 8
  • El Task Flow invocador ha sido añadido una página del Navigation-Model que es renderizada en la Template asignada (y no realiza redirección).
    Configuración página Home como Render URL in Page Template
    En este caso, en Firefox y Chrome siempre se renderiza la misma página en lugar que el Task Flow que debería invocar, además de obtener una excepción a la hora de cerrar el diálogo.
  • Como solución de contingencia, si el Task Flow es añadido en una página que tiene configurado, en el Navigation-Model, que en lugar de renderizar la URL en la Page Template realizará una redirección a esa URL.
    Configuración de la página Redirect como Redirect to URL
  • Al ejecutar el Task Flow invocador en esta página en cualquier navegador, el popup renderizará el Task Flow en lugar de la misma página del Portal.

    Ejecución en Firefox
Conclusión: Como solución de contingencia hasta que sepa realmente porque ocurre este Bug recomiendo que la página que contenga un ADF Task Flow con este tipo de configuración, cambie su configuración del Navigation-Model para que realice una redirección a la URL.

Pruebas: Realmente no lo he probado, pero si en vez de usar la configuración por defecto para ejecutar un Task-Flow como diálogo/inline-popup realizamos esta funcionalidad manualmente con <af:dialog> y <af:popup>, creo que funcionará perfectamente. (Incluso también mediante API de RichFaces invocar a un Popup).

Referencias: Entrada de OTN al respecto de este Bug.

Ejemplo desarrollado en JDeveloper 11.1.1.4 con la extensión de Oracle WebCenter.

Descarga: Ejemplo descargable.

Un saludo a todos.

2 comentarios:

  1. Hola Daniel,
    Estoy investigando y tengo una dura respecto a Oracle WebCenter Portal, ojala me puedas ayudar.

    ?En esa versión de WebCenter el UCM incluye servicios Web¿

    ResponderEliminar
    Respuestas
    1. Hola Henry.

      Supongo que lo preguntas por el componente WsdlGenerator que se usa en UCM 10g.

      Si que puedes en UCM 11g (incluída PS3) ejecutar los servicios WSDL de UCM. Sin embargo, "te costará un poco más que en 10g". Intenta seguir los pasos de Kyle para conseguirlo https://blogs.oracle.com/kyle/entry/using_wsdls_in_ucm_11g_like_yo

      Yo personalmente no lo he utilizado aún. Si tengo alguna experiencia o consigo más información no dudaré en compartirtela.

      Un saludo!.

      Eliminar