83
Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-Irvine November 17 th , 2009

Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Embed Size (px)

Citation preview

Page 1: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

• 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

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

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

Parameter Lookup

Page 6: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup - Namespace

Page 7: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup – Component

Page 8: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup - Component

Page 9: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup – App Namespace

Page 10: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup – App Namespace

Page 11: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Lookup – Type Code

Page 12: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Examples

On/Off Switches

Page 13: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Examples

Defaults

Page 14: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Examples

Requiredness

Page 15: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Parameter Examples

Page 16: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Maintenance Tables

Page 17: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Maintenance Tables

Page 18: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Maintenance Tables

Page 19: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

Maintenance Tables

Page 20: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cash Control Document

Page 43: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

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

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

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

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

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

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

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

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

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

Customization example 1

Page 54: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transfer of Funds Document

Page 71: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

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

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

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

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

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

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

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

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

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

Configuration example 2

Page 82: Customizing KFS Business Rules Heather Stapleton, Indiana University Warren Liang, University of California-IrvineNovember 17 th, 2009

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

Questions?

Thank you