CommitmentControlDB2400

EDGE EMEA Conference - 2002
COMMITMENT CONTROL IN
ADVANTAGE PLEX for
DB2/400
Yolanda Scholtz
18 November 2002
Session - 4E
15:15 - 16:00
1
Agenda
•
•
•
•
•
•
•
•
Overview
Setting Up Commitment Control for DB2/400
Across Advantage Plex and Advantage 2E
Switching Commitment Control On or Off
Considerations
Commitment Control Errors
Additional Notes
Questions
2
Need & Benefits
• Operations to run optimally
• Reliable data within Information Systems
• Improving / ensuring data integrity
• Reduce time spent on correcting data
3
Definition
• Commitment Control is a database facility that
enables a group of database changes to be
treated as a single transaction, regardless of the
files being changed.
Thus you can ensure that either ALL or NONE
of the changes are performed.
4
Illustration
Parent
Updates
Calls
Child 1
Updates
Commit
Changes
Child 2
Updates
ERROR
5
Illustration
Parent
Updates
Calls
Child 1
Updates
Rollback
Occurred
Child 2
Updates
6
Setting up Commitment Control
Parent
Child 1
Child 2
Child 3
Commit / Rollback
7
Setting up Commitment Control
• Setting Up Commitment Control for DB2/400
– Framework
– Implementation
•
•
•
•
•
Logic in the Patterns
Commitment Control Functions
Inheritance
Development Standards
Business Functions
8
Framework
• Commit Group
– Parent
– Child
– None
• Commit / Rollback
• Journal OS/400 Physical Files
9
Commit Group
• A Commit Group is a group of one or more
data access functions within which all database
changes are treated as a single transaction.
• Define a commit group using the triple
FNC Commit SYS verb
None
Parent
Child
10
None
FNC Commit SYS None
None is the default value if no commit property
is specified. It means that the function will not
be part of a commit group.
Commit groups should be specified only where
they are necessary, otherwise they serve only to
decrease the performance of the function.
11
Parent
FNC Commit SYS Parent
This server function belongs to a commit group
and will be generated with the code that starts
commitment control (unless another parent in
the commit group has already started it).
A Commit group must have at lease one parent.
12
Child
FNC Commit SYS Child
This server function belongs to a commit group.
A commit group can have one, many, or no
child functions.
13
Commit / Rollback
• Commit and Rollback statements in action
diagram
– If not, the results will be unpredictable - any
database changes will remain uncommitted until
another program executes a commit or rollback
operation.
14
Journal Physical Files
• Ensure that the OS/400 physical files being
updated are being journalled.
• For information on journal management, refer
to the AS/400 Advanced Backup and Recovery
Guide.
15
Implementation
• Pattern
– Function Shell
• Functions
– Commit Start
– Commit End
• Inheritance
• Business functions
16
Pattern
• Function Shell changes :
– Local Variable and fields
• Commitment
– Control Status
– Control On
– Meta coding to interrogate triples of functions to determine if
Commitment Control is required
– Initialise
– Terminate
• Go SubCommit
– Additional Subroutine(Commit)
– Rollback message
17
FunctionShell
18
FunctionShell
19
FunctionShell
20
Commit Start
Purpose:
To ensure that STRCMTCTL command is
executed (this is done automatically due to
triple commit SYS parent)
Coding:
None
21
Commit Start
22
Commit End
• Purpose:
– To ensure that ENDCMTCTL command is
executed (this is done automatically due to
triple commit SYS parent)
– To execute COMIT / ROLLBACK statement.
(This is done exclusively in program)
23
Commit End
24
Inheritance
• The FunctionShell is inherited by ALL
functions
• Commit function inherits from main function
• Data Access function Commit – auto created in model through inheritance
– scoped to data access function
25
Development Standards
• Naming Convention
– MyEntity.MyFunction Commit
• Syntax
• Model Editor
• Action Diagram
26
Model Editor
MyFunction
comprises
MyFunction Commit
MyFunction Commit is a
MyFunction
MyFunction Commit Commit Sys Child
27
Action Diagram
Condition calls to
functions
Coding may be
copied to the
desired place in
the action
diagram where a
function call is
done.
28
Development Standards
• BENEFITS of Common Sequence
– Remove monotony of coding the conditional
call construct
– Eliminate errors in coding the conditional call
construct
– To ensure standardization
29
Action Diagram
• Process Group
– Set returning status (as it is always normal)
• Control Commit / Rollback
– via Commit Subroutine
– Commit Subroutine always in Terminate
30
Across Advantage Plex and 2E
• Either function (Plex or 2E) may contain the
main commit point
• Both Plex and 2E functions may be specified as
Child/Slave within the same Commit Group
• Only one Parent/Master may be defined
31
Across Advantage Plex and 2E
Advantage Plex
Commit control option None
Parent
Child
Advantage 2E
None
Master
Slave
Function / Command Commit / Rollback
Commit
32
On / Off Switch
As easy as
1... Set Triple COMMIT SYS (parent / none)
2... Gen & Build this main function
3... Start / End Journalling on affected
OS/400 files
33
Considerations
• Performance
• Replace default data access functions
– In EDITDETAIL, EDITDIALOG, ect.
• Make function a Parent or Child
• Undefine the deleterow
• Replace with conditional coding
Reason: the default deleterow is automatically
called in these functions (inheritance).
34
Considerations
• If Client is parent
– set Panel Properties<Window Type>=dialog
• to prevent another MDI child being executed
simultaneously
– test returned status and set returning status
• To ensure that rollback occurs if data access fails
– Call Commit Start in initialization section
• STRCMTCTL auto executed if server parent
– Call Commit End for Commit / Rollback
• auto executed if server parent
35
Considerations
• Implementation timing
– During vs After Development
•
•
•
•
•
•
•
•
Identification of Business Functions
Journal OS/400 Physical Files
Development effort
Test entire system
Room for Error
Impact on system maintenance and support
Model Administration
Integration impact
36
Commitment Control Errors
• unexpected Return Code = 01217.
– Member EntityPF not journaled to journal *N
• Function check. CPF8351 unmonitored by
FTN0001S at statement 845, instruction
X'0179’.
– Commitment control already active.
37
Additional Notes
•
•
•
•
•
•
Can retrieve data from file during process
Can update same record twice
Cannot make changes to record externally
Terminate only executed on close
Commit desired business function, row or grid
Files may be journalled and updated by
functions NOT under commitment control
• If the function is under commitment control the
files being referenced for update MUST be
journalled
38
Questions
39
Questions