<<

About me

Eugene Fedorenko

Master principal R&D architect adfpracce-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 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 Transacon 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

Enty Object

9 DB Transacon Object

Nested Applicaon Module

View Object

JDBC Connecon

Enty Object DB

10 Shared Transacon

View Object View Object View Object

JDBC Connecon

Enty Object DB

11 Shared Transacon Ø 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 Transacon AM Enty 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 Ø 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(TransaconEvent e) { if ( !isDataValid() ) throw new ValidaonExcepon(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(); modifySomeAributes(); invokePLSQLProcedure2(); getDBTransacon().commit(); }

19 Managing 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, PASSIVATE_UNDO_FLAG); return savePoint; }

private void acvateStateForUndo(String savePointId) { super.acvateStateForUndo(savePointId, ACTIVATE_UNDO_FLAG); }

20 Managing Savepoints with ADF BC

public class AppModuleImpl extends ApplicaonModuleImpl {

public void someBusinessServiceMethod() { String spid = passivateStateForUndo(); try { invokePLSQLProcedure1(); modifySomeAributes(); invokePLSQLProcedure2(); getDBTransacon().commit(); } catch (RunmeExcepon e) { acvateStateForUndo(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 Mulple 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 Transacon Opons

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 Transacon Opons

34 Always Begin New Transacon (new-transacon) Ø 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 Transacon Data Control DB Transacon Commit commit

For each data control commitTransacon

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 Exisng Transacon (requires-exisng-transacon) Ø 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 Connecon 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 Connecon Sharing Ø Root AMs refer to the same data source Ø Task Flows use Transaction Options Ø Any but Ø 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 Transacon if Possible (requires-transacon) Ø 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 Transacon Ø 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 Transacon Ø Get current binding context Ø Get current Data Control Frame Ø Start a new transaction on the frame

public void startTransacon() { 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 Transacon dcFrame.beginTransacon(new TransaconProperes()); }

47 Finish a Transacon Ø Get current binding context Ø Get current Data Control Frame Ø Commit or Rollback transaction

public void finishTransacon() { 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 Transacon 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. Quesons & 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