运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。
在Bounded TaskFlow的Return Activity上有一个Restore Save Point属性,该属性与Transaction的关系如下:
(1)Transaction=Always Use Existing Transaction或UseExisting Transaction if Possible
当进入该TaskFlow时,会自动创建隐含的Save Point。
此时,如果Return Activity上的Restore Save Point=true,表明回退到刚进入TaskFlow时创建的Save Point。也就是说,放弃在TaskFlow中做的所有修改。
(2)Transaction=Always Begin New Transaction
Restore Save Point选项此时不起作用,因为永远开始一个新Transaction的TaskFlow与父TaskFlow的Transaction没有任何关系。
(3)Transaction=No Controller Transaction
Restore Save Point选项此时不起作用,因为TaskFlow没有关联Transaction。
1. 回顾上一个实验的重要设置:
(1)Update Location TaskFlow是第1层TaskFlow,其Transaction分别设置为Always Begin New Transaction。
(2)Update Department TaskFlow是第1层TaskFlow,其Transaction分别设置为Always Use Existing Transaction。
(3)Update Employee TaskFlow是第1层TaskFlow,其Transaction分别设置为Use Existing Transaction if Possible。
(4)Transaction只在Update Location TaskFlow中完成,Update Department TaskFlow和Update Employee TaskFlow只是加入Update Location TaskFlow的Transaction,不做完成Transaction的操作。
2. 设置Cancel Return Activity的Restore Save Point=true
(1)修改Update Department TaskFlow的Cancel Return Activity
(2)修改Update Employee TaskFlow中的Cancel Return Activity
3. 运行
(1)导航到Update Location TaskFlow,修改Location数据
(2)接着导航到Update Department TaskFlow,导航到修改Department数据
(3)接着导航到Update Employee TaskFlow,修改Employee数据
(4)在Update Employee页面中,点击Cancel,放弃修改的Employee数据,并返回Update Department TaskFlow。
(5)在Update Department页面中,点击OK,并返回Update Location TaskFlow。
(6)在Update Location页面中,点击OK,Commit事务。
(7)检查数据库表,发现Location和Department数据都成功修改了,而Employee数据没有变。
Project 下载:ADF_TaskFlow_MultiTransactions(2).7z
参考文献:
1. http://jjzheng.blogspot.jp/2011/03/does-your-task-flow-need-transaction.html
2. http://www.oracle.com/us/technologies/virtualization/oraclevm/o29frame-088050.html
没有评论:
发表评论