viernes, 6 de julio de 2012

Refrescar un UI Component externo a una af:region

Un caso muy común en el desarrollo con WebCenter Portal / Spaces es el de refrescar componentes de la página según acciones que se ejecuten en los Task Flow que esta incluye.


¿Cómo refrescar un UI Component según lo que haya ocurrido en un Task Flow?
Esta pregunta se responde fácilmente. Eventos Contextuales

La mayoría de Task Flows de WebCenter, como por ejemplo el de People Connections, disparan eventos según las acciones que se realicen en los mismos. Por ejemplo en People Connections las acciones de aceptar, ignorar o declinar una petición son disparadas.

En el siguiente ejemplo se va a simular esta problemática refrescando un af:outputLabel según los eventos que dispare un Task Flow.


En el ejemplo el caso es el siguiente:
UI Component que se refresca por PPR de una af:region
  • Tenemos un componente af:outputLabel cuyo valor debe ser modificado según ocurra algo en el Task Flow.
  • Tenemos una af:region con el Task Flow.
Para lograr hacer PPR en el UI Component consumiremos desde la pageDef los eventos disparados por la Task Flow. Seguir los siguientes pasos para realizar PPR en un componente consumiendo los eventos disparados:
  • Crear una clase Java para el manejo de eventos la cual será la encargada de realizar el PPR sobre el componente. En el caso del ejemplo, el método recibe un parámetro puesto que consumirá un valor emitido por los eventos. En muchas ocasiones no se suele necesitar el parámetro y directamente se hace PPR sin consumir nada.

    Clase de manejo de eventos que realiza el PPR
  • Crear un Data Control de la clase.

    Creación de Data Control del manejador de eventos
  • Acceder a la pageDef donde se encuentra nuestro UI Component y nuestra Task Flow y publicar en la Binding Layer un binding hacia el método del Data Control recién creado.

    Binding de tipo methodAction al método manejador
  • Abrir la pestaña de Contextual Events de la pageDef y en la pestaña Subscriber suscribirse a alguno de los eventos disparados asignando como método consumidor el método recientemente publicado en la Binding Layer. (También se puede hacer desde la Structure View, botón derecho a la pageDef y Edit Event Map).
    Suscripción de la pageDef al evento disparado por el Task Flow
  • Ejecutar la aplicación y al pulsar uno de los botones del Task Flow, el mensaje que se pasa por el payLoad (información transmitida del Task Flow a la página) será mostrado en la UI Component externa al mismo.
    PPR de la acción del Task Flow sobre el UI Component
Ejemplo desarrollado en JDeveloper 11.1.1.6

Enlace a descarga del ejemplo: RefreshUICompByEventApp

No hay comentarios:

Publicar un comentario