Task Flow使用指南之八:Transaction(3)

本文通过三层嵌套的TaskFlow实验,探讨了不同事务管理策略(AlwaysBeginNewTransaction、AlwaysUseExistingTransaction、UseExistingTransactionifPossible)下,跨层级数据更新如何在一个统一事务中进行管理。
运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。

本实验场景:3层嵌套的TaskFlow,Transaction分别设置为Always Begin New Transaction、Always Use Existing Transaction、Use Existing Transaction if Possible,测试三个TaskFlow中的修改操作是否在同一个事务之中。

实验设计说明:

1. adfc-config.xml


2. 第1层TaskFlow:update-location-btf.xml
(1)

(2)Transaction设置为Always Begin New Transaction

(3)点击OK按钮,Commit事务

(4)点击Cancel按钮,Rollback事务


3. 第2层TaskFlow:update-department-btf.xml
(1)Transaction设置为Always Begin New Transaction

(2)Transaction设置为Always Use Existing Transaction

(3)点击OK按钮,不Commit事务,只是返回到上一层TaskFlow

(4)点击Cancel按钮,不Rollback事务,只是返回到上一层TaskFlow


4. 第3层TaskFlow:update-employee-btf.xml
(1)Return Activity上的红色叉子警告可以忽略,因为我没有在Return Activity上Commit或Rollback事务

(2)Transaction设置为Use Existing Transaction if Possible

(3)点击OK按钮,不Commit事务,只是返回到上一层TaskFlow
(4)点击Cancel按钮,不Rollback事务,只是返回到上一层TaskFlow

5. 运行
(1)导航到Update Location TaskFlow,修改Location数据

(2)接着导航到Update Department TaskFlow,导航到修改Department数据

(3)接着导航到Update Employee TaskFlow,修改Employee数据

(4)然后点击OK按钮从Update Employee TaskFlow返回到Update Department TaskFlow
(5)然后再点击OK按钮从Update Department TaskFlow返回到Update Location TaskFlow。
(6)最后点击OK按钮,Commit事务。
(7)检查数据库表,发现Location、Department、Employee的数据都修改成功了。

说明:事务由第1层TaskFlow发起,因此也应该在第1层结束,在其它层Commit或Rollback事务是不行的。
我曾试验在Update Employee TaskFlow中Commit,发现数据并未提交。

Project 下载: ADF_TaskFlow_MultiTransactions.7z

参考文献:
1. https://blogs.oracle.com/raghuyadav/entry/adf_taskflow_transaction_manag

2. http://xmlandmore.blogspot.jp/2010/03/understanding-task-flow-transaction-and.html

http://maping930883.blogspot.com/2012/08/adf197task-flowtransaction3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值