在Oracle Fusion Web應用開發中,如果採用Task Flow來進行應用流的控制,預設只要建立一個task flow就是一個新的事物開始,
如果在流中需要復原,只需要添加一個restoreSavepoint活動就可以實現事物的復原,但如果需要在程式中實現儲存點的建立和復原,使用下面的代碼:
1. 建立儲存點
DCBindingContainer binding = ADFUtils.getDCBindingContainer();<br />DCDataControl dcDataControl = binding.getDataControl();<br />String sph = (String) dcDataControl.createSavepoint();<br />JSFUtils.setExpressionValue("#{pageFlowScope.AdfmSavePoint}",sph);
建立儲存點時,ADF將AM中的對象執行個體序列化儲存到PS_TXN表中,因此如果AM中包括了太多的對象,那建立儲存點時就會有太多的資訊儲存到後台表,
意味著AM粒度的劃分直接影響 到儲存點的建立。
2. 恢複儲存點
String sph = (String)JSFUtils.resolveExpression("#{pageFlowScope.AdfmSavePoint}");<br />DCBindingContainer binding = ADFUtils.getDCBindingContainer();<br />DCDataControl dcDataControl = binding.getDataControl();<br />dcDataControl.restoreSavepoint(sph);
本文轉自Oracle Seeker:http://oracleseeker.com/2009/07/18/create_and_restore_savepoint_in_oracle_adf_application/