60
rapidgen.com rapidgen.com Howard Rogers Director Technical Support [email protected] Decision Tables as a Programming tool

Decision CAMP 2014 - Howard Rogers - Programming with decision tables v01

Embed Size (px)

DESCRIPTION

The talk will cover the use of decision tables in a variety of programming languages and software products and follow the development from simple Condition/Action tables to those with Initial Action and Multi-condition sections. This will include a brief history of the use of decision tables in IT from the 1970’s to present day. Table structures and rule formats used will be shown. The speaker will cover the topics of rule redundancy, rule reduction and optimisation as well as bit masking techniques for runtime evaluation, and demonstrate the importance of relevance testing. Examples of code will be used to show shortcut compact coding techniques and comparison with simple truth logic. There will be an explanation of the benefits and downsides of tools which use interpretive execution of decision table logic and those which use tokenised or fully compiled execution. Examples of program code and complex logic coding will be given and comparison made with “conventional” programming languages, which will demonstrate that Decision Tables can be used not just as visual representations of complex logical processing but also as a practical and efficient programming tool. A summary of current programming and application development tools which use decision tables will be given, and the speaker will discuss future developments and techniques that will allow decision table structured and expressed logic to be incorporated in other programming languages.

Citation preview

rapidgen.com rapidgen.com

Howard Rogers Director Technical Support

[email protected]

Decision Tables as a

Programming tool

rapidgen.com

Agenda

• A brief history

• Decision table structures

• Rule formats

• Rule redundancy, reduction and optimisation

• Relevance testing

• Some practical examples

• Current examples of use

• Future developments

• Questions and Answers

2

rapidgen.com

Speaker

• Statistics & Operation Research

• UK National Health Service

• 35 years IT

• Decision table based languages and compilers

• Query & reporting tools

• Generic file & database access

• Brief interlude with RTPI

• Technical support

3

rapidgen.com

History • NASA

• Morgan Crucible – LITA – List &Tabulate

• TABN for ICL 1900 series mainframes

• (DE)TAB-360 for IBM System/360

• UNITAB for UNIVAC

• HTAB for Honeywell

• TAB-11 for RSTS/E on PDP-11

• FTL6/DTPL for ICT 1900 series

• RPL-11 for RT-11, RSTS/E, RSX-11 on PDP-11

• RPL-3 for IBM System/3

• Filetab-D for x86 and PDP-11, OpenVMS VAX

• FPL - IBM PCs and compatibles.

• RPL, Rapid-Expert and expertGenius extended syntax for Microsoft

Windows, Unix, Linux and OpenVMS,VAX, Alpha & Itanium

4

rapidgen.com

History

• Excel – query tables

• COPE – Translate DTs to COBOL

• LogicGEM – Translate to BASIC,C, C++, FORTRAN, Pascal etc etc

• CCIDE – Pre-processor for BASIC, JAVA, CC, C++, BASH, QB, VB,

and EX(euphoria)

• Silk (Simple In-line Logic Kompiler) converting decision tables to

Cobol code and vice versa.

• PASPREP – Pascal preprocessor

• Many many others

5

rapidgen.com

Decision table structure

• Conditions

• Actions

• Condition rules

• Action rules

6

rapidgen.com

Single Condition Decision Table

Condition Stubs Rules

Action Stubs Actions

7

Quantity > 100 Y N

Apply 20% Discount X -

rapidgen.com

Decision Tables

Horizontal vs Vertical Condition Stubs Action Stubs

Rules Actions

8

Quantity > 100 Apply 20% Discount

Y N

X -

rapidgen.com

Multiple Single Decision Table

Condition Stubs Rules

Action Stubs Actions

9

Quantity > 100 Y Y N N

Cash payment Y N Y N

Apply 20% Discount X - - -

Apply 10% Discount - X - -

Apply 5% Discount - - X -

No discount - - - -

rapidgen.com

Multiple Condition DTs

10

• Complete True/False Y N require

2^Conditions rules

• 3 Conditions – 8 rules

• 4 Conditions – 16 rules

• etc

• Use of “-” to reduce completeness

• Practical limit 32

rapidgen.com

Five Conditions – One rule

11

Initially no discount

Quantity > 100 Y -

Cash payment Y -

Credit_check Y -

Product type is laptop Y -

Employee N -

Apply 5% Discount X -

rapidgen.com

Multiple Section Decision Table

12

Quantity > 100 Y Y N N

Cash payment Y N Y N

Apply 20% Discount X - - -

Apply 10% Discount - X - -

Apply 5% Discount - - X -

No discount - - - -

Discount_amount < $1 Y -

No discount X -

Discount amount > $1000 Y -

Set discount $1000 X -

rapidgen.com

Simplifying Decision Tables 1

13

1 2 3 4 5 6 7 8

Credit limit exceeded

Y Y Y Y N N N N

Cash payment Y Y N N Y Y N N

Special clearance Y N Y N Y N Y N

Accept order X X X - X X X X

Reject Order - - - X - - - -

rapidgen.com

Simplifying Decision Tables 2

14

1&2 3 4 5 6 7 8

Credit limit exceeded

Y Y Y N N N N

Cash payment Y N N Y Y N N

Special clearance - Y N Y N Y N

Accept order X X - X X X X

Reject Order - - X - - - -

rapidgen.com

Simplifying Decision Tables 3

15

1&2 3 4 5&6 7&8

Credit limit exceeded

Y Y Y N N

Cash payment Y N N Y N

Special clearance - Y N - -

Accept order X X - X X

Reject Order - - X - -

rapidgen.com

Simplifying Decision Tables 4

16

1&2 3 4 567&8

Credit limit exceeded

Y Y Y N

Cash payment Y N N -

Special clearance - Y N -

Accept order X X - X

Reject Order - - X -

rapidgen.com

Simplifying Decision Tables 5

17

4 123567&8

Credit limit exceeded

Y ELSE

Cash payment N -

Special clearance N -

Accept order - X

Reject Order X -

rapidgen.com

Optimising Decision Tables

18

1 2 3 4 5 6 7 8

Credit limit exceeded

Y Y Y Y N N N N

Cash payment Y Y N N Y Y N N

Special clearance Y N Y N Y N Y N

Accept order X - X - X X X X

Reject Order - X - X - - - -

2&4 123567&8

Credit limit exceeded

Y ELSE

Special clearance N -

Accept order - X

Reject Order X -

rapidgen.com

ELSE Rule

19

4 123567&8

Credit limit exceeded

Y ELSE

Cash payment N -

Special clearance N -

Accept order - X

Reject Order X -

rapidgen.com

Simplifying Decision Tables –

Extended entry

20

TRANSKEY GT MASTKEY Y - - - ELSE

TRANSKEY EQ MASTKEY - Y Y - -

TRANSKEY LT MASTKEY - - - Y -

TRANSTYPE = “I” - - - Y -

TRANSTYPE = “D” - - Y - -

TRANSTYPE = “A” - Y - - -

CALL PROCESS_MATCH - X - - -

CALL PROCESS_MISS - - X - -

CALL PROCESS_ADD - - - X -

CALL NEXT_TRANS - X X X -

CALL NEXT_MAST X X X - -

REPEAT X X X X -

rapidgen.com

Simplifying Decision Tables –

Extended entry

21

TRANSKEY ? MASTKEY > = = < ELSE

TRANSTYPE = “?” - A D I -

CALL PROCESS_? - MATCH MISS ADD -

CALL NEXT_TRANS - X X X -

CALL NEXT_MAST X X X - -

REPEAT X X X X -

rapidgen.com

Ambiguity or Multi-ruling?

22

Set discount

Initialise DISCOUNT_PERC

Cash payment Y - - -

Special offer - Y - -

Good credit history - - Y -

DISCOUNT_PERC + ? 5 10 2 -

rapidgen.com

Code generation 1

23

|--------------------------------------------------|

|--------------------------------------------------|

|# |STATEMENT 1 2 3 4 5 6 7 8 |

|--------------------------------------------------|

|C1 |Cash payment |y |y |y |y |n |n |n |n |

|C2 |Special offer |y |y |n |n |y |y |n |n |

|C3 |Good credit history |y |n |y |n |y |n |y |n |

|==================================================|

|A1 |Discount initialise | | | | | | | | |

|A2 |Discount + 5 |X |X |X |X | | | | |

|A3 |Discount + 10 |X |X | | |X |X | | |

|A4 |Discount + 2 |X | |X | |X | |X | |

|--------------------------------------------------|

rapidgen.com

Generation – Nested If/else 1

24

{ if ((Cash payment)) { if ((Special offer)) { if ((Good credit history)) { /* rule 1 */ Discount + 5; Discount + 10; Discount + 2; } else { /* rule 2 */ Discount + 5; Discount + 10; } } else { if ((Good credit history)) { /* rule 3 */ Discount + 5; Discount + 2; } else { /* rule 4 */ Discount + 5; } } } else {

rapidgen.com

Generation – Nested If/else 2

25

if ((Special offer)) { if ((Good credit history)) { /* rule 5 */ Discount + 10; Discount + 2; } else { /* rule 6 */ Discount + 10; } } else { if ((Good credit history)) { /* rule 7 */ Discount + 2; } else { /* rule 8 */ } } } }

rapidgen.com

Generation – Case Switch 1

26

{ if ((Cash payment)) { if ((Special offer)) { if ((Good credit history)) { rule_number = 1; } else { rule_number = 2; } } else { if ((Good credit history)) { rule_number = 3; } else { rule_number = 4; } } }

rapidgen.com

Generation – Case Switch 2

27

else { if ((Special offer)) { if ((Good credit history)) { rule_number = 5; } else { rule_number = 6; } } else { if ((Good credit history)) { rule_number = 7; } else { rule_number = 8; } } }

rapidgen.com

Generation – Case Switch 3

28

switch (rule_number) { case 1: Discount + 5; Discount + 10 ; Discount + 2; break; case 2: Discount + 5; Discount + 10; break; case 3: Discount + 5; Discount + 2; break; case 4: Discount + 5; break;

rapidgen.com

Generation – Case Switch 4

29

case 5: Discount + 10; Discount + 2; break; case 6: Discount + 10; break; case 7: Discount + 2; break; case 8: break; }

rapidgen.com

Generation – Rule List 1

30

{ if ( ((Cash payment)) && ((Special offer)) && ((Good credit history)) ) { Discount + 5; Discount + 10; Discount + 2; } if ( ((Cash payment)) && ((Special offer)) && (!(Good credit history)) ) { Discount + 5; Discount + 10; } if ( ((Cash payment)) && (!(Special offer)) && ((Good credit history)) ) { Discount + 5; Discount + 2; } if ( ((Cash payment)) && (!(Special offer)) && (!(Good credit history)) ) { Discount + 5; }

rapidgen.com

Generation – Rule List 2

31

if ( (!(Cash payment)) && ((Special offer)) && ((Good credit history)) ) { Discount + 10; Discount + 2; } if ( (!(Cash payment)) && ((Special offer)) && (!(Good credit history)) ) { Discount + 10; } if ( (!(Cash payment)) && (!(Special offer)) && ((Good credit history)) ) { Discount + 2; } if ( (!(Cash payment)) && (!(Special offer)) && (!(Good credit history)) ) { } }

rapidgen.com

Generation – Rule Mask

32

{Mask = 11111111 {if ( Cash payment) Mask AND 11110000; } {if ( Special Offer) Mask AND 11001100; } {if (Good credit history) Mask AND 10101010; } {if (Mask AND 11110000) Discount + 5 ; } if (Mask AND 11001100) Discount + 10; } if (Mask AND 10101010) Discount + 2; }

rapidgen.com

Rule masking

33

• Succinct code

• Reduces repetition of condition testing

• Reduced repetition of action code

• Fast execution

• No frequency/cost weighting of rules

needed

• All conditions are evaluated

rapidgen.com

Relevance Testing

34

AGE > 50 Y - -

CALL ADJUST_COVER Y - -

TRANSKEY LT MASTKEY - Y -

LOOKUP MASTER TRANSKEY - Y -

Some operations require dynamic masking where actions may be performed or I/O occurs

rapidgen.com

Relevance Testing

35

AGE > 50 Y - -

COVER + 20 R - -

TRANSKEY LT MASTKEY - Y -

DISPLAY “Message” - R -

Dynamic masking again needed when Actions are inserted into condition section of Decision Table using “R”

rapidgen.com

Decision table linkage

36

CALLs to other DTs or object library routines

CALL Credit_limit_exceeded Y ELSE

CALL Cash_payment N -

CALL Special_clearance N -

CALL ACCEPT_ORDER - X

CALL REJECT_ORDER X -

GOTO link to DT or indirect CALL

CALL Credit_limit_exceeded Y ELSE

CALL Cash_payment N -

CALL Special_clearance N -

GOTO ACCEPT_ORDER - X

CALL_I Variable_name X -

rapidgen.com

Requirements of a DT language

• Feature rich language

• Support for multiple data types

• Unmatched data type comparison

• Good string handling/text manipulation

• Access external routines/library functions

• File, database, object and data dictionary

• Callable access from other products

• Source code maintenance, version control

• Compiled and portable execution

37

rapidgen.com

Decision Tables in other products

• Uses GUI in SAP HANA Studio

• SAP Parameter/Database DTs

• Alternate use via Excel spreadsheets

• SMARTS

• OpenRules Engine

• Decision First Modeler

• Drools

• Many more …

38

rapidgen.com

Usage of RPL - expertGenius

• Self compiling

• Cross compiling

• Source of Genius Suite

• Code writing and compiling 4GL and RAD

toolset

• Complete layered application suites

• Reporting – fixed logic

39

rapidgen.com

Genius deployment

• Aerospace factory tracking systems

• Mobile phone billing systems

• Payroll data mining

• HR system ad-hoc querying

• Newspaper distribution system

• Stock control

• Sales order dashboard & EIS

• Web based on-line parts ordering

40

rapidgen.com

CDT Callable Decision Tables

• Simple calculator

• Calculator code

• Tax formula (UK)

• Tax calculator

• Tax code

• CDT Callable access from other

languages and applications

41

rapidgen.com

Future developments

• Extend range of generic database access

• Ports to new architectures

• Macro expansions for FEEL or S-FEEL

• GUI extensions

• CDT Callable access from other

languages and applications

• Cloud based compiler

42

rapidgen.com

Questions

?

43

rapidgen.com rapidgen.com

Howard Rogers Director Technical Support

[email protected]

[email protected]

Decision Tables as a

Programming tool

rapidgen.com

Filetab

• DEcision TABle-based computer

programming language.

• Long history originating in late 1960s

• Developed by the UK National Computing

Centre (NCC)

• Originally used on ICL OS such as

GEORGE 2/3 and VME,

• Ported to a large number of others.

45

rapidgen.com

Filetab

• Original architect - Tom Barnard, who developed the

program (LITA - LIst and TAbulate) for Morgan

Crucible on an ICL 1902 from 1965–1968. Original

purpose was to produce simple ad hoc reports with

a plugboard on a punched card tabulator, replaced

PLAN assembly language.

• 80 column card based parameters

• Reporting tool specifying input and output formats,

headings, sequencing and totalling.

46

rapidgen.com

RapidGen Solutions

RapidGen solves tough integration problems

for OpenVMS customers

• A variety of flexible options available

– Analyse and provide ‘Customised Solutions’

– Future Proofing options with RapidGen

• In-depth Legacy expertise

• Services + Software

– OpenVMS to Linux Migration Routines

• Databases and Porting

• Data Structures migration

47

rapidgen.com

What Customers Tell Us

Want to preserve, modernize or replace

• Total cost of ownership

• Risk, flexibility

…but difficult

• Bespoke or end-of-life applications

• Custom interfaces issues

• Skills shortage becoming more evident

• Application Changes not permitted

– E.g. Aerospace, Defence, Nuclear, Utilities

48

rapidgen.com

Customers Want Flexibility

They Need Options

Choices

1. Update OpenVMS

– Until end of 2015

2. Modernise

– Translate data

– Translate logic

– Redefine logic in 4GL

– Redevelop

– Seamless Transition

3. Emulation Options

– Reduce Operating Costs

– Suitable for some

Want

• Proceed in stages

– Reduces risk

• Integration

– Legacy ↔ Modern

• Portability

– Future-proof

• Cost-effective Solutions

49

rapidgen.com

HP Forward-looking statements

Published Jan 2014

This is a rolling (up to three year) roadmap

and is subject to change without notice.

50

rapidgen.com

HP Forward-looking statements

51

rapidgen.com

Example of HANA parameter DT

QUANTITY ORDER_AMOUNT DISCOUNT

<=2000 >10000 10

<=10000 5

>2000 >10000 15

<=10000 10

52

rapidgen.com

Example of HANA Database DT

MANUFACTURER MODEL_CLASS QUANTITY DISCOUNT

Sprongal Handset >5 25

<=5 10

Notebook >5 15

<=5 10

Pruckman Tablet >5 15

<=5 8

Range Extender >5 10

<=5 5

53

rapidgen.com

HP Forward-looking statements

54

rapidgen.com

Genius Supported Platforms

55

Operating System Platforms Min. Version

OpenVMS VAX 5.6

OpenVMS Alpha 6.1

OpenVMS Integrity / Itanium *

Tru64 Alpha 4.0

HP-UX HP PA 9.x

Windows Intel/AMD 32/64 2000

Linux

•Red Hat, Debian, SUSE, Ubuntu,

Fedora, Knoppix, Gentoo etc

Intel/AMD 32/64 2.6.18 kernel

rapidgen.com

Genius Supported File Types & Databases

56

OpenVMS Tru64 Windows Linux

RMS Indexed ✔ via TCP/IP via TCP/IP

ISAM ✔ ✔ ✔ ✔ Oracle RDB

•via DSRI ✔

Oracle

•via OCI ✔ ✔ ✔ ✔

DBMS-32

•Codasyl ✔

Generic ODBC

•SQL Server

•MySQL

•PostgreSQL

•…others on request

✔ ✔

Ingres

•Low-level API ✔ ✔ ✔

rapidgen.com rapidgen.com

• Howard Rogers

• Jolyon Cox

QUESTIONS

rapidgen.com rapidgen.com

Howard Rogers [email protected]

Tel: +44 (0) 1732 850081

Mob: +44 (0) 7734 962855

Providing Solutions and Options

For

OpenVMS Customers

RapidGen Offices [email protected]

Tel: +44 (0) 207 630 9291

rapidgen.com

About RapidGen

• Integrating and modernizing legacy IT systems

for over 30 years

• Specialise in OpenVMS and Tru64

• Software is Powered by the ‘Genius’ Suite

• Our USP Unique Selling Point – Decision Tables = – Rapid Development Turnaround

– Providing Cost Effective Solutions

– Applications Future Proofing

59

rapidgen.com

Customers in EMEA include