In March, I was blogging about cool feature available in JDeveloper 11g: ADF Task Flows - Managing Transactions. In this post, I want to update the same topic and to describe one more nice specific of this feature. This specific is a possibility that allows to use Data Control elements from different Application Modules in the same transaction. You know, Commit action is done per Application Module, but with ADF Task Flow we can commit transaction ones and don't care how many Application Modules will be involved.
You can download sample application for this post - ADFTaskFlowTransactAppModules.zip. It contains two Application Modules, one for Jobs and second for Locations:
Created Application Modules are exposed to ViewController layer:
Data Control elements - JobsView1 and LocationsView1 are dropped into two different pages. Those two pages are implemented in Bounded ADF Task Flow. New transaction is initialized, when defined task flow is opened. Changes are commited when Return activity is reached, where Commit is set:
And main advantage of all this - possibility to concentrate on transaction logic and be independent from manual handling of different Application Modules.
How it works - we run transaction that is based on two tables - jobs and locations:
We change data that comes from first Application Module, press button and move to next table:
Second Application Module supplies data to locations table, here we change data again and press button to return from transaction - changes in both tables based on different Application Modules are saved to database automatically: