kuali nervous system aaron godert, cornell university jonathan keller, university of california,...

28
Kuali Nervous System Aaron Godert, Cornell University Jonathan Keller, University of California, Davis

Upload: august-adams

Post on 29-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

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) 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!

• KEW Kuali Enterprise Workflow

• KNS Kuali Nervous System

• KSB Kuali Service Bus

• KEN Kuali 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_TEntity

(POJO)

ORMMappin

g

Data Dictionary

Lookups and

Inquiries

MaintenanceDocuments

TransactionalDocuments

Workflow(KEW)

Data Dictionary

• Business Objects– Attributes– Lookups– Inquiry Page– Relationships

• Document Definitions– Sections– Fields– Collections

Business Objects

• Attributes– Labels– UI Widgets– Validation

• Attribute References

• Lookups

• Inquiries

Persistence Framework

• Business Objects

• Collections

• Security– Field Encryption– Masking

• Extendable

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

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

Inquiries

• A way to drill down and get more read-only information about a table record

Inquiry Screenshot

Inquiry Example Configuration

<inquiry> <title>Travel Account Inquiry</title> <inquirySections> <inquirySection title="Travel Account"> <inquiryFields> <field attributeName="number" forceInquiry="true" /> <field attributeName="name" /> <field attributeName="accountType" /> <field attributeName="foId" forceInquiry="true" /> </inquiryFields> </inquirySection> </inquirySections></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

<lookup> <title>Travel Account Lookup</title> <instructions>Look up Inst.</instructions>

<defaultSort sortAscending="true"> <sortAttributes> <sortAttribute attributeName="number" /> </sortAttributes> </defaultSort>

Lookup Example Cont.

<lookupFields> <lookupField attributeName="number" required="false" /> <lookupField attributeName="name" required="false" /> <lookupField attributeName="accountType" required="false" /> <lookupField attributeName="foId" required="false" forceLookup="true" /> </lookupFields>

<resultFields> <field attributeName="number" forceInquiry="true" /> <field attributeName="name" forceInquiry="true" /> <field attributeName="accountType" forceInquiry="true" /> <field attributeName="foId" forceInquiry="true" /> </resultFields></lookup>

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

Other KNS Features

• System parameters

• Extended/custom attributes

Questions?

• KNS Overview:– https://test.kuali.org/confluence/display/KULDOC/Kuali+Nervous+System

• Rice Documentation Wiki– https://test.kuali.org/confluence/display/KULRICE/Home