![Page 1: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/1.jpg)
Customizing KFS Business RulesHeather Stapleton, Indiana University Warren Liang, University of California-Irvine November 17th, 2009
![Page 2: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/2.jpg)
• System Parameters• Maintenance Tables• Extending KFS Classes
– Presentation Controllers– Authorizers– Rules
• Granular Validations
Ways to Customize KFS
Identity Management (KIM)
Tuesday @ 11amSalon B
Workflow(KEW)
Wednesday @ 2pmConf 3+4
![Page 3: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/3.jpg)
Parameters - Purpose
• Customize based on YOUR policies• Controlled by users• Externalize constants• Maintained in tables• Easy to use
![Page 4: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/4.jpg)
Parameters – Usage
• May be used in:– Business rules checks– Runtime changes; no server restart
• May not be used in:– Values not represented by constants– Core constants that will not change– Spring XML configuration files– OJB XML descriptor files
![Page 5: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/5.jpg)
Parameter Lookup
![Page 6: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/6.jpg)
Parameter Lookup - Namespace
![Page 7: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/7.jpg)
Parameter Lookup – Component
![Page 8: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/8.jpg)
Parameter Lookup - Component
![Page 9: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/9.jpg)
Parameter Lookup – App Namespace
![Page 10: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/10.jpg)
Parameter Lookup – App Namespace
![Page 11: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/11.jpg)
Parameter Lookup – Type Code
![Page 12: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/12.jpg)
Parameter Examples
On/Off Switches
![Page 13: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/13.jpg)
Parameter Examples
Defaults
![Page 14: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/14.jpg)
Parameter Examples
Requiredness
![Page 15: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/15.jpg)
Parameter Examples
![Page 16: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/16.jpg)
Maintenance Tables
![Page 17: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/17.jpg)
Maintenance Tables
![Page 18: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/18.jpg)
Maintenance Tables
![Page 19: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/19.jpg)
Maintenance Tables
![Page 20: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/20.jpg)
Customizing KFS Goals
• To customize KFS documents’ rules and authorization with a minimal amount of KFS code changes
• Achieve this by:– Extending classes– Overriding configuration
![Page 21: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/21.jpg)
Customizing KFS Rules - note
• Code shown on the PPT is abbreviated• Real code is shown in the notes of the PPT file• Examples will be shown, link to patches at end
of slides
![Page 22: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/22.jpg)
Configuration overview
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
dataDictionaryPackages property
Properties in DD doc entry
![Page 23: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/23.jpg)
Document Presentation Controllers
• Determines whether a document is in a state that would allow certain actions to be performed
• Decisions not based on user
![Page 24: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/24.jpg)
Document Presentation Controllers
interface DocumentPresentationController {
Set<String> getDocumentActions(Document document);
boolean canInitiate(String docTypeName);
}
![Page 25: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/25.jpg)
Document Authorizers
• Determines whether a particular user is allowed to take a particular action against a document
• Primarily a façade for KIM• Customization performed by changing KIM
data
![Page 26: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/26.jpg)
Presentation Controller/Authorizer
Presentation Controllers Document Authorizers
![Page 27: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/27.jpg)
Document Rules
• Performs validation before actions are taken • Primarily used for maintenance documents,
but also for some transactional documents
![Page 28: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/28.jpg)
Document Rules
interface RouteDocumentRule extends BusinessRule { boolean processRouteDocument(Document document);
}
![Page 29: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/29.jpg)
DocumentRuleBase
• Base implementation for most of these interfaces is DocumentRuleBase
• Contains a customization hook to add document-specific logic
![Page 30: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/30.jpg)
DocumentRuleBase
public boolean processRouteDocument(Document doc) { boolean isValid = isDocAttrsValid(document, true); isValid = isValid && processCustomRouteDocBusinessRules(doc); return isValid;}
protected boolean processCustomRouteDocBusinessRules(Document doc) { // Document-specific logic would override this method return true;}
![Page 31: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/31.jpg)
Configuration overview
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 32: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/32.jpg)
Data Dictionary
• Repository of metadata for documents and business objects
• Comprised of Spring beans• Configures how to validate a document
![Page 33: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/33.jpg)
Data Dictionary Overriding
• Abstract parent bean definition and “concrete” inheriting bean
• Customize/override the concrete beans
![Page 34: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/34.jpg)
Document DD bean example
<bean id="CashMgmtDocument" parent="CashMgmtDocument-parentBean"/>
<bean id="CashMgmtDocument-parentBean" abstract="true“ parent="AccountingDocumentEntry">
<property name="businessRulesClass“ value=“<package>.CashMgmtDocRule"/>
<property name="documentAuthorizerClass“ value=“<package>.CashMgmtDocAuth"/>
<property name="documentPresentationControllerClass“ value=“<package>.CashMgmtDocPresContBase"/>
![Page 35: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/35.jpg)
Configuration overview
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 36: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/36.jpg)
Module Configuration
• Maintains metadata related to an application module– List of DD directories
• Override the Module Configuration Bean if adding new DD files
![Page 37: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/37.jpg)
Module Configuration Example
<bean id="arModuleConfiguration" parent="arModuleConfiguration-parentBean" />
<bean id="arModuleConfiguration-parentBean" class=“<package>.FinancialSystemModuleConfiguration" abstract="true">
<property name="dataDictionaryPackages"> <list> <value> org/kuali/kfs/module/ar/bo/datadictionary </value> <value> org/kuali/kfs/module/ar/doc/datadictionary </value> </list> </property>
![Page 38: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/38.jpg)
Configuration overview
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 39: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/39.jpg)
Build properties
• Files in build/properties contain default values• Can redefine props in ~/kfs-build.properties• Various output files
– work/src/configuration.properties– web.xml– security.properties– Etc.
![Page 40: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/40.jpg)
Build property customization
~/kfs-build.properties
${shared.external.build.properties}
build/project/*.properties
OVE
RRID
ESOptionallydefines
![Page 41: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/41.jpg)
Build property customization
• institution.* properties are customization hooks
• Override properties in ~/kfs-build.properties or shared external build properties file
![Page 42: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/42.jpg)
Cash Control Document
![Page 43: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/43.jpg)
Customization example 1
• Modify rule to force org doc code to be a prefix of the description
• Rule will only be triggered on routing (and, as a side effect, approvals, because of chaining)
![Page 44: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/44.jpg)
Customization example 1
How?1. Write a new rules class2. Override the DD bean3. Override the module bean4. Define new build properties5. Redeploy application
![Page 45: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/45.jpg)
Customization example 1 – Step 1
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 46: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/46.jpg)
Customization example 1 – Step 1
@Overrideprotected boolean processCustRouteDocRules(Document doc) {
if (!orgCodePrefixOfDocDesc(doc)) { registerErrorOnWebPage(); return false; } return super.processCustRouteDocRules(doc);}
![Page 47: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/47.jpg)
Customization example 1 – Step 2
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 48: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/48.jpg)
Customization example 1 – Step 2
<bean id="CashControlDoc“ parent="CashControlDoc-parentBean"> <property name="businessRulesClass" value="<cust_pkg>.CustCashContDocRule"/>
</bean>
![Page 49: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/49.jpg)
Customization example 1 – Step 3
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 50: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/50.jpg)
Customization example 1 – Step 3
edu/school/kfs/module/ar/spring-ar-overrides.xml
<bean id="arModuleConfiguration" parent="arModuleConfiguration-parentBean">
<property name="dataDictionaryPackages"> <list> <value>org/kuali/kfs/module/ar/bo/datadict</value> <value>org/kuali/kfs/module/ar/doc/datadict</value> <value>edu/school/kfs/module/ar/doc/datadict</value> </list> </property></bean>
![Page 51: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/51.jpg)
Customization example 1 – Step 4
KFS/Application Module Configs
DD Spring Beans(Document Entries)
Doc rules, pres, cont.,authorizers
spring.source.files build property
Properties in DD doc entry
dataDictionaryPackages property
![Page 52: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/52.jpg)
Customization example 1 – Step 4
• In ~/kfs-build.properties, define the following:institution.spring.source.files=,edu/school/kfs/
module/ar/spring-ar-overrides.xml
• Note the leading comma
![Page 53: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/53.jpg)
Customization example 1
![Page 54: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/54.jpg)
Granular Validations
• Intended for easy customization of rules• Breaks rules down into sub-rules• Sub-rules implement Validation interface• Relies on composition, not inheritance• Event-to-list-of-Validations mappings• Primarily for accounting docs• https://test.kuali.org/confluence/x/9ABEAw
![Page 55: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/55.jpg)
Logical configuration diagram
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 56: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/56.jpg)
Configuration overview
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
Aqua-colored components shown on previous slide
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 57: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/57.jpg)
DD Validation beans
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 58: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/58.jpg)
DD Validation beans
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 59: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/59.jpg)
DD Validation beans
<bean id="AccountingDocument-debitsAndCreditsBalanceValidation" class=“<package>.DebitsAndCreditsBalanceValidation" abstract="true" />
The class implements the Validation interface.
Validation beans should be abstract
![Page 60: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/60.jpg)
List of Validations
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 61: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/61.jpg)
List of Validations
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 62: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/62.jpg)
List of Validations
<bean id="TransferOfFunds-routeDocumentValidation" parent="TransferOfFunds-routeDocumentValidation-parentBean" />
<bean id="TransferOfFunds-routeDocumentValidation-parentBean" parent="CompositeValidation" abstract="true">
<property name="validations"> <list> <!-- some validations omitted --> <bean parent="AccountingDocument- debitsAndCreditsBalanceValidation"/> <bean parent="TransferOfFunds- fundGroupsBalancedValidation"/> </list> </property></bean> Note: beans in list use “parent”
![Page 63: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/63.jpg)
Event to list-of-Validation mapping
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 64: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/64.jpg)
Event to list-of-Validation mapping
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 65: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/65.jpg)
Event to list-of-Validation mapping
<bean id="TransferOfFundsDocument-validations" parent="TransferOfFundsDocument-validations-parentBean"/>
<bean id="TransferOfFundsDocument-validations-parentBean"
class=“<package>.MapFactoryBean"> <property name="sourceMap"> <map> <entry> <key> (pkg).AttributedRouteDocumentEvent </key> <value> TransferOfFunds-routeDocumentValidation </value> </entry> ...
![Page 66: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/66.jpg)
DD Document Entry
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 67: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/67.jpg)
DD Document Entry
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 68: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/68.jpg)
DD Document Entry
<bean id="TransferOfFundsDocument" parent="TransferOfFundsDocument-parentBean"/>
<bean id="TransferOfFundsDocument-parentBean“ abstract="true“ parent="AccountingDocumentEntry"> <property name="businessRulesClass“ value=“<package>.AccountingRuleEngineRuleBase"/> <property name="validationMap“ ref="TransferOfFundsDocument-validations"/>
![Page 69: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/69.jpg)
Customization example 2
• Modify the ToF document to only allow documents that have credits and debits totals of $100
![Page 70: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/70.jpg)
Transfer of Funds Document
![Page 71: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/71.jpg)
Customization example 2
How?1. Write new Validation implementation2. Define Validation abstract bean definition3. Override the Validation list4. Define new build properties5. Redeploy application
![Page 72: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/72.jpg)
Customization example 2 – Step 1 & 2
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 73: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/73.jpg)
Customization example 2 – Step 1 & 2
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 74: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/74.jpg)
Customization example 2 – Step 1
edu.school.kfs.fp.document.validation.impl.CustomTransferOfFundsHundredDollarValidation
public boolean validate(AttributedDocumentEvent event) {
if (!debAndCred100USD(acctDocForValidation)) { registerError(); return false; } return true;}
![Page 75: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/75.jpg)
Customization example 2 – Step 2
<bean id="TransferOfFundsDocument-debitsAndCreditsAreHundredDollars" class=“<package>.CustomTransferOfFundsHundredDollarValidation" abstract="true" />
![Page 76: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/76.jpg)
Customization example 2 – Step 3
DocumentEntry in DD
Event-to-ValidationsMapping
List ofRoute Validation
References
List ofValidation Refs
for event X
…Route
doc
eve
nt
Event X (e.g.
Save, Approve)
Validation 1
Validation 2
Validation 3
Validation N
…
![Page 77: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/77.jpg)
Customization example 2 – Step 3
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 78: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/78.jpg)
Customization example 2 – Step 3
<bean id="TransferOfFunds-routeDocumentValidation" parent="TransferOfFunds-routeDocumentValidation-parentBean" >
<property name="validations"> <list> <!-- some validations omitted --> <bean parent="TransferOfFundsDocument- debitsAndCreditsAreHundredDollars“/> <bean parent="AccountingDocument- debitsAndCreditsBalanceValidation"/> <bean parent="TransferOfFunds- fundGroupsBalancedValidation"/> </list> </property></bean>
![Page 79: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/79.jpg)
Customization example 2 – Step 4
KFS App
Module Configuration
spring.source.filesbuild property
dataDictPackages
List of Validations
Non-DD Spring Beans
Validationbeans
DD Spring Beans
DocumentEntry
Event-to-Validations-
Mapping
Spring ref
Spring ref
Ref by name
![Page 80: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/80.jpg)
Configuration example 2 – Step 4
• Add the following property to ~/kfs-build.properties
institution.spring.source.files=,edu/school/kfs/fp/document/validation/configuration/CustomFinancialProcessingValidators.xml,edu/school/kfs/fp/document/validation/configuration/CustomTransferOfFundsValidation.xml
Note the leading comma
![Page 81: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/81.jpg)
Configuration example 2
![Page 82: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/82.jpg)
Patches
• Patch files describing both examples have been attached in the Kuali wikihttps://test.kuali.org/confluence/x/uYCUDQ
• Note that no files delivered with KFS were modified!
![Page 83: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009](https://reader035.vdocument.in/reader035/viewer/2022062808/56649da35503460f94a90380/html5/thumbnails/83.jpg)
Questions?
Thank you