kra developers bootcamp
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
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