Analysis JIRA:
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. |
| 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. (Though usually no link is displayed to perform this operation.) | ||
Ability to edit an existing business object. | ||
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. | ||
In any document where the Old/New sections are both displayed, highlight (yellow asterisk in the KNS) fields which have been changed from their "old" values. | ||
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. (A call like: ${kfunc:registerEditableProperty(KualiForm, field.propertyName)} is used to perform this function from rowDisplay.tag) | ||
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. | ||
![]() | ||
Ability to set the title of the tab sections via the DD. | ||
Ability to set an ID for sections for use by the presentation controller and document authorizer when setting sections as hidden or read only. If no ID is specified, the ID defaults to the tab's title. (This is not the HTML id used in the generated code.) | ||
Support for custom buttons on maintenance documents which only display on the "New" side and not when in read-only mode. They call back into the "refresh" method but with a custom action in one of the special URL-encoded fields. The custom action is manually inserted into the request parameter map passed to the Maintainable's processAfterPost() method. | ||
Use of the control definitions in the business object DD files to render the fields. | ||
Recognizes properties which are sensitive when passed in for the "newWithExisting" action and assumes they are encrypted, decrypting them before passing them into the new business object. (Please don't support - we should never be passing sensitive information on URLs. If there is a need to do this, have it place the sensitive data in Session scope and have the passed value be some sort of GUID to retrieve it.) (There is also use of a special prefix in places to indicate that a value is encrypted: EncryptionService.ENCRYPTION_POST_PREFIX) | ||
Support for retrieving attachments which have been linked to properties on the business object itself. (I presume they have been linked to BLOB fields.) There also seems to be support for attachment objects linked to collections within the BO. (See PersistableAttachment and PersistableAttachmentList) | ||
Altering of behavior of the main Action when the generic docHandler method is used depending on the "command" passed (displayActionListView, displayDocSearchView, displaySuperUserView, displayHelpDeskActionListView, initiate) | ||
Special handling to support multiple value lookups and mapping of the properties from the business object being looked up into the child records actually referenced by the "global" document. This is handled via the fairly overloaded "refresh" method. MV lookups only return the OBJ_ID values, so the records need to be retrieved before the properties can be mapped. ![]() | ||
Support for collections within business objects, with base methods for handling the addition and deletion of lines from the collection. |
Permission Checks
Check Description | Location | KIM Permission |
---|---|---|
Checks if a security-masked field can be displayed in the clear | BusinessObjectAuthorizationServiceImpl.canFullyUnmaskField | KR-NS / Full Unmask Field |
Checks if a security-masked field can be partially displayed | BusinessObjectAuthorizationServiceImpl.canPartiallyUnmaskField | KR-NS / Partial Unmask Field |
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.KNSGlobalVariables | Support 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 | ![]() | |
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 |