560 likes | 708 Views
KRAD - New Features and Improvements for the Rice Application Development Framework. Introduction. Scott Gibson Rice Developer University Of Maryland Jerry Neal Rice Developer Indiana University. Overview. Why this Presentation? Benefits of the KNS (KRAD) Overview of KNS Components
E N D
KRAD - New Features and Improvements for the Rice Application Development Framework
Introduction Scott Gibson Rice Developer University Of Maryland Jerry Neal Rice Developer Indiana University
Overview Why this Presentation? Benefits of the KNS (KRAD) Overview of KNS Components What is KRAD? Overview of KRAD Features Questionnaire & Questions Beyond KRAD 1.1, 1.2
Why this Presentation? Community Involvement Early Feedback
Benefits of KNS (KRAD) Decreased development time Increased code reuse (more maintainble) Standard development paradigm (training) Standard Look and Feel Integration with other Rice modules (KEW, KIM) Accessibility Designed for Extensibility
Overview of KNS Components Concept Entity(POJO) Data Dictionary ORMMapping ENTITY_T Lookups and Inquiries MaintenanceDocuments TransactionalDocuments Workflow(KEW)
Overview of KNS Components Data Dictionary <bean id="Country" parent="BusinessObjectEntry"> <property name="businessObjectClass" value="org.kuali.rice.kns.bo.CountryImpl"/> <property name="inquiryDefinition"> <ref bean="Country-inquiryDefinition"/> </property> <property name="lookupDefinition"> <ref bean="Country-lookupDefinition"/> </property> <property name="titleAttribute" value="postalCountryCode"/> <property name="objectLabel" value="Country"/> <property name="attributes"> <list> <ref bean="Country-postalCountryCode"/> <ref bean="Country-postalCountryName"/> <ref bean="Country-alternatePostalCountryCode"/> <ref bean="Country-postalCountryRestrictedIndicator"/> <ref bean="Country-active"/> </list> </property> </bean>
Overview of KNS Components Data Dictionary <bean id="Country-postalCountryCode" parent="AttributeDefinition"> <property name="name" value="postalCountryCode"/> <property name="forceUppercase" value="true"/> <property name="label" value="Country Code"/> <property name="shortLabel" value="Country Code"/> <property name="maxLength" value="2"/> <property name="summary" value="Postal Country Code"/> <property name="description" value="The code uniquely identify a country."/> <property name="required" value="true"/> <property name="validationPattern"> <bean parent="AlphaNumericValidationPattern"/> </property> <property name="control"> <bean parent="TextControlDefinition" p:size="2"/> </property> </bean>
Overview of KNS Components Lookup
Overview of KNS Components Inquiry
Overview of KNS Components Maintenance
Overview of KNS Components Maintenance
Overview of KNS Components Transactional <kul:documentPagedocumentTypeName="KualiGeneralErrorCorrectionDocument“ htmlFormAction="financialGeneralErrorCorrection" renderMultipart="true" showTabButtons="true"> <html:hidden property="document.nextSourceLineNumber"/> <html:hidden property="document.nextTargetLineNumber"/> <kul:hiddenDocumentFields /> <kul:documentOverview editingMode="${KualiForm.editingMode}"/> <fin:accountingLines editingMode="${KualiForm.editingMode}“ editableAccounts="${KualiForm.editableAccounts}"/> <fin:generalLedgerPendingEntries/> <kul:notes/> <kul:adHocRecipients/> <kul:routeLog/> <kul:panelFooter/> <kul:documentControlstransactionalDocument="true" /> </kul:documentPage>
What is KRAD? • Stands for: “Kuali Rapid Application Development” • Major effort to enhance and improve the KNS • More Flexible, Richer … Faster! • Include features from Kuali Student • Eventual rename of KNS Rice module
What is KRAD? • Major focus: • Rich UI Support • More UI Flexibility • Improved Configuration and Tooling • Numerous smaller improvements • Lookups, Inquiries, & Maintenance Improvements • Improved Navigation
What is KRAD? • Inspiration • Numerous suggestions collected from projects and the community • Feedback from UI Designers • Kuali Student • Other Frameworks: Rails, Roo, Seam • Timeline • First release scheduled for Rice 1.1 (November 2011) • Continued work on major enhancements through Rice 1.2
KRAD Features – Rich UI • Simplifies HTML Document Traversing & Event Handling • Lightweight and Non-Impacting • Built in Cross Browser support • Rich Widgets: • Dialog, Button, Accordion, Autocomplete … • Interactions and Effects: • Draggable, Droppable, Show, Hide, Toggle …
KRAD Features – Rich UI jQuery in 3 minutes! • Just JavaScript! Place in <script> tag or script file • Selectors • select one or more DOM elements • Placed inside $() or jQuery() • Ex. ‘*’, ‘#id’, ‘.class’, ‘document’, ‘this’, ‘:text’ … • Methods • Syntax: $(selector).method() • html, val, css, width … • each, first, last, parent, children … • Events • Syntax: $(selector).bind(event, [data], fn) • blur, change, focus, … • Effects • Syntax: ${selector).effect • fadeIn, fadeOut, slideDown, show, hide • Miscellaneous • jQuery.get, jQuery.ajax, jQuery.getJSON, jquery.getScript, jquery.post …
KRAD Features – Rich UI LightBox • Keeps user on page (reduces number of tabs/windows) • Display div content or iframe • Draggable, Resizable, Modal • Built using jQuery Dialog • Ex. $(selector).dialog([options])
KRAD Features – Rich UI LightBox Lightbox support for Inquiries, Lookups, Confirmations, and expanded Text Areas Pic Here
KRAD Features – Rich UI Messages Ex. Constraint Message Constraint Message – displays field restrictions Defined in dictionary:
KRAD Features – Rich UI Messages Ex. Watermark Watermark – displays in text field (ex. date format) Defined in dictionary:
KRAD Features – Rich UI Messages Growls – notifications about events Built in growls for Save & Route Use jQuery for custom notifications:
KRAD Features – Rich UI Messages • Other Messages: • Roll over field level help • Always displayed field Summary • Page submit/load notification
Progressive Disclosure KRAD Features – Rich UI • Show information when needed • Show/Hide • Sections (Tabs) • Groups (Parts of Tab) • Fields • Field Group (Grouping of fields) • Server & Client side support
Progressive Disclosure KRAD Features – Rich UI Server Side • Implement PresentationController: • Also supports conditional read-only & required • Called on page submits, can define ‘trigger’ field in dictionary for more dynamic behavior:
Progressive Disclosure KRAD Features – Rich UI Client Side Declare as ‘progressiveDisclosure’ in dictionary: Implement jQuery script to show/hide:
KRAD Features – Rich UI Ajax Dynamic Read-Only Content – additional read-only information displayed under a field Defined in the dictionary:
KRAD Features – Rich UI Other • Client side validation • Automatic translation of dictionary validation to client validation script • Text based button generation • Improved Calendar widget
KRAD Features – UI Flexibility Goals More layout flexibility for Inquiry and Maintenance Screens Ability to generate all screens (transactional documents) Support different look and feels (e.g. KS) Extensible and Customizable (without modifying core code)
KRAD Features – UI Flexibility Architecture Built using existing pieces of functionality No ‘object translation’ layer (dictionary->definitions->view) Uses fine grained tag files for rendering view Configured tag file and view object association Allow code access to modify definitions when necessary
KRAD Features – UI Flexibility Concepts * With the exception of Elements, all concepts are containers that hold certain items View – Rendering of information, fields, and other items to a user (the HTML page: header, body, footer, style, navigation) Section – Grouping within the view (usually associated with a menu item, horizontal/vertical tab) Group – Grouping of the Sections items Field – An application attribute or action and related elements (label, control, lookup, constraint, …) Field Group – A grouping of Fields Element – The basic renderable items (text, control, button, image, link, …) *
KRAD Features – UI Flexibility Concepts Concept Wireframe
KRAD Features – UI Flexibility Concepts Ex. Disbursement Voucher
KRAD Features – UI Flexibility Views • Responsible for overall layout and style • Navigation, Header/Footer, Body (Sections) • Can be single or multi paged • KRAD View Types • StackedView: Renders sections in vertical flow (with optional tabs), single page • TabbedView: Provides page navigation with horizontal tabs
KRAD Features – UI Flexibility Views • MenuView: Provides page navigation through a menu • WizzardView: Provides sequenced page navigation through the use of buttons • DocumentStackedView & DocumentTabbedView: Extends base view types for rendering standard document header/footer content and sections • View Type + Style = View
KRAD Features – UI Flexibility Views A view is associated with an application entity in the dictionary
Layout Managers KRAD Features – UI Flexibility • Renders content for a Section, Group, or Field Group • KRAD Layout Managers • GridLayoutManager: Arranges components in table cells with auto wrapping ([options: numberOfColumns, autoLabel, labelPlacement]) • BoxLayoutManager: Arranges components one after another vertically or horizontally
Layout Managers KRAD Features – UI Flexibility • TableLayoutManager: Arranges components in a collection table • MaintenanceLayoutManager: Special GridLayoutManager that adds additional fields • Custom Layout Managers can be created with spring definition and tag file handler
KRAD Features – UI Flexibility Sections Contain a title, one or more groups, and zero or more actions Associated errors and rollup of group errors
KRAD Features – UI Flexibility Groups Contain a title, sub-title, one or more fields, zero or more actions Associated errors and rollup of field errors
KRAD Features – UI Flexibility Fields • Usually associated with an attribute • Pull in information from dictionary attribute entry, but can override any settings (label, control, lookup, …) • Include many additional properties: • hidden, readOnly, lookupReadOnly, colspan, width, align, labelPlacement, required, total, triggerOnChange, …
KRAD Features – UI Flexibility Fields • Examples: • FieldDefinition, LabelFieldDefinition (attribute) • ActionFieldDefinition • TextFieldDefinition, HeaderFieldDefinition • BlankFieldDefinition • Custom Fields can be created with Spring definition and associated tag file handler
Field Groups KRAD Features – UI Flexibility Contains a label and one or more fields By default uses BoxLayoutManager (Horizontal or Vertical layout, single table cell for fields)
KRAD Features – UI Flexibility Elements • LinkDefinition – HTML Link MessageDefinition – HTML Text
KRAD Features – UI Flexibility Elements • ControlDefinition – HTML Control • ImageDefinition – HTML Image ActionDefinition – HTML Image Submit
KRAD Features – UI Flexibility Elements New Elements can be added with Spring definition and tag file handler
KRAD Features Config & Tools • Use ‘convention over configuration’ where possible • Provide better error checking and reporting • Standalone dictionary startup & validation • Support dictionary reload • Dictionary GUI • Graphical interface to dictionary • Provides searches, auto-complete, …
KRAD Features Config & Tools • Tools • Create entity (bo class, dictionary, mapping) • Create document (document class, dictionary, mapping, action class & form, optional authorizer or presentation controller) • Generate Constraints • Message GUI • Graphical interface for specifying messages (keys, text, constants, …)
KRAD Features Other Improvements • Multiple Lookups & Inquiries for an entity • Lookup – ‘basic’, ‘advanced’, … • Inquiry – ‘short’, ‘full’, … • Dynamic Attributes • Define attribute in dictionary without entity/table changes • Table support for labels