Sunday, May 17, 2009

Parent Action Activity in ADF Task Flow

Recently I have faced a problem, when was trying to navigate to ADF Task Flow Call activity. The problem was, that I was initiating navigation from inside the region and navigation flow was defined not in bounded region ADF Task Flow, but inside parent bounded page ADF Task Flow. This means, navigation outcome from parent ADF Task Flow was simply invisible for button I have created inside region. But as usual in most of the cases, ADF provides very elegant solution to solve problem of external navigation from inside the region. I will describe it in this post.

The problem is, that I have bounded ADF Task Flow, however main page is using region and this region can't see declared navigations from this ADF Task Flow:


Region is used on main page, this region provides table of Countries, user can select any country and navigate to Location ADF Task Flow:


And here is the answer for described problem - in order to navigate from region using navigation rule from parent ADF Task Flow, you can use Parent Action activity inside region ADF Task Flow:


Only one thing you need to do is to define parent-outcome property, or in other words - navigation outcome from parent ADF Task Flow you want to use. In my case it is child navigation outcome:


Defined parent outcome will navigate to ADF Task Flow call activity and will open locations page.

On runtime, when user will press Location button implemented in region component, navigation from parent ADF Task Flow will be triggered:


Correct list of locations is returned:


You can download sample application for this post - ADFRegionNavigation.zip.

Useful hint, when user will return to Countries table, in order to show previously selected record, set DisplayRow = selected for af:table component:

14 comments:

Anonymous said...

Hi,

Thanks for this example. In your example, you do not need to pass any parameters from the region taskflow to the child task flow (i.e from Countries region to the locations as there is a view link between countries and locations VO). How do we achieve the same if Locations TF requires the selected countryID as the parameter?

Thanks

Andrejus Baranovskis said...

Hi,

Here is the asnwer: http://andrejusb.blogspot.com/2010/03/passing-parameters-from-adf-task-flow.html

Andrejus

Shubhangi said...

Hi ,
In my case I have alogin page in undounded task flow which calls dounded task flow.
My bounded task flow uses dynamic tab shell.And if login is successfull user will be directed to welcome page where default welcome tab shell is open.
When i run my application i m receving tabConetxt null pointer excetion.
As per my knowledeg i know how to pass tab context reference from 1 task flow to other.But not sure how should i pass tab context from Login View activity to welcom taskflow

Andrejus Baranovskis said...

It might be, you need to install UI Shell update - http://andrejusb.blogspot.com/2010/04/oracle-ui-shell-update-available-102.html

Regards,
Andrejus

Anonymous said...

Hi,

Is there a way to customize the train stop icons, to display my own icons on each stop...

please point me there...

Anand C said...

The example provided does not work with j developer version :

Studio Edition Version 11.1.1.4.0
Build JDEVADF_11.1.1.4.0_GENERIC_101227.1736.5923

Kindly provide an example to check the use case for the ParentAction of the taskflow.

Andrejus Baranovskis said...

It works for me with 11.1.1.4.0

What error you are getting?

Andrejus

Anand C said...

on selecting a country and clicking locations.. no action is performed.

Sir my basic requirement is -- there is a parent taskflow and an embeded child taskflow in it. I have initializer/method call activity method for both, After parent initializer is executed, it come to the child initiaizer.

How will I get to know the parent taskflow id, from the child method call activity ?


Usual way to fetch the taskflow id is :ControllerContext.getInstance().getCurrentViewPort().getTaskFlowContext().getTaskFlowId();

Andrejus Baranovskis said...

Sample works fine - I have tested once again.

Andrejus

Anonymous said...

Hi,
I am new to Jdeveloper,
I have a 3 tables department, courses, sections
as you know each department suggest many courses and each course have one or more sections.
I want to implement an application that contains a page that contains all the departments the department number is surrounded by a link component when I click on it It will direct to a page that allow me to update this department information and view all the courses of the department and courses numbers in that page are surrounded by links also and navigates to a page that allow me to update courses and view sections for the selected course
how can I implement this using task flow for each part department-course, course-section, or I must implement these in one task flow?

Ankit said...

I want to call a bounded task flow that contains fragments from unbounded task flow that contains pages in adf.

I have a pop up in main page and want to call a fragment of other bounded task flow on button click.

Vinícius Abdala said...

Hi,

How can I return to a view after a Task Flow Return Activity?

For example:
"After commit, the user is redirected to another view activity..." But I can`t put a Control Flow Case from a Return to a view...

I'm waiting to hear from you Andrejus.
Thanks, Take Care!

Regards.

Andrejus Baranovskis said...

User will be returned to the call Task Flow. In calling Task Flow you can redirect to another view activity.

Andrejus

Vinícius Abdala said...

Great! It works!

Looks it like a "sub-"task-flow? Or this nomenclature doesn't exists?


After my application is 100% working, I've to build another one to communicate with it. Could you recommend a way to do that communication? When I "portletize" my task flow, can I communicate my 2 applications like "Portlets"?

Sorry for the simple questions, (I've many others), but I'm newbie in ADF Task Flow trying to improve my knowledge on it.

Thank you! =)