Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

KNS Feature

Implemented in KRAD

Notes

Ability to copy another business object by clicking a link from the lookup. Copies all the attributes except for the primary key, ver number, and object ID fields by default.
(Why can't we do this from a link on the inquiry page?) 

 

Different implementation will be needed, since object ID and version number are no longer required.

Upon copy, blanks out any fields determined to be "restricted" based on input from the document authorizer.  
Ability to delete a business object.  
edit  
Ability to pass in properties on the HTTP request to pre-populate fields on the document. If overrideKeys=field1,field2 not specified, then only parameters with the names of the primary key fields will be used.  
Calls into the Maintainable to populate any blank fields which have defaults after a New or Copy document is created.  
Automatically displays the left "Old" side when editing or copying a business object.  
Ability to block the creation of new objects of a given type at the data dictionary level. (allowsNewOrCopy)  
Knowledge of the fields and collections present in sections (tabs) so that error messages will be displayed under the correct heading.  
Auto-opening of tabs which have errors when redisplaying the document after a form submit which performs validation.  
Security mechanism which required the registration of all properties displayed on the form. The standard form control tags pushed their field names into a session scope variable. Upon form re-posting, only attributes registered in this way would be posted back to the business object. This was done due to the way that Struts (and now Spring) auto-bind values based on dot-notation. Without this, it is possible to create custom form widgets in the browser and change internal properties of business objects which should have been non-editable by the end user.  
Rendering of the "* = required field" heading when the document was in an editable format. (Probably not needed due to dynamic feedback in KRAD.)  

Display of maintenance document sections in collapsable tabs.

  
Ability to expand/collapse tabs one at a time or all at once.  
Memory of the state of the tabs on a given document across page refreshes.  
Ability to specify the default open/closed state of the document-specific tabs.  
Ability to include additional non-standard sections via a DD-specified file. The file would be included via the <jsp:include> tag.  
Ability to configure help links in the section headers via the DD.  
Ability to hide sections conditionally via the presentation controller.  
Ability to make entire sections conditionally read-only via the presentation controller.  
Ability to include additional JS files in the page via DD configuration.  
Info
titleThings to look into
  • Seems to have some special handling for attachments.
  • Support for encrypted incoming parameters for the new with existing case.
  • Fragile processing of "commands" - where the document handler was invoked from.
  • Special handling for multiple value lookup.
  • Handling for EBOs

...

Warning

Delete permission is insufficient. Just because a user can maintain an object, doesn't mean they should be able to delete it. A new permission template should be introduced for business object deletion.

Additionally, any record deletion should be within a try/catch which handles any FK violations and reports back by disapproving the document rather than throwing to exception.

 

Involved Classes

Class

Notes

Finished Analysis

Struts Classes

 

 

org.kuali.rice.kns.web.struts.action.KualiMaintenanceDocumentAction

 

 

org.kuali.rice.kns.web.struts.action.KualiDocumentActionBase  

org.kuali.rice.kns.web.struts.form.KualiMaintenanceForm

 

 

org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase  
General Classes  
org.kuali.rice.kns.document.MaintenanceDocumentBase  
org.kuali.rice.krad.maintenance.MaintenanceDocumentBase  
org.kuali.rice.kns.rules.MaintenanceDocumentRule  
org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase  
org.kuali.rice.kns.util.KNSGlobalVariablesSupport for a MessageList component which could add messages to the top of the KNS screens after form submission. (E.g., Document is successfully routed) 

org.kuali.rice.kns.util.FieldUtils

 

 

org.kuali.rice.kns.web.ui.FieldBridge

Converts the field metadata into UI objects used by rowDisplay.tag

 

org.kuali.rice.kns.web.ui.SectionBridge

Converts the section metadata into UI objects used by rowDisplay.tag

 

org.kuali.rice.kns.util.MaintenanceUtils  (tick)

JSP/Tag Files

 

 

/rice-web/src/main/webapp/kr/WEB-INF/jsp/KualiMaintenanceDocument.jsp

 

 

/rice-web/src/main/webapp/WEB-INF/tags/kr/page.tag  
/rice-web/src/main/webapp/WEB-INF/tags/kr/documentOverview.tag  

/rice-web/src/main/webapp/WEB-INF/tags/kr/documentControls.tag

 

 

/rice-web/src/main/webapp/WEB-INF/tags/kr/tab.tag

 

 

/rice-web/src/main/webapp/WEB-INF/tags/kr/rowDisplay.tag

Handles the actual display of the data cells in the document.

 

Maintainable

 

 

org.kuali.rice.kns.maintenance.KualiGlobalMaintainableImpl

 

 

org.kuali.rice.kns.maintenance.KualiMaintainableImpl

 

 

org.kuali.rice.krad.maintenance.MaintainableImpl  

Data Dictionary Classes

 

 

org.kuali.rice.kns.service.impl.MaintenanceDocumentDictionaryServiceImpl  

org.kuali.rice.kns.datadictionary.InquiryDefinition

 

 

org.kuali.rice.kns.datadictionary.MaintainableSectionDefinition

 

 

org.kuali.rice.kns.datadictionary.MaintainableSubSectionHeaderDefinition

 

 

org.kuali.rice.kns.datadictionary.MaintainableItemDefinition  
org.kuali.rice.kns.datadictionary.MaintainableFieldDefinition  

org.kuali.rice.kns.datadictionary.MaintainableCollectionDefinition

 

 

org.kuali.rice.kns.datadictionary.validation.MaintenanceDocumentAttributeValueReader  
Presentation Controller and Authorization  
org.kuali.rice.krad.document.DocumentPresentationControllerBase  

org.kuali.rice.kns.document.authorization.MaintenanceDocumentPresentationControllerBase

 

 

org.kuali.rice.kns.document.authorization.MaintenanceDocumentAuthorizerBase

 

 

org.kuali.rice.kns.document.authorization.MaintenanceDocumentRestrictionsBase

DTO class which contains the results of all presentation controller and authorizer checks on document sections and fields. Used by the KNS UI classes to alter the contents of the document.

 

org.kuali.rice.kns.document.authorization.InquiryOrMaintenanceDocumentRestrictionsBase  

org.kuali.rice.kns.bo.authorization.BusinessObjectAuthorizerBase

 

 

org.kuali.rice.kns.service.impl.BusinessObjectAuthorizationServiceImpl