Oracle ADF BC Revisited 9

Oracle ADF BC Revisited 9

About me Eugene Fedorenko Master principal R&D architect adfprac=ce-fedor.blogspot.com @fisbudo 2 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 3 4 Transacon Ø A logical unit-of-work with a start and end Ø Must be entirely completed or aborted Ø If the start state is valid, the end state is valid Ø Is not affected by and does not affect any other transaction Ø State management of uncommitted changes 5 Transac=on Management in Oracle ADF ADF Faces ADF Task Flows ADF Data Controls / ADF Bindings ADF Business Components DB 6 Giant Stride Entry 7 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 8 Oracle ADF BC Revisited Nested Applicaon Module View Object En?ty Object 9 DB Transacon Object Nested Applicaon Module View Object JDBC Connecon En?ty Object DB 10 Shared Transac=on View Object View Object View Object JDBC Connecon En?ty Object DB 11 Shared Transac=on Ø Based on jbo.shared.txn property Ø Designed for shared Application Modules Ø Used for not-shared root AMs to reduce number of DB connections 12 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 13 DB Transacon Listeners Ø Validation Listener List Ø Entities for validation Ø Transaction Post Listener List Ø Dirty entities Ø Transaction Listener List Ø AMs and entities listening to commit phase 14 Commit Cycle DB Transac?on AM En?ty Commit beforeValidate validate aerValidate postChanges lock prepareForDML doDML beforeCommit beforeCommit doCommit aerCommit aerCommit 15 Failure at Commit Cycle Ø Validation Ø Raises validation exception Ø Post Changes Ø Rollbacks DB to savepoint Ø Restores state of posted entities Ø Raises an exception Ø Before Commit or Commit Ø Rollbacks DB to savepoint Ø Raises an exception Ø Does not restore state of posted entities by default 16 Error at Commit phase Ø Validation logic in beforeCommit method public void beforeCommit(Transac?onEvent e) { if ( !isDataValid() ) throw new ValidaonExcep?on(VALIDATION_EXCEPTION); } Ø Deferrable constraints CONSTRAINT "CK_DIVEBOAT_WIDTH" CHECK (WIDTH<5) DEFERRABLE INITIALLY DEFERRED Ø jbo.txn.handleafterpostexc = true Ø Forces in memory passivation snapshot Ø Activation of all AMs with all VO instances 17 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 18 Business Service Method Ø Invoke a PL/SQL procedure Ø Modify entity attributes Ø Invoke another PL/SQL procedure Ø Commit the transaction public class AppModuleImpl extends ApplicaonModuleImpl { public void someBusinessServiceMethod() { invokePLSQLProcedure1(); modifySomeA^ributes(); invokePLSQLProcedure2(); getDBTransac?on().commit(); } 19 Managing Savepoints with ADF BC Ø passivateStateForUndo Ø Makes a snapshot with AM’s state Ø activateStateForUndo Ø Restores AM’s state from snapshot Ø Rollbacks the transaction public class AppModuleImpl extends ApplicaonModuleImpl { private String passivateStateForUndo() { String savePoint = super.passivateStateForUndo(null, null, PASSIVATE_UNDO_FLAG); return savePoint; } private void ac?vateStateForUndo(String savePointId) { super.ac?vateStateForUndo(savePointId, ACTIVATE_UNDO_FLAG); } 20 Managing Savepoints with ADF BC public class AppModuleImpl extends ApplicaonModuleImpl { public void someBusinessServiceMethod() { String spid = passivateStateForUndo(); try { invokePLSQLProcedure1(); modifySomeA^ributes(); invokePLSQLProcedure2(); getDBTransac?on().commit(); } catch (Run?meExcep?on e) { ac=vateStateForUndo(spid); throw new JboExcepon(e); } } 21 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 22 Oracle ADF Model ADF Faces ADF Task Flows ADF Bindings ADF Data Controls ADF Business Components 23 ADF Data Controls Ø ADF BC Ø EJB Ø Bean Ø WebService (SOAP/REST) Ø URL Ø JMX Ø BAM Ø Placeholder Ø Custom Data Controls 24 Mul=ple Data Controls ADF BC REST API Global Divers DB Accommodaon 25 Data Control Frame Data Control Frame BC Data Control ADF BC REST API REST Data Control Transacon Global Divers DB Accommodaon 26 Oracle ADF Controller ADF Faces ADF Task Flows ADF Bindings ADF Data Controls ADF Business Components DB 27 Task Flow 28 Task Flow Transac=on Op=ons 29 Shared Data Control Scope Ø Shared Data Control Frame Ø Data Control Instance (same type & name) Ø AM instance Ø VO instances Ø Transaction Handler Ø DB Transaction Object Ø DB Connection Ø Entity Cache Ø Default Option for BTF 30 Isolated Data Control Scope Ø Isolated Data Control Frame Ø Data Control Instance (same type & name) Ø AM instance Ø VO instances Ø Transaction Handler Ø DB Transaction Object Ø DB Connection Ø Entity Cache Ø Always for UTF 31 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 32 Data Control Frames Data Control Frame #1 Main.jspx Menu UTF BTF Log Book Divers Dive Sites Record BTF BTF BTF Data Control Frame #2 Data Control Frame #3 33 Task Flow Transac=on Op=ons <transac?on> <new-transac?on/> </transac?on> 34 Always Begin New Transac=on (new-transac=on) Ø Starts a new transaction on Data Control Frame Ø Supports Both Data Control Scopes Ø Isolated Ø Shared Ø Called from UTF Ø The caller has ”No Controller Transaction” Ø Must Finish the Transaction 35 Commit and Rollback on Return Ø Only Transaction starter can finish it Ø Always Begin New Transaction Ø Use Existing Transaction if Possible (no caller’s transaction) 36 Task Flow Commit Data Control Frame Transac?on Data Control DB Transac?on Commit commit For each data control commitTransac?on commit 37 Prematurely Terminated Transacon Ø Prematurely Terminated Task Flow Ø Finished not via return activities Ø Task Flow’s container is not rendered anymore Ø Has been refreshed by the parent Ø Task Flow owns the transaction Ø Auto-rollback behavior 38 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 39 Always Use Exis=ng Transac=on (requires-exis=ng-transac=on) Ø Joins an existing transaction Ø Supports Only Shared Data Control Scope Ø Isolated is disabled Ø Can not Finish the Transaction 40 Task Flow Save Points Ø Created by default when shared transaction is reused Ø Used to restore model state on task flow exit Ø ”No Save Point on Task Flow Entry” to prevent creation 41 Root AM Connec=on Challenge Ø Root AM requires a dedicated DB connection Ø Parent and Child Task Flows should share Transaction Ø Too many DB connections for multi-root-AMs application Divers BTF Log Book Record BTF Divers Root AM Log Book Root AM Divers VO Log Book VO 42 Root AM Connec=on Sharing Ø Root AMs refer to the same data source Ø Task Flows use Transaction Options Ø Any but <No Controller Transaction> Ø Value for jbo.shared.txn is generated Ø Transaction is shared Divers Root AM Log Book Root AM Divers VO Log Book VO JDBC Connecon 43 The Briefing Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 44 Use Exisng Transac=on if Possible (requires-transac=on) Ø Dynamic transaction option Ø Isolated Data Control Scope Ø Always Begin New Transaction Ø Shared Data Control Scope Ø There is open transaction Ø Always Use Existing Transaction Ø There is No open transaction Ø Always Begin New Transaction 45 No Controller Transac=on Ø Switches Off controller transaction management Ø Does not start a transaction on task flow entry Ø Does not create a save point on task flow entry Ø Does not restore to save point Ø Does not rollback or commit transaction 46 Start a Transac=on Ø Get current binding context Ø Get current Data Control Frame Ø Start a new transaction on the frame public void startTransac?on() { BindingContext context = BindingContext.getCurrent(); //Get the name of Data Control Frame String dcFrameName = context.getCurrentDataControlFrame(); //Get Data Control Frame DataControlFrame dcFrame = context.findDataControlFrame(dcFrameName); //Start Transac?on dcFrame.beginTransac?on(new Transac?onProper?es()); } 47 Finish a Transac=on Ø Get current binding context Ø Get current Data Control Frame Ø Commit or Rollback transaction public void finishTransac?on() { BindingContext context = BindingContext.getCurrent(); //Get the name of Data Control Frame String dcFrameName = context.getCurrentDataControlFrame(); //Get Data Control Frame DataControlFrame dcFrame = context.findDataControlFrame(dcFrameName); //Finish Transac?on if (doRollback) dcFrame.rollback(); else dcFrame.commit(); } 48 Create Savepoint & Restore to Savepoint Ø Create Save Point Ø Save Save Point handle in pageFlowScope bean Ø Restore Save Point private SavepointHandle savepointHandle; public void createSavePoint() { DataControlFrame dcFrame = getCurrentDataControlFrame(); savepointHandle = dcFrame.createSavepoint(); } public void restoreSavePoint() { DataControlFrame dcFrame = getCurrentDataControlFrame(); dcFrame.restoreSavepoint(savepointHandle); } 49 CRUD Task Flow 50 Safety Stop. Ques=ons & Answers Transaction Definition Q&A Programmatic Approach Task Flow Transaction Options Data Control Scope Data Control Frame ADF Model Transaction ADF BC Save Points Transaction Commit Cycle Shared Transaction ADF BC Transaction 51 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    51 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us