Friday, April 13, 2012

Conditionally Resetting Task Flow Displayed In a Popup

Use Case 
A task flow is embedded in af:poup. The content needs to be reset each time user view this.

Solution
Use activation and active property to control  the life span of task flow.Activate task flow when user  open the popup window. Deactivate it when popup is disposed. Please see developer guide to learn more about these properties:  Configuring Activation of an ADF Region


Download 
You can download the sample workspace from here.
The main.jsf page contains a task flow(dept-task-flow) with a search view embedded inside an  af:popup . Each time you invoke the popup, the search panel state in the popup is reset as the task flow is re-activated each time.

[ Runs with Oracle JDeveloper 11.1.2.1.0 (11g R2PS1) + HR Schema]

Learn More ...
There are a lot more points like this. If  you are curious to learn the internals of the ADF Business Components and ADF Binding Layer,  the following book is for you - Oracle ADF Real World Developer’s Guide.
More details about this book can be found in this post- http://jobinesh.blogspot.in/2012/07/pre-order-your-copy-of-oracle-adf-real.html

2 comments:

Mahmoud Ahmed said...

Hi Jobinesh,

Try replace the panel window in the popup with a dialog component , your solution will work only when the dialog cancel button is pressed but when Ok button pressed the re-activation is not working ... do you have any idea about this issue.

Thanks , Mahmoud Abdultawab

Mahmoud Ahmed said...

Hi Jobinesh,

We have to put the same popup canceled listener code inside the dialog listener to invert the condition.

public void dialogListener(DialogEvent dialogEvent) {
// Add event code here...
ADFContext.getCurrent().getPageFlowScope().put("forceActivate", "false");
}

Sorry for the disturbance.