Skip to end of metadata
Go to start of metadata

Analysis JIRA: KULRICE-8739 - Data cannot be retrieved due to an unexpected error KULRICE-8800 - Data cannot be retrieved due to an unexpected error

Demonstration of KRAD lookup functionality:http://env11.rice.kuali.org/kr-krad/labs?viewId=LabsMenuLookupView

Lookup Criteria / Screen

Lookup Criteria Conversion Notes (Temp work area) : Lookup Criteria Conversion

ID

KNS Feature

Implemented in KRAD

Notes

User GuideKNS SampleKRAD Sample
L1

Data Dictionary configured ordered list of lookup (criteria) fields

(tick)

Configure a Uif-LookupView

LCF1 LCF2 LCF3

CountryDefault
L2

Ability to arrange criteria into multiple columns by DD configuration.

(tick)

Set the layoutManager.numberOfColumns property on the criteriaGroup of the Uif-LookupView

LCF8 Multiple Columns Criteria
L3

Automatic inclusion of criteria for the "active" attribute when the BO class implements the Inactivateable interface

(tick)

 

n/a Context
L4

Automatic child lookups on criteria based on DD/Persistence layer relationships

(tick)

 

n/aStateDefault
L5

Ability to suppress child lookups on criteria via DD configuration. (E.g., used to suppress the lookup on the PK field of the business object currently being looked up. It would be nice if this condition were detected automatically to make configuration simpler.)

(tick)

PK field on same BO does not show quickfinder automatically
 To suppress other fields just set p:quickfinder.render="false" on Uif-LookupCriteriaInputField

LCF4NamespaceQuickfinder Disabled
L6

Ability to set default values via DD on lookup criteria.  (Both as string literal and via a ValueFinder class.)

(tick)

Set the defaultValue param on the Uif-LookupCriteriaInputField of the Uif-LookupView

n/a 

Quickfinder Disabled

(see Travel Account Number)

L7

Automatic inclusion of a "blank" value in select-list lookup criteria if one did not exist after the ValuesFinder is used.

(tick)

 

n/a  
L8

Automatic conversion of attributes with a checkbox definition into a set of 3 radio buttons.

(tick)

 n/a (included in L3)CountryContext
L9

Support for the special lookup operators ( |, <, >, .., etc...)

(tick)

 

  

Lookup Operators

L10

Specification of a lookup title. (Nice to have: auto generate this by creating name from the conversion of the business object name)

(tick)

Use headerText property on Uif-LookupView. Does not do auto generation.

LBB2CountryDefault
L11

Specification of additional HTML to display in the header section (called "menubar" or "supplementalMenuBar") (Not used by KFS)

(tick)

The page.header groups support Uif components.

LBB4 Headings
L12

Specification of additional buttons to display with the standard lookup buttons.  Can specify a strings for the remainder of the HTTP URL and the SRC attribute for the button's image.

(tick)

The criteriaGroup.footer can be extended or replaced with Uif components.

LCF5 Criteria Footer
L13

Ability to clear all input values via button.

(tick)

 

n/aCountryDefault
L14

Ability to cancel the lookup and return to the calling page.  (Presently via the backLocation URL parameter.)

(tick)

Via close button on light box.

n/aCountryDefault
L15

Ability to hide the entire search criteria section by passing "searchCriteriaEnabled=true" on the URL.  (Not in use by KFS)

(tick)

Uif: renderLookupCriteria property
URL: &renderLookupCriteria=false

LCF7 Hidden Criteria
L16

Ability to configure on the BO DD file that the search buttons (Search/Clear Values/Cancel) be hidden. Presumably, this would be used by places which also force the search to run automatically.)

(tick)

Uif: renderCriteriaActions

LCF6 Without Search Buttons
L17

Ability to make the search fire off automatically. (Presently, this may require the URL to be altered upon the lookup to use the "search" methodToCall. It might be nice to be able to configure a default for this in the DD and then allow a more explicit override when starting the lookup.)

(tick)

Can be configured by adding to url methodToCall=search (same as KNS). No DD property to set.

n/a URL-Search
L18

Validation of search criteria.  Present default implementation will only validate criteria specified in the list in the DD.  It will not validation other items in the map even though they may be used by the later lookup code.  (And may, in fact, be attributes of the business object for which there could be type validation.)  Only appears to validate them for required status and use of the search operators on non-supported data types.

(tick)

In KNS and KRAD the required criteria is not inherited from the attribute definition

n/a  
L19

Ability to specify in the DD that a field should always be treated literally, even if search operators are present. If a user specifies a value in such a field, an information message is returned.

(tick)

Uif: disableWildcardsAndOperators

LCF9 Disable Wildcards
L20

Ability to define, on the source attribute in the DD which will generate a lookup (quickfinder), a set of lookup parameters. (A mapping between attribute names on the source object and the lookup object which will be pre-populated on the lookup.)

(tick)

Adding a quickfinder to the LookupCriteriaField

LQF1 see Input Field -> Quickfinder
L21

Auto-generation of lookup (quickfinder) parameters (when not explicitly given) based on the key field relationships known to the system. (DD or persistence layer)

(tick)

 

n/aStateDefault
L22

Ability to pass in default values when initially displaying the lookup by passing propertyName=value pairs on the URL.

(tick)

&lookupCriteria[<property-name>]=<value>

LCF10

  
L23

Ability to set any given field (via DD) to trigger a page submit and reload upon changing its value and tabbing out. (triggerOnChange)

(tick)

support no longer neededn/a  
L24

Ability to program into the Lookupable a javascript string which would be run upon load of the lookup page. (Presently only used by the document search lookup.)

(tick)

Add onLoadScript on the Uif-LookupView

 LLA28  
L25

Includes hidden form fields for read-only input criteria so it gets passed to the lookup properly. (As opposed to documents, where the field is maintained in the session so that an HTTP POST hack can not change the value.)

(tick)

 

n/a see Hidden Control
L26

Hitting enter in any text field submits the lookup.

(tick) (warning) Needs to moved into the framework.
KULRICE-10902

 

n/aCountryDefault
L138Ability to define alternative icons that will appear on the lookup screen next to the Search and Clear buttons.

(tick)

KNS LookupDefinition.setSearchIconOverrideLQF2L138 KNS SampleLabs - Fields - Input Field - Quickfinder
L139Ability to set HelpDefinition and/or Help URL

(tick)

LookupDefinition.setHelpDefinition(), .setHelpUrlLOF2  

Potential KNS Issues

Issue

Will display field icons (lookup/direct inquiry) even if the field is labeled as read-only. Seems strange. There is code which explicitly allows it when in "isLookup" mode.

Will display field on lookup criteria even if there is no attribute definition defined. (It then shows up as an unadorned text field with no label.) If we are going to allow this, then we should make some attempt to label the field, even with just the property name to help the developer troubleshoot.

Lookup Results Display

Lookup Results Conversion Notes (Temp work area) : Lookup Results Conversion

ID

KNS Feature

Implemented in KRAD

Notes

User GuideKNS SampleKRAD Sample
L27

Data dictionary configured ordered list of result fields

(tick)

Configured through Uif-LookupView resultFields property

LRF1 LRF2

CountryDefault
L28

Automatic inquiry links on lookup results

(tick) KULRICE-10466

ResultsField - InputField - inquiry.render=true 
See ViewHelperServiceImpl:buildInquiryLink

n/aCountryDefault
L29

Ability to suppress inquiry links in lookup results via DD configuration

(tick)

Configure through UifLookupView::resultsFields - field.inquiry.render=false

LRF3 Inquiry Disabled
L30

Ability to configure lookup result limits globally by system parameter.

(tick)

Based on RESULT_LIMIT system parameter. Ticket (KULRICE-9034) created to add new KR-KRAD namespace system parameter to prevent configuration issues between KNS from KRAD.

n/a  
L31

Ability to configure lookup result limits per client application by system parameter.

(tick) KULRICE-10453

Handled in KULRICE-5804.  Needs new namespace in KULRICE-9034.

n/a  
L32

Ability to configure lookup result limits by module by system parameter.

(tick)

Retired.  Not used in KNS

n/a  
L33

Ability to configure lookup result limits by business object by system parameter.

(tick)

Uses KRAD specific* RESULTS_LIMIT and MULTIPLE_VALUE_RESULTS_LIMIT parameters.
(* via KR-KRAD namespace)

 LBB5  LBB6 Result Limit
MV Result Limit
L34

Paging of lookup results.

(tick)

Handled by default as LookupResultsCollection is based on Uif-PagedRichTable

n/aCountrysee CollectionGroup
L35

Ability to configure page size for results globally by system parameter.

(tick) KULRICE-9086

Added KULRICE-9086 to deal with adding MULTIPLE_VALUE_RESULTS_PER_PAGE system parameter to KR-KRAD namespace

n/a  
L36

Ability to configure page size for results per client application by system parameter.

(tick) KULRICE-9086

Added KULRICE-9086 to deal with adding MULTIPLE_VALUE_RESULTS_PER_PAGE system parameter to KR-KRAD namespace

n/a  
L37

Ability to configure page size for results by module by system parameter.

(tick)

Retired. Not used in KNS

n/a  
L38

Ability to configure page size for results by business object by system parameter.

(error) (question) Can be done in XML. Do implementers really need to change this?

 

(warning)  
L39

System parameter-based maximum result column display length

(error) KULRICE-9109

Can be controlled from the p:size parameter.  However, may want to find way to incorporate RESULTS_DEFAULT_MAX_COLUMN_LENGTH system property.

n/a  
L40

Automatic detection of whether the lookup is being used from within another function or from the portal/menu pages
(The KNS implementation is a complete hack.  We need a better (more explicit) way to control this.

(tick)

renderMaintenanceLinks

LRF7  
L41

Ability to customize the "actions" available on the left of the lookup results.
(This requires custom code now which has awareness of HTML and the KNS structure - should work out a better way which is more output-independent.)

(tick) KULRICE-10663

Client application can override and merge a list of action components into Uif-LookupView-ResultActions.  JIRA to allow any component.

LRF4 KFS Asset

Vertically stacked actions

 

Actions with link group

 

L42

Permission, workflow, and DD-based control of the appearance of the standard "edit", "copy", and "delete" links.

  • If no workflow document exists, the edit/copy links will not be shown.
  • If the DD <allowsNewOrCopy> is false, the Copy link will not be shown.  (Checked via the presentation controller class - which allows another customization hook for this check.)
  • The KNS checks the BO Authorizer Service canCreate() method to see whether the user can create objects of the given class. (Checks the KR-NS / Create / Maintain Record(s) permission for against the current object.)
  • The KNS checks the BO Authorizer Service canMaintain() method to see whether the user can edit the current record.  (Checks the KR-NS / Create / Maintain Record(s) permission for against the current object.)
  • The KNS checks the BO Authorizer Service canMaintain() method to see whether the user can delete the current record.  (Checks the KR-NS / Create / Maintain Record(s) permission for against the current object.)
  • Verifies in the DD whether this type of object can be deleted.  (NOTE: this check should be moved first, since it's usually false and *muuuuch* cheaper to perform than the KIM check done just above it.)

(tick) 

DD allowsNewOrCopy is handled by allowsMaintenanceNewOrCopyAction
Links in the Uif-LookupViewResultsActions include a ViewHelper.allowsMaintenance*Action to edit/copy/delete.

n/a Travel Company
L43

Configure a set of default sort fields in the DD. Multiple sort field could be specified, although the ascending/descending property could only be applied to the definition as a whole.

(tick)

KNS:SortDefinition
KRAD:defaultSortAttributeNames

LRF5 Default Sort
L44

Automatic recognition of when the primary key fields were all filled out and display of a message to that effect.

(tick) KULRICE-10493

KNS: Lookup.jsp searchUsingOnlyPrimaryKeys
KULRICE-5391

n/aCountryDefault
L45

Ability to define, on the source attribute in the DD which will generate a lookup, a set of field conversions. (A mapping between attribute names on the lookup object to the source object which will be populated on the source object when the user clicks the return value link on a row.)

(tick)

KNS: FieldUtils.populateFieldsFromBusinessObject

LQF1 Default
(see Travel Fiscal Officer Quickfinder) appers based on DD relationship
L46

Auto-generation of field conversions (when not explicitly given) based on the key field relationships known to the system. (DD or persistence layer)

(tick)

KNS: FieldUtils.populateFieldsFromBusinessObject

n/a  
L47

Automatic translation of code fields which have, as a related class, a business object which extends KualiCode. In these cases, it adds the referenced business object's "name" property and includes that in the display of the column. (via the additionalDisplayPropertyName property)

(tick)

KNS: FieldUtils.populateFieldsFromBusinessObject; KRAD: View.setTranslateCdoesOnReadOnlyDisplay

LRF8 add sample
L48

Storage of the search results in the session backed by a table.  (Table may only be used for multiple value lookups...)  Clicking on the search button again clears the prior session cache...of *all* lookups in the user's session, not just the current one.

(tick)for multi value, done differently

Jerry conversion: was disccusions related to the rewrite and how to store this data.  See: 

https://wiki.kuali.org/display/KULRICE/Multi-Value+Lookups

 

n/a  
L49

Display of the actual number of results when results are truncated.  (This is done by running the lookup with a COUNT(*) instead of the field list.)

(tick) (warning)Jerry: should the samples show  that there are actually 7 records in the database?  KNS doesn't seem to do that either.

Value is tracked through the resultSetCount and can be accessed, however there is no message to display (other than datatables sInfo)
KULRICE-5391

  Default vs. Results Limit
L50

Ability to designate certain columns as to be totaled. These must be numeric columns and the result is formatted as currency. The totals are displayed at the bottom of the report. The totaling of the values is a feature provided by the DisplayTag library.

(tick)no formatting support for client option
Does serverside formatting work?

See Uif-ColumnCalculationInfo

LRF6  
L51

Ability to sort results by clicking on header. Clicking a 2nd time reverses the sort. Sort is somewhat data type sensitive, but may (in KNS) depend on the detected datatype in the first row.

(tick)

See Uif-PagedRichTable.templateOptions.sortableColumns

N/ACountryDefault

Lookup Results Retrieval

ID

KNS Feature

Implemented in KRAD

Notes

L52

Ability to specify a Spring-configured bean to override the default lookup behavior.
(This should be simplified - does anyone remember why we have a Lookupable *and* and LookupableHelperService?)

(tick)

Uif-LookupView can be overridden to customize default behavior.  Via the viewHelperServiceClass the LookupableImpl can be customized as well.

Other Features

Lookup Other Features Notes (Temp work area) : Google doc draft

Lookupable has "allowsMaintenanceNewOrCopyAction", not sure if this is actually being used, but overriding the method seems like it would work, also the buildMaintenanceActionLink is public and could be overridden to modify behavior

ID

KNS Feature

Implemented in KRAD

Notes

User GuideKNS SampleKRAD Sample
L53

Permission check (Look Up Records) on the use of the lookup as a whole.

(tick)

The LookupView AuthorizerBase class has a method "canOpenView" which looks at the user and their permissions and determines whether they can use lookup as a whole.

   
L54

Checks if the user has the Initiate permission on the maintenance document (via the document authorizer class) related to the business object on the lookup and suppresses the entire action column if so.

(tick)

KULRICE-8571 /  KULRICE-10524 hide action column if not actions are available to user

   
L55

Permission, workflow, and DD-based control of the appearance of the create new link in the upper left.

(tick)

LookupableImpl method buildMaintenanceActionLink is the method that generates the action link of the "New" button, maintenanceMethodToCall argument with value of "start" is used to generate the new link by default, the method could be overridden.

In KRAD, workflow check is done by the allowsMaintenanceNewOrCopyAction, which checks to see if the data object has an associated maintenance document defined for it

   
L56

Ability to override the behavior and contents of the create new link in the Lookupable.

(tick)

Lookupable has "allowsMaintenanceNewOrCopyAction", not sure if this is actually being used, but overriding the method seems like it would work, also the buildMaintenanceActionLink is public and could be overridden to modify behavior

(warning) Should still work but easier to do in xml  
L57

Ability to open multiple inquiries from the lookup into separate windows.
(Really more of a browser feature, but something that power-users would be quite upset if they could not do.  Use case: load up a number of accounts in a lookup, then open the inquiries in separate windows and/or tabs for comparison.)

(error) KULRICE-10915

UXI Prioritized

By default inquiries are opened in lightboxes.  User can open the inquiry in a new tap/windows via the right click context menu (or "Ctrl"-click)

n/aCountryDefault
L58

Ability to export lookup results to CSV, Excel, or XML format.

(tick)

 n/aCountryDefault
L59

Ability to customize the XML export format.  (As done by KEW for document types.)

(tick)

 n/a  
L60

Automatic display of help link (sourced from the DD) for the document or business object being queried.

(tick) KULRICE-9252

    
L61

KFS (in 3 places) sub-classes the KualiLookupAction class to completely customize the lookup function, criteria, and results sections.

(tick)

One of these subclasses seems to be for KFS multivalue lookup customization, this might go away as part of the upgrade to KRAD. Should be able to override LookupableImpl, LookupController, etc to customize

   
L62

KFS (in more than 3 places) sub-classes the LookupForm class as part of the above.

(tick) (question) are there specific samples.

The formClass property on Uif-LookupView could be set to point at a customized LookupForm that extends the original

   
L63

Lookups first post back to the original page to save their values before redirecting on to the lookup action/controller.  This was necessary since we could not employ JavaScript originally.  Lots of the code in KualiAction.performLookup() relates to parsing out these "special" values.  If lookups always happen in a lightbox now, much of that complexity could go away.

(tick)

KULRICE-9107 This functionality was determined to be unnecessary for KRAD implementation of multivalue lookups.

   
L64

Ability for the document to specify that, upon returning to the originating document, which reference objects should be refreshed as a result.  (I.e., so that the name of the object is displayed in a related field.)  This list of references is usually auto-generated by the relationship metadata.

(tick) (warning) need to verify jpa

KULRICE-5286

  (warning) add referencesToRefresh sample

Features Customizable via Lookupable

ID

Lookup Property / Feature

Default Delegated to LookupableHelperService

Implemented in KRAD

Notes

User GuideKNS SampleKRAD Sample

Conversion Script Notes

L65

Business Object Class

No - but sets it on the helper service as well.

(tick)

set/getBusinessObjectClass have been renamed to set/getDataObjectClass.  Since now all data objects are supported the requirement that the object is a BussinessObject has been removed.  The rename of these methods reflect this change. The data object is usually specified via the dataObjectClassName property of the extended Uif-LookupView bean.

LLA1  

 

L66

Result set columns

Yes

(tick)

getColumns has been removed.  The result columns are now specified via the Uif-LookupView (see resultFields property).

LLA4

KFS

KC

Lookup with Conditional Results

Lookup with Conditional Results Based on Criteria

Conversion script should check for usage of this method and write out a message

L67

Search Parameter Validation

Yes

(tick)

validateSearchParameters takes the LookupForm as an additional parameter and returns a boolean value indicating that no validation error message has occurred (true = no error).  Warning and informational messages do not affect this return indicator.  A ValidationException is no longer thrown.

LLA5KFS-ProposalLabsLookup-PerDiemExpense

 

L68

Returning Search Results

Yes

(tick)

getSearchResults takes the LookupForm and indicator for bounded/unbounded search as additional parameters.  getSearchResultsUnbounded has been removed.

LLA7  

 

L69

Clearing search criteria

Yes

Yes, but...

performClear takes the searchCriteria map as an additional parameter since it is no longer stored in the Lookupable.  The searchCriteria map is returned after clearing the criteria and setting their default values.
(warning) Special handling for secure field and default value formatting has not been implemented. Is this needed?

LLA8  

 

L70

Getting return URL (E.g., when used from quickfinder)

Yes

(tick)

getReturnUrl has been renamed to buildReturnUrlForResult which accepts the LinkField that returns the result from the lookup and the model.

LLA9  

 

L71

Create New HTML

(Renders image and URL. Asks the LookupableHelperService if it should display the link.)

Partially

(tick)

currently renders as link

can be customized by overriding the appropriate header group

n/a  

 

L72

Lookup Menu Bar

(Pulled from DD for the business object)

No

(tick)

 KULRICE-5388

configured via Uif

LLA2  

 

L73

Supplemental Menu Bar

Yes

(tick) 

configured via Uif

LLA2  

 

L74

Input Criteria Row Objects

Yes

(tick)

see getRows in conversion guide

LLA3  

 

L75

Lookup Display Title

Yes

(tick)

getTitle has been removed.  The title is now specified via the Uif-LookupView (see headerText property).

LLA11  

 

L76

Return Location

(Usually passed in)

Yes

(tick)

getReturnLocation() has been removed. The return location is now stored on the form. Use LookupForm.getReturnLocation().

LLA13  

 

L77

Return keys

(List of property names from the looked up object which will be returned to the calling page.)

Yes (pulls from PK list for BO)

(tick)

getReturnKeys() takes the LookupView, LookupForm and the data object as an additional parameter.

LLA12  

 

L78

Source image for a single extra button

(Pulled from DD)

No

(tick)

getExtraButtonSource() has been removed.  Buttons are configured via Uif-LookupCriteriaGroup (see footer property). 

LLA14  

 

L79

Additional URL parameters passed for the extra button

(Pulled from DD)

No

(tick)

getExtraButtonParams() has been removed.  Buttons are configured via Uif-LookupCriteriaGroup (see footer property).

LLA15  

 

L80

Default sort columns

Yes

(tick)

getDefaultSortColumns() has been removed.  Sort columns are configured via Uif-LookupView (see defaultSortAttributeNames property).

LLA17  

 

L81

"check for additional fields"

(Allows the lookupable to determine if there are fields in the HTTP request parameters which should be set on the input criteria. (Once this returns true, they are mapped by the property name.))

Yes

(tick)


KULRICE-9082

&lookupCriteria[code]=us

LLA16  

 

L82

docFormKey

(Used to separate multiple lookups within the user's session)

Yes

(tick)

set/getDocFormKey() has been removed.  The document form key is stored on the form.  Use LookupForm.getFormKey().

LLA18  

 

L83

field conversions

Yes

(tick)

setFieldConversions() has been removed. The field conversion is specified via Uif (see quickfinder.fieldConversions property).

LLA19  

 

L84

Read-only fields list

Yes

(tick)

setReadOnlyFieldsList() has been removed.  Read only criteria fields are specified via Uif (see readOnly property).

LLA20  

 

L85

Support for a "customLookupAction" when returning from a child quickfinder

Yes

(tick)

KULRICE-9072

see performCustomAction() in conversion guide

LLA26  

 

L86

Handling fields which need to be encrypted when transmitted

Yes

(tick)

KULRICE-9076

No special conversion needed.  Data dictionary configuration is the same.
Data is encrypted for passing from Lookup back via URL and field is properly masked with the exception of the issue in the jira.

n/a  

 

L136

Performs conditional logic (based on current search values or other parameters) to override field hidden, read-only, and required attributes previously set.

Yes

(tick)

applyConditionalLogicForFieldDisplay() has been removed. Conditional displaying of criteria field is done through Uif configuration.
LLA30   

Features Customizable via LookupableHelperService

ID

Lookup Property / Feature

Implemented in KRAD

Notes

User GuideKNS SampleKRAD Sample
L87

(Everything with a "Yes" above)

 

see above

   
L88

allowsMaintenanceNewOrCopyAction

default checks BO Authorization service.canCreate()

(tick)

moved to LookupableImpl

LLH1  
L89

allowsMaintenanceEditAction

default checks BO Authorization service.canMaintain()

(tick)

moved to LookupableImpl

LLH1  
L90

allowsMaintenanceDeleteAction

default checks BO Authorization service.canMaintain() and if the DD allows deletion of this type

(tick)

moved to LookupableImpl

LLH1  
L91

maintenance URL

BADLY NAMED: the URL is not returned by this method - it only sets the anchor title for accessibility

(tick)

The anchor title is set as part of the LookupableImpl.buildMaintenanceActionLink

LLH2  
L92

Action URLs

Returns HTML which forms the links in the Actions column of a lookup.

(tick)

The URL is created in LookupableImpl.buildMaintenanceActionLink

LLH2  
L93

Obtaining the max length for a column

Checks DD then the system parameter table if not set

 This is a protected method, not exposed via the API.n/a  
L94

Retrieval of search results

There are a number of methods and it's not obvious which one you should override. (E.g., getSearchResults() or getSearchResultsHelper())

 

(tick)

Moved to LookupableImpl. Method signature changed, includes search criteria and unbounded indicator

LLH4  
L95

Delegation of external business object lookups to their module service.

(tick)

(see LookupableImpl.getSearchResults)

n/a  
L96

In-memory joining to external business objects by running the query against the EBO first and then using the results to filter the "normal" lookup.

(tick)

(see LookupableImpl.getSearchResults)

n/a  
L137Functional requirements state that users are able to perform searches using criteria values that they are not allowed to view(tick)applyFieldAuthorizationsFromNestedLookups() has been removed. Conditional displaying of criteria field is done through Uif configuration.

LLA29  

Multiple Value Lookup

NOTE: There is only inherent support for processing of multiple-value lookup results for maintenance documents.

ID

KNS Feature

Implemented in KRAD

AnalysisNotesUser GuideKNS SampleKRAD Sample
L97

Pass-through of the collection property name so that, upon return, the values can be added/processed properly.

(tick)

Passed as a parameter back to the LookupController, the parameter value is lookupCollectionName, the xml property in the DD used to define this is collectionObjectClass

In KNS the "name" property of the MaintainableCollectionDefinition was passed through the Quickfinder.  In KRAD this property was renamed to "propertyName".part of maintenance documentsKFS Account Delegate GlobalTerm Specs
L98

Tracking of selected items by the objectId property values.

(tick)

Selected items are tracked successfully (for the most part) not sure if this is using objectId or another property value.

In the KNS, selected items were tracked by ObjectId that ere temporarily persisted in in the database.  In KRAD the items are tracked by primary key and passed though a Spring\Flash Attributes via a push back of the form.  For cross domain lookups the primary keys are returned as encoded URL parameters.n/a  
L99

Maintenance of selected items in a KRNS database table (and retaining selected values when page changes.)

(tick) KULRICE-10302

KULRICE-10302

No longer necessary to maintain a KRNS table for results. However selected values are not currently saved when the lightbox changes to a different page in the result set, or if a lightbox is not used for the lookup, when a different page of the result set is displayed.

 n/a  
L100

Additional control buttons to allow selection of all items on a "page" or all items in the resultset.

(error)KULRICE-10534 KULRICE-10535

UXI Prioritized

Buttons include: "Select all from all pages" "deselect all from all pages" select all from this page" "deselect all from this page"

Currently being reworked.

In KRAD these buttons are found as part of a drop-down menu on a multivalue lookup.

The multivalue lookup action buttons in the KNS were provided by the displayMultipleValueLookupResults.tag file and were automatically included on any multivalue lookup. In KRAD this functionality has been moved into the component Uif-SelectCollectionItemField which is included by default on multivalue lookups.

n/a  
L101

Separate "per-page" size for multiple value lookups defined by system parameter. Not configurable by business object.

(tick) KULRICE-9086

LookupView seems to have necessary additional parameter (multipleValuesSelectResultSetLimit), but it doesn't appear that this parameter is initialized by the system, or that there is a corresponding system parameter to store configurable values

    
L102

Authorization checks on lookup results and individual records.

(tick)

AttributeDefinition security masking

    
L103

Passes a custom "refreshCaller" to the source page to tell it to pull the selected objects.

(tick)

refreshCaller and refreshCallerType are passed back to the LookupController from the form, refreshCallerType is MULTI_VALUE_LOOKUP for the usage of this functionality

    
L104

Support for multiple value lookups for EBOs.

(tick)

KULRICE-10350

see LookupableImpl.getSearchResults. If the dataObjectClass is an EBO then the responsible module service is called to get the results.

<property name="collectionLookup">
<bean parent="Uif-CollectionQuickFinder"
p:dataObjectClassName="org.kuali.rice.location.framework.campus.CampusEbo"
p:fieldConversions="name:field1,shortName:field2,code:field3"/>
</property>
<property name="items">
<list>
<bean parent="Uif-InputField" p:label="Field 1" p:propertyName="field1"/>
<bean parent="Uif-InputField" p:label="Field 2" p:propertyName="field2"/>
<bean parent="Uif-InputField" p:label="Field 3" p:propertyName="field3"/>
<bean parent="Uif-InputField" p:label="Field 4" p:propertyName="field4"/>
</list>
</property>

 


 
   

KNS Classes

ID

Reviewed

Class Name

Notes

L105

(tick)

org.kuali.rice.kns.datadictionary.LookupDefinition

 

L106

(tick)

org.kuali.rice.krad.datadictionary.SortDefinition

 

L107

(tick)

org.kuali.rice.krad.datadictionary.HelpDefinition

Contained a parameter PK which would contain the help URL.

L108

(tick)

org.kuali.rice.kns.datadictionary.FieldDefinition

 

L109

(tick)

rowDisplay.tag

Handles the display of the criteria section of Lookups (and KNS Inquiries and maintenance documents)

L110

(tick)

KualiLookup.jsp

 

L111

(tick)

org.kuali.rice.kns.util.FieldUtils

Class which was necessary once upon a time for compensating for limitations in the allowed technologies which we no longer have.

L112

(tick)

org.kuali.rice.kns.lookup.KualiLookupableImpl

 

L113

(tick)

org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl

 

L114

(tick)

org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl

 

L115

(tick)

org.kuali.rice.kns.lookup.LookupUtils

(Most likely, this class should be removed and the functions moved into the abstract lookup helper class.  There is already duplication between those classes.)  Some is only used from the LookupForm - and so could be moved into the Model class under SpringMVC

L116

(tick)

org.kuali.rice.krad.service.impl.LookupServiceImpl

 

L117

(tick)

org.kuali.rice.kns.lookup.LookupResultsService

Can be removed.  This interface is no longer implemented anywhere.

L118

(tick)

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

 

L119

(tick)

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

 

L120

(tick)

org.kuali.rice.kns.web.ui.Column

 

L121

(tick)

org.kuali.rice.kns.web.ui.Row

 

L122

(tick)

org.kuali.rice.kns.web.ui.Field

 

L123

(tick)

org.kuali.rice.krad.lookup.CollectionIncomplete

 

L140(tick)org.kuali.rice.kns.lookup.Lookupable 
L141(tick)

org.kuali.rice.kns.lookup.LookupableHelperService

 
L142(tick)

org.kuali.rice.kns.lookup.MultipleValueLookupMetadata

 
L143(tick)org.kuali.rice.kns.lookup.LookupResultsSupportStrategyServiceA different conceptual approach to multi-value lookups, make this interface and the implementations of it obsolete.
L144(tick)org.kuali.rice.kns.lookup.DataDictionaryLookupResultsSupportStrategy 
L145(tick)org....PersistableBusinessObjectLookupResultsSupportStrategy 
 

 

KFS Classes

 

L124

(tick)

org.kuali.kfs.gl.web.struts.BalanceInquiryLookupAction

 

L125

(tick)

org.kuali.kfs.gl.web.struts.BalanceInquiryLookupForm

 

L126

(tick)

org.kuali.kfs.sys.service.impl.SegmentedLookupResultsServiceImpl

(Used to handle large multiple value lookups - saves Base64 encoded version of entire result set to KRNS_LOOKUP_RSLT_T.) (warning) LookupResultsService is only used by multiple value lookup in Rice. In any other situation, this class will not be used. We probably want to fold this into the Lookupable if that makes sense.

L127

(tick)

org.kuali.rice.kns.lookup.LookupResultsService

This service is the one responsible for persisting and retrieving search results performed on a separate request.

L128

(tick)

org.kuali.rice.kns.maintenance.KualiMaintainableImpl

Contains a addMultipleValueLookupResults method which is used to push the values into the BO on the document and can be customized.

Types of KFS Code-Based Customizations

Note: These are here as information for things KFS has customized for KFS-specific requirements. These are not in scope for Rice.

Location

Customization

LookupableHelperService

Excluding a specific value to make sure it was never returned in the result list.

LookupableHelperService

Customization of the search criteria before handing off to the baseline getSearchResults() method.

LookupableHelperService

Altering the label on the Edit link in the actions column.

LookupableHelperService

Filtering results which could not be filtered by the LookupService.

LookupableHelperService

Adding messages/errors to the top of the criteria section.  (via KNSGlobalVariables.getMessageList())

LookupableHelperService

Override of the inquiry link on result fields.

LookupableHelperService

Doing just about anything imaginable to the "Actions" column contents.  (It would be good to have a more declarative way to create these links.)

LookupableHelperService

Merging two lookups into a single list.

LookupableHelperService

Custom validation of search parameters.

LookupableHelperService

Control the check the newOrCopy action.

Action (not lookup action)

performLookup() - override the path for the action forward to customize and send to a different Controller based on the BO Class.

LookupAction

Provide infrastructure for complete rewrite of query logic and display.  (KFS Balance Inquiries - really Lookups)  This is the "segmented" feature.

LookupForm

Addition of attributes which need to be persisted in the session for special lookups.  This works with the item below.  If we can have the Lookupable class stored in the session instead, then we can remove all customization of KualiLookupAction and LookupForm.

LookupForm

Manipulation of the field values which will be passed to the lookup based on the HTTP request parameters.  (Generally, it looks like this should *not* have been done, as they duplicated a large chunk of the code from the base class' populate() method.  Most likely, all the logic in the forms can be moved into the lookupable.

Nice-to-have Features

Note: Nice to Have Features are currently out of scope for 2.4.

ID

Nice-to-have Feature

L129

Ability to specify separate control definitions for different purposes of fields. Presently, we have a problem in cases that we want to use a select control definition in most cases. But, we can't use that on the document (since we are setting up the values there.) And, we may want to not use it on lookups, as that prevents us from using the special lookup syntax.

L130

Validation during DD parsing that the field definitions given have associated attribute metadata. In KNS 2.1.2, you can reference attributes on the BO which do not have AttributeDefinition data, causing the field to have no label and defaulting to a 10-wide text control. Either we should make this more intelligent or throw an error during startup.

L131

If the user will not have the necessary permission to perform a lookup from a document or other lookup, then we should not display the quickfinder.

L132

DON'T make the display of the maintenance links dependent on the back location containing portal.do.  This makes it harder to get standard behavior when linking from outside of the main application.

L133

Open up LOOKUP_READONLY fields to data entry. (Parent document type on document type lookup.) You should not have to search for a value to use on a lookup if you already know the value.

L134

In the redesign, there is probably no reason that we can not fold multi-value lookup into the main lookup form. It duplicates a lot of the base features anyway. If we design with this in mind (rather than tacking it on afterwards as was done originally.)

L135

(KC) Ability to specify whether lookup criteria should be handled in a case-sensitive or insensitive manner.