Kuali Nervous System Aaron Godert, Cornell University Jonathan Keller, University of California, Davis
Outline What is the Kuali Nervous System? Where did it come from? What does it do? And, what's Rice got to do with this?
What is the KNS? KNS = Kuali Nervous System An application development framework that KFS and KRA are built on Allows for pattern based integration with other middleware components Focuses on providing a foundation for efficient development of business functionality Helps to ensure consistent development practices
KNS is a Rice Component What is Kuali Rice? Kuali: a humble kitchen wok; Malaysian origins Rice: it is what it is –Sits on the bottom of a dish –Not a very tasty meal by itself –Better with some substance on top KFS - Beef KRA - Chicken KS - Seafood Rice is the foundation to a hearty software product
The Goals of Rice The board vision for Kuali is a plug and play module by module approach to software Kuali started as financials, but has evolved into a suite of administrative software (KFS, KRA, KS) A lot of functionality in Kuali systems –Keeping the Kuali code base as small as possible without impacting quality is key Highly productive development environment –For Kuali projects –For non-Kuali projects
Rice Goals Cont. A common and consistent architecture –Allow developers to understand other rice enabled projects –Infrastructure would not need to be reinvented on each project - focus on functionality! –Rice team can focus on IT standards, like SOA, that will benefit the entire Kuali software suite –Adoption of other Kuali modules feasible Generic enough for non-Kuali applications KNS plays a major part in this!
How We Got Here Kuali Enterprise Workflow (KEW) existed in production at Indiana University Kuali Finanical System (KFS) started development and had an architecture team –Morphed into the Kuali Nervous System (KNS) team –Achieve technical consistency across all aspects of KFS KFS --> KNS --> KEW
Along Came KRA Kuali Research Administration (KRA) wanted to reuse the core features KRA needed to integrate with KFS Align our core to support sharing services across Kuali apps in a loosely coupled fashion All Kuali products should be technically consistent under the hood –For end user functionality –For different development methodologies
Rice Was Born! KEWKuali Enterprise Workflow KNSKuali Nervous System KSBKuali Service Bus KENKuali Enterprise Notification KIM Kuali Identity Management
History of the KNS KFS spent a large amount of development time up front, using the best talent from each of the partner institutions Came up with a foundation on which to build KFS - the Kuali Nervous System It focused on a unified approach to development of functionality –A standard way to use workflow, perform CRUD operations, handle business transactions KNS extracted from KFS and put into Rice as a module
KNS Overview Provides reusable code, shared services, integration layer, and a development strategy Provides a common look and feel through screen drawing framework A document (business process) centric model with workflow as a core concept
Understanding the KNS Paradigm ENTITY_T Entity (POJO) ORM Mappin g Data Dictionary Lookups and Inquiries Maintenance Documents Transactional Documents Workflow (KEW)
Transactional Documents These are data-entry centric documents or “transactions” that model the business processes Examples include: Proposal Development, Journal Entry, Payment Reimbursement Built on a case by case basis using the Kuali Rice tag libraries (encompass snippets of UI behavior): –Notes and attachments –Workflow route log (audit log) Integrated with workflow
Maintenance Documents They do not need to be built case by case - just one JSP that draws them all These are the CRUD documents - an easy way to maintain support tables in a Kuali database –C: Create new table records –R: Read or query table records –U: Update existing table records –D: Delete existing table records Examples include: –Budget rates –Project codes
Inquiries A way to drill down and get more read- only information about a table record
Inquiry Screenshot
Inquiry Example Configuration Travel Account Inquiry
Lookups A way to search for data by a set of criteria Results of lookups can be returned to other lookups or documents
Lookup Screenshot
Lookup Example Travel Account Lookup Look up Inst.
Lookup Example Cont. <lookupField attributeName="foId" required="false" forceLookup="true" />
Other KNS Features Data Dictionary Question component Notes and attachments Pluggable business rules Pluggable authorizations System parameters Extended/custom attributes
What Does the KNS Do? Reusable Modules –Data Persistence –Document Framework –Business Rules / Validation –Lookups –UI Components Maintain Consistency Set of Services
Data Dictionary Business Objects –Attributes –Lookups –Inquiry Page –Relationships Document Definitions –Sections –Fields –Collections
Persistence Framework Business Objects Collections Security –Field Encryption –Masking Extendable
Business Objects Attributes –Labels –UI Widgets –Validation Attribute References Lookups Inquiries
Documents Maintenance Documents –Edit Business Objects –Rigid Layout Transactional Documents –e.g., Financial Documents –Free-form document layout
Maintenance Documents Created without code XML File Definition –Fields on Document –Sections –Locking –Business Rule Linking –Collections
Business Rules Rules –onSave –onRoute –onApprove –onAddLine Pre-Rules –Can ask questions
Authorization/Security Module Level Document Level Field Level –Read Only Fields –Hidden Fields –Masked Fields
Batch Processing Built-in Scheduler Trigger Jobs Steps
Questions? KNS Documentation: –