1 / 30

KRA Developers Bootcamp

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

ophrah
Download Presentation

KRA Developers Bootcamp

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KRA Developers Bootcamp Terry Durkin - IU (Development Manager/Lead Developer) Bryan Hutchinson - Cornell (Development Manager/Lead Developer)

  2. 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

  3. 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

  4. 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!

  5. Day 1 - Documents and BOs • Kuali is “Document based” • Two Types of Documents • Transactional Documents • Maintenance Documents

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. OJB - Getting more advanced • Model Relationships • Collection Descriptor • Reference Descriptor • More on these later in the week.

  12. 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

  13. 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

  14. 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…

  15. 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)

  16. 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

  17. 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

  18. 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

  19. Struts Action Classes Object Hierarchy for KRA: -KraTransactionalDocument ----KualiTransactionalDocumentBase ------KualiDocumentActionBase --------KualiAction ----------DispatchAction

  20. 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)

  21. 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

  22. KRA Custom Tags • Build complex JSPs • Maintainability • Methodology is approximate, but in general: • 1 JSP per page • 1 .tag per panel on the page

  23. 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

  24. 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

  25. 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

  26. 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)

  27. 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

  28. 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

  29. 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

  30. 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

More Related