Kuali PowerPoint

Download Report

Transcript Kuali PowerPoint

KRA Developers Bootcamp
Terry Durkin - IU
(Development Manager/Lead Developer)
Bryan Hutchinson - Cornell
(Development Manager/Lead Developer)
About KRA
• Six partner schools
– Cornell, Indiana, Michigan State, MIT,
Arizona, CSU
• Based on a MITs Coeus
– Full Featured Research Admin suite
– 12+ years of development work
– Still going!
– Consortium model
More About KRA
• First Release - July 2008
– Proposal Development
– Budget
– Grants.gov S2S
• Second Release - 2009
– Awards
– IRB/Human Participants
–…
• Beyond
– Functional Parity with Coeus
How Bootcamp Works
• High-level Overview of Concepts
• Discussion based on slides
• Exercises
– Sample Application mimicking KRA
functionality
• Ask questions any time!
• Be engaged - You will get out what you put
in!
Day 1 - Documents and BOs
• Kuali is “Document based”
• Two Types of Documents
– Transactional Documents
– Maintenance Documents
Transactional Documents
• Represent a business function
– Apply for funds (by creating a proposal)
– Manage Human Participants (by creating a protocol,
amendment, etc…)
•
•
•
•
Complex rules and approval process
Lots of data
Potentially long living
Focus on Transactional Documents later in the
week
Maintenance Documents
• Manage (create/alter) Reference Data
• What is “reference data”
– In DB terms, it’s a table used by the entire
system as a FK from other tables
– People, Organizations, Units, Sponsors, etc…
– What else would be reference data?
• Simple documents to perform CRUD
operations
Business Objects
• Business Objects (BOs) are Java Beans
– Properties
– Getters/Setters
• Two categories
– Reference Data (CRUD via Maint Docs)
– Those used in Transactional Documents
(Document Composition)
• Map to a single table in the DB
Database
• Kuali uses OJB as an ORM tool
– OJB - ObJectRelationalBridge
– ORM - Object-Relational Mapping
•
•
•
•
Configure
Write Java Code (not SQL)
Related data elements are stored together
Model complex database relationships
Using OJB
• OJB Repository XML
• Class Descriptor
– Define the Java Class and the Table Name
• Field Descriptor
–
–
–
–
Java Property Name
Column Name
JDBC Type
Conversion (boolean to char, custom datatypes,
etc…)
– Primary Key
– Optimistic Locking
OJB - Getting more advanced
• Model Relationships
– Collection Descriptor
– Reference Descriptor
• More on these later in the week.
Data Dictionary (DD)
• Controls the behavior of Bos
• Defined in XML - <BO Class Name>.xml
– Inquiries
– Lookups
– Attributes - Properties of the BO
• UI Controls - Lookups, Maint Docs, Trans Docs
• Size & Shape Validation
• Required-ness
OJB - repository.xml
• Reference Descriptor
– Relationships to Reference data
– 1:1 (Proposal:Sponsor)
– Not saved/deleted when the related object is saved
• Collection Descriptor
–
–
–
–
Relationships where a parent can have many children
1:M (Proposal:Investigators; Investigator:Unit)
“Reverse Foreign Key”
Save with the Parent
Maintenance Docs
• How we manage Reference Bos
• XML based:
<BO Class Name>MaintenanceDocument.xml
–
–
–
–
–
–
BO Class
Maintainable Class - API for customization
Business Rules - API to perform validation
Document Authorizer - Customize AuthZ for a doc
Document Type - Reference to KEW
Maintainable Section(s) and Item(s) - what and how
attributes are presented
– Attributes, Locking Key, Default Existence Checks…
Values Finders
• User to present a list of options in the UI
– Drop-down
– Radio Group
• Queries the database and returns a list of valid
values
• PersistableBusinessObjectsCaluesFinder
– 80% - BO Class, Key/Label Attributes Names
• Custom Values Finders
– 20% - Extend KeyValuesBase, Implement
KeyValuesFinder
• XML (DD) and Code (Class file)
Transactional Documents
• Composed of a Document class and
multiple BOs
– Document Composition BOs have a reference
to the Document class/table (FK Relationship)
• Transactional Document classes are
special BOs
– Super BOs with additional behavior
Transactional Document
• Similar to Maint Doc DD files
– Add Attributes (since these are BOs)
– No lookups (we use KEW for Doc Search)
– No Inquiries
• Similar to other OJB mappings
– Lots of relationships defined
– Other mappings should not refer back to the
Document class
Web stuff in Kuali/KRA
• Struts
– Pseudo MVC
– Forms, Actions, Mappings
• Struts in Kuali
– Heavily customized
– Addresses common Struts anti-patterns
– Simplifies development
• Single Action Mapping
Struts Action Classes
Object Hierarchy for KRA:
-KraTransactionalDocument
----KualiTransactionalDocumentBase
------KualiDocumentActionBase
--------KualiAction
----------DispatchAction
Struts Form Classes
• Document is placed in the Form
• POJO Form Base handles type conversion
• Object Hierarchy for KRA:
-ProposalDevelopmentForm
----KualiTransactionalDocumentFormBase
------KualiDocumentFormBase
--------KualiForm
----------PojoFormBase
------------ActionForm (Struts base form)
Building the UI
• JSPs/Custom Tags
• JSTL and JSP Expression Language
– Preferable to Struts tags when possible
• Kuali Rice Tags
– page.tag and documentPage.tag
– tab.tag
– documentControls.tag
KRA Custom Tags
• Build complex JSPs
• Maintainability
• Methodology is approximate, but in
general:
– 1 JSP per page
– 1 .tag per panel on the page
HTMLControlAttribute.tag
• <kul:htmlControlAttribute />
• Replaces struts <html:xxx />
• Uses Data Dictionary entries to determine:
– Type of control (text, drop-down, etc)
– Length
– Max Length
• DD Attributes
Lists of Data
• Old stuff
– OJB, BOs, DD, etc
• New stuff
– Document changes
• Special getter
• Deletion Aware Lists
– Action Form - Methods for add/delete
– JSP/tag - Accessing properties of a list
Services and DAOs
• Services are where Business Logic occurs
– Perform a calculation; Save a Document
• Services are defined as Interfaces and
Implemented as classes
• Spring manages the resolution of Interface to
actual code - Spring Beans XML
• Accessing Services
– Dependency Injection
– Service Locator (KraServiceLocator)
• Data Access Objects - DAOs
– Similar to Services, but have knowledge of the data
model
Rules and Events
• Events - A way to evaluate a rule when an
action occurs
– Automatically invoked via frameworks (Save,
Route, etc…)
– Custom events (add or delete a BO from a
list)
Rules
• Beyond size & shape validation from the
DD
• DocumentRuleBase - Customize
save/route/etc… rules
• Custom Rules - Implemented in Rules
classes; Validate pretty much anything
about the document; Return true/false
Error Messages
• Give context to errors
– Display error messages on the appropriate
panel
– Highlight fields that have errors
• Generated from DD
• Generated from Rules classes
Audit Errors
• Similar to Error Messages
• Allows users to continue working on their
document and defer validation until ready
• Errors and Warnings
• Provides a link to where the error is
occurring
Document Authorizer
• Determine the level of access that a user has to
the document
– Read Only
– Full Access
– Somewhere in between
• Document Actions
– What actions can a user take on a document
– Implemented in JSPs via <kul:documentControls />
• Who can initiate a document