utilities 400 nisug trigger presentation

31
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…

Upload: andrew-nicholson

Post on 21-Aug-2015

605 views

Category:

Technology


0 download

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.

[email protected]

Questions and Answers

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…