utilities 400 nisug trigger presentation
TRANSCRIPT
Using triggers to improve business processes
Steve Close Utilities 400 Limited.
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Your data, where, when and how you want it…
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Triggers- One of the most underused
features on the operating system
- Can cause a trigger to be executed (“fired”!) whenever a record is added, updated, deleted or read from a file
- Triggers can call any program to perform additional business logic
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Add a Trigger- To add a trigger to a file use
command ADDPFTRG
- Triggers are always added to a physical file, but trigger occurs however record is accessed
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Add a Trigger
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (i)
Solutions:
1) Log on late at night when nobody is using the system.
Need to get an exclusive lock on a file to be able to add or
remove a trigger
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (i)
Solutions:
2) Give up!
Need to get an exclusive lock on a file to be able to add or
remove a trigger
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (i)
Solutions:
3) Write a little application to perform the add remove triggers
a) Create a file with add/remove flag and all the attributes for the command
Need to get an exclusive lock on a file to be able to add or
remove a trigger
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (i)
Solutions:
3) Write a little application to perform the add remove triggers
b) write a program that runs at an appropriate time that reads this file, performs actions and deletes
Need to get an exclusive lock on a file to be able to add or
remove a trigger
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (ii)
Solution:Write a generic trigger program that is called by any trigger that you ever add. This trigger program analyses the string passed to it by the trigger and reads a file to decide which program to call, passing the trigger data to it.
Once a job has fired the trigger the program referenced on
trigger gets locked to the job.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Gotcha (iii)The execution of the logic
defined in the trigger becomes part of the I/O operation
against the file.Solutions:
If adding any long running operations as part of a trigger make sure it submits the job, preferably to a multi threaded job queue.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
DataWhat data is passed by the
operating system to the trigger program?
Two parameters:
1) A long string containing control information followed by the
before and after images of the record processes.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
DataWhat data is passed by the
operating system to the trigger program?
Two parameters:
2) A 4 byte binary number containing the length of the string passed.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
DataTrigger control information.
1-10 Name of the file being triggered11-20 Library of the file being triggered21-30 Member being triggered31 Trigger event
1 = Insert 2 = Delete3 = Update 4 = Read
32 Trigger time1 = After2 = Before
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
DataTrigger control information.
37-40 CCSID of the file (4 byte binary)41-44 RRN of the record being processed
(4 byte binary)49-52 Offset to the before image of the
record (4 byte binary) (orgoffset)53-56 Length of the before record (orglen)57-60 Offset to the after image of the
record (newoffset)61-64 Length of the after record (newlen)
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
DataTo extract the before image in
RPG:-
Eval orgrecord=%subst(buffer:orgoffset:orglen)Eval newrecord=%subst(buffer:newoffset:newlen)
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
The last thing the generic program needs to do is access the file you have created to decide which program to call.
For instance this file would tell the generic program that when a record is add to file CUSTOMER in library SHOWMEDEMO that it should call the relevant program
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
Recommend that all is a generic program and then pass to each individual routine
1) The current user (Defined in the program status data area
of the generic program
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
Recommend that all is a generic program and then pass to each individual routine
2) The trigger event (Insert, Update, etc.)
3) The trigger time (Before orAfter)
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
Recommend that all is a generic program and then pass to each individual routine
4) The before image5) The after image
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
In the called program defined two data structures:-
d b_recordstr e ds extname(CUSTOMER) prefix(b_)d a_recordstr e ds extname(CUSTOMER) prefix(a_)
Then move the before image into structure b_recordstr move the after image into structure a_recordstr
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
You now have all fields from the before image available to the program, for example:
B_BALANCEB_NUMORDS
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Generic program
And all the fields from the after image, for example:
A_BALANCEA_NUMORDS
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Client Examples
Sending an email to customer services when a customer goes over their credit limit, maybe attaching a spreadsheet to all their open invoices
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Client Examples
Creating a workflow for order acceptance including order acknowledgement, picking lists, delivery notes and invoices
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Client Examples
Creating an audit log of any changes to fields on required files. Can log user, date and time, program name, and before and after image of any or all fields.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Client Examples
Replicate the data via an SQL statement into other tables or applications
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Other commands
CHGPFTRG Change trigger, can change status to *ENABLED or *DISABLED – needs exclusive lock
RMVPFTRG Removes a trigger – needs exclusive lock
PRTTRGPGM List all the triggers in a particular library *ALL
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Considerations
Consider writing your generic trigger program to read a file of triggers to ignore. In this way you can turn any particular trigger off and back on without needing to have an exclusive lock.
Your data, where, when and how you want it…
Utilities 400 | System i Solutions | Using triggers to improve your business processes
Happy Shooting!
Keep your trigger finger handy! Should you wish to learn more on how we helped businesses with their automation requirements please contact me.