Documente Academic
Documente Profesional
Documente Cultură
Check Point
You know how to:
The Goals
The primary directive: create applications that can be extended by
implementations while still being easily upgradeable
By upgradeable we mean that an implementation should be able to upgrade over
a weekend
Anything we do in a subsequent release that could result in an implementation
having to change their configuration / program logic in order to get their system
working after an upgrade is prohibited
13 - 3
13
Owner
BO /
Algorithm
System
Event
Valid
Status
BO / State /
Algorithm
13 - 5
System
Event
Valid Values:
Validation
Pre Processing
Post Processing
Audit
Info
some designs
introduce these
Valid Values:
Enter
Exit
Monitor
Owner
BO /
Option
Option
Type
Valid
Status
BO / State /
Option
13 - 6
Option
Type
Valid Values:
inactivate
algorithm
there are several
base package
values that are UIoriented so we'll
save these for later
Valid Values:
Required element
Inactivate algorithm
Case Study
Let's assume:
We've released a BO with several Validation algorithms plugged in
The onsite team determines that one of our validation algorithms is
too strict
13 - 7
BO /
Option
Option
Type
Valid Values:
there are several base package
values that are UI-oriented so we'll
save these for later
Inactivate algorithm
Valid
Status
BO / State /
Option
13 - 8
Option
Type
Valid Values:
Required element
Inactivate algorithm
Support Issues
The decision to support the Inactivate algorithm option
type was difficult for the base-package team to accept as it
means that an on site team can completely change a basepackage BO's behavior
However, the alternative was viewed as worse
Duplicating a BO means that an implementation will not easily
receive upgrades and bug fixes to the original BO
13
Case Study
The previous chapter described how algorithm type programs can be
designed to retrieve parameter values from a variety of sources
For example, an algorithm that creates an adjustment can retrieve the
respective adjustment type from the algorithm, or from a BO option, or
from an admin BO
This is a fine technique, but what happens if the algorithm type's logic
is impossible to parameterize?
For example, what if the requirement is to NOT create the adjustment if the
customer is considered to be "high-value" and the definition of a "highvalue" customer is unique to each implementation?
Implementation 1's definition: A high-value customer is one with a credit score >
620, with no payment plans in the last 2 years, and with annual billings > $1,000
Implementation 2's definition: A high-value customer is one that has been a
customer for at least 12 months and has had no collection processes in the last 2
years
13 - 11
In our example, we'll place the system event on the same place where we
keep the adjustment type (i.e., the instance of the admin BO)
13 - 12
Adjustment
Type
FA Type
System
Event
FA Type /
Algorithm
Algorithm
13 - 13
Field
Activity
13 - 14
13
Extending Lifecycles
Checkpoint
We've talked about how an onsite team can change BO's released with the base-package:
Insert new "CM" algorithms anywhere in the BO hierarchy for any status
Disable base-package algorithms anywhere in the BO hierarchy
Add option values anywhere in the hierarchy
Create child BO's with additional elements that inherit base-package behavior
Complete
BO: InstallMeter
13 - 16
BO: InvestigateSvcTheft
BO: ReadMeter
Canceled
Dispatched
Complete
BO: InstallMeter
13 - 17
BO: InvestigateSvcTheft
Copyright 2009, Oracle. All rights reserved.
BO: ReadMeter
Case Study
What if InvestigateSvcTheft field activities for commercial customers
require authorization before they can be dispatched?
Parent BO: GenericFieldActivity
Pending
Canceled
Dispatched
Complete
BO: InstallMeter
BO: InvestigateSvcTheft
Pending
Canceled
Waiting For
Approval
Dispatched
13 - 18
Complete
BO: ReadMeter
Complete
BO: InstallMeter
BO: InvestigateSvcTheft
Pending
Canceled
Waiting For
Approval
Dispatched
13 - 19
Complete
BO: ReadMeter
BO: AuthFA
Pending
Canceled
Authorized
13 - 20
Complete
BO: InvestigateSvcTheft
Status: Pending
System Event: Enter
Algorithm: Create authorization if
commercial customer
Status: Pending
System Event: Monitor
Algorithm: Transition to dispatched
when authorization is complete
BO: GenericFieldActivity
Owner: CM
Status: Pending
Sequence: 5
System Event: Monitor
Algorithm: Transition to dispatched
when authorization is complete
Owner: Base
Status: Pending
Sequence: 10
System Event: Monitor
Algorithm: Transition to dispatched
13 - 21
13
Problem Statement
Some solutions need to have
flattened BO elements
For example:
A taxpayer BO may need an
element called <homePhone>
This element will physically
reside in the CI_PER_PHONE
table
The problem is that the schema
flattening syntax needs to
reference the PHONE_TYPE_CD
However, we aren't allowed to
ship phone type codes as this
table has no owner (and, even if it
did, it's hard to justify telling a
customer that they'd have a
phone type code equal to HOME
(especially if they don't speak
English))
13 - 23
IndividualTaxpayer Schema
<taxpayerId mapField="PER_ID"/>
<name mapField="ENTITY_NAME">
<row mapChild="CI_PER_NAME">
<PRIM_NAME_SW is="true"/>
<NAME_TYPE_FLG default="PRIM"/>
</row>
</name>
<email mapField="EMAILID"/>
<socialSecurityNumber mapField="PER_ID_NBR">
<row mapChild="CI_PER_ID">
<ID_TYPE_CD is= "SSN" />
</row>
<socialSecurityNumber/>
<homePhone mapField="PHONE" >
<row mapChild="CI_PER_PHONE">
<PHONE_TYPE_CD is= "HOME" />
</row>
</homePhone>
...
13 - 24
13 - 25
13 - 26
10 Validate name
20 Validate phone number
30 Validate email address
40 Validate mailing address
13 - 27
Review Questions
13 - 28
13 - 29