viernes, 20 de junio de 2014

Migrando los ejemplos a GitHub

Para evitar pérdidas de código asociado a algunos de los ejemplos he abierto mi propio repositorio de GitHub donde dejaré el anterior y futuro código que postee por el blog.

Repositorio GitHub con los ejemplos

Mientras no esté todo migrado a https://github.com/DanielMerchan los enlaces seguirán bajando los ejemplos de Dropbox.

Un saludo.

af:panelTabbed, Task Flows y WebCenter Portal

Los Task Flow en ADF 11gR1 (framework en el cual se basa WebCenter Portal 11g) se cargan de manera secuencial. Esto significa que hasta que el último Task Flow no finaliza su primera actividad la página no es renderizada.

Existe un truco del ATEAM para simular un Lazy Loading de los Task Flows.
http://www.ateam-oracle.com/improving-adf-page-rendering-time/

Existe un número mágico que dice de no tener más de 8 Task Flows por página.

En numerosas ocasiones, estos Task Flows se encuentran en componentes af:panelTabbed separados por pestañas. El problema reside en que todos los Task Flows (incluyendo las pestañas no visibles) ejecutarán todos los Task Flows que contengan.

Ejecución de los 3 Task Flows aunque los otros dos no se vean
 Cómo ejecutar solo los componentes de la pestaña actual?
  1. Configuración de la activación de los Task Flows
    Andrejus
    explica como configurar la propiedad de Activation de los Task Flow. Con esta propiedad se puede controlar la activación y desactivación de Task Flows cuando se seleccionan las distintas pestañas del panel.
    http://andrejusb.blogspot.com.es/2013/09/conditional-task-flow-activation-in-adf.html

  2. Configurar la propiedad childCretion de af:panelTabbed
    Configurando la propiedad childCreation se puede conseguir que las pestañas no activas no ejecuten los Task Flows o componentes que tienen hasta que son seleccionadas. Los valores que puede tomar childCreation son:

    • immediate: Al cargar la página todas las pestañas se ejecutan.
    • lazy: Solamente se ejecuta la pestaña actual y guarda el estado en el que se quedó el Task Flow. Al volver a la pestaña NO se ejecutara de nuevo el Task Flow desde el principio.
    • lazyUncached:  Solamente se ejecuta la pestaña actual. A diferencia de lazy, cada vezs que se vuelva a una pestaña que ya fue ejecutada el Task Flow se re-ejecutara desde el principio.
     
Con una configuración de af:panelTabbed a lazy o lazyUncached se puede conseguir un aumento de rendimiento considerable en el caso de que algún Task Flow de alguna pestaña sea pesado.

Recordar que por defecto es immediate.

Referencias:
http://docs.oracle.com/cd/E28280_01/apirefs.1111/e12419/tagdoc/af_panelTabbed.html

jueves, 19 de junio de 2014

Task Flows que navegan usando el Navigation Model de WebCenter Portal

Cuando una Bounded Task Flow necesita realizar una navegación de Portal basada en el Navigation Model del mismo necesita incluir una actividad de tipo parentAction para propagar a la aplicación de Portal de que ha ocurrido una navegación de Portal y que debe de actualizar los estados del Navigation Context.

Content Presenter incluye por defecto la actividad wcnav_parentAction

Qué información debe contener esta parentAction?
La parentAction debe contenter la siguiente la siguiente acción de Root:

<parent-action id="wcnav_parentAction">
  <root-outcome>wcnav_outcome</root-outcome>
</parent-action>

Configuación que debe llevar todos los Task Flow que usen internamente el Navigation Model

Qué puede implicar no tener esta acción?.
Popups con ventanas vacías o contextos de navegación que no reflejan el estado actual y el CurrentNavigationModel.

Referencia: Visualizando Navegaciones en WebCenter Portal 11.1.1.8.3