lunes, 7 de mayo de 2012

ADF 11g: Paso de parámetros entre llamadas a Task Flows

Es muy común dividir los Task Flows en más Task Flows para facilitar el mantenimiento de los mismos. Esto hace que en numerosas ocasiones sea necesario pasar parámetros entre el Task Flow que actúa de Llamador y el Task Flow que actúa de Llamado.

Enlace a descarga del Ejemplo: EjemploParamTaskFlows.

Por ello traigo un ejemplo sencillo y explicativo de como se realiza el paso de parámetros entre Task Flows.

Para comenzar, tenemos 2 Task Flows:

  • El Llamador: Es una Bounded Task Flow basada en fragmentos que contiene una única vista encargada de realizar la llamada a otro Task Flow. Está basada en fragmentos dado que lo incrustaremos en una página de prueba llamada startApplication.jspx.
    Task Flow Llamador
  • El Llamado: Es una Bounded Task Flow basada en páginas puesto que será ejecutada por el Llamador en modo "diálog / inline-popup". Contendrá una lógica inicial basada en el parámetro consumido de entrada que decidirá a qué página de la Task Flow se va a navegar.
    Task Flow Llamado
Dado el escenario principal, estos son los pasos importantes a la hora de pasar parámetros entre Task Flows:
  • En la definición del Task Flow Llamado se debe configurar un parámetro de entrada requerido. Por ello, en la configuración propia del Task Flow en la zona de configuración de Parameters registrar un nuevo parámetro con los siguientes valores:
    Registro del parámetro de entrada del Task Flow Llamado
    • Name: Es el nombre del parámetro. En el caso del ejemplo "accion".
    • Class: Es la clase Java que define el tipo del parámetro. En el caso del ejemplo String.
    • Value: Es donde será almacenado el valor. En este caso en la pageFlowScope en una variable llamada accion.
    • Required: Marca la obligatoriedad del parámetro. En caso de ser requerido, al realizar una Task-Flow-Call nos obligará a dar un valor a dicho parámetro.
  • En el propio Task Flow Llamado existe la implementación de una lógica en base al parámetro recibido apoyada en un af:router para decidir sobre la navegación a usar. 
    Configuración de af:router de entrada basado en el parámetro de entrada
  • En el Task Flow Llamador se tiene la Task Flow Call del Task Flow. Al añadir este Task Flow Call se solicitará el parámetro configurado en el Llamado. Por ello configuraremos que dicho parámetro recoja el valor de la pageFlowScope del Llamador de una variable llamada "valor pulsado". También recordar que, como se va a realizar la llamada en modo "dialog / inline-popup", hay que configurar esto mismo en la llamada.
    Configuración de la llamada al Task Flow Llamado (Task Flow Call)
  • Únicamente faltaría cargar el dato en la variable de la pageFlowScope llamada botonPulsado. Para ello se utilizará una Operation de ADF. Concretamente af:setActionListener. Para que, cuando se pulse uno de los botones de la vista, se cargue el valor correspondiente en la variable.
    Configuración de un Set Action Listener arrastrado al botón de "editar"
      Action Listener's configurados para todos los botones. Cargando la variable botonPulsado
  • También recordar que en los botones es imprescindible establecer el atributo useWindow = true dado que estamos ejecutando la llamada en modo "dialog / inline-popup".
  • Finalmente adherir el Task Flow llamador a una página de prueba y ejecutar.
    Task Flow Llamado, pulsar en Añadir
      Ejecución en diálogo al dar al botón añadir.
Ejemplo desarrollado con JDeveloper 11.1.1.4

No hay comentarios:

Publicar un comentario