IBM Support

How to preload the ICM Case List with a search of my choosing?

Technical Blog Post


Abstract

How to preload the ICM Case List with a search of my choosing?

Body

 

With the out of the box IBM Case Manager Cases page, the Case List is displayed initially empty, waiting for the user to perform a search. Wouldn't it be nice to pre-fill the case list with items of interest to the user? Here are a few examples how to do that in ICM 5.2.0.1 (These examples require Fix Pack 1)

  • Add a Script Adapter to the hidden widgets area
  • Wire the Page Container's Open Page event to the Script Adapter's incoming Receive Event Payload event
  • You can also add a toolbar event action button and wire it to the Script Adapter as well to act as a Reset
var solution = this.solution;
var params = {};
var self = this;

params.ObjectStore = solution.getTargetOS().id;
var criterion = new ecm.model.SearchCriterion({"id": "CmAcmCaseIdentifier", "selectedOperator": "STARTSWITH", "dataType": "xs:string",
  "defaultValue" : "%", "value": "%", "values": ["%"]});
params.criterions = [criterion];
params.CaseType = solution.getPrefix()+"_Incident"; /* How can this be all case types in the solution? Answer: Use empty string*/
params.solution = solution;
var searchPayload = new icm.util.SearchPayload();
searchPayload.setModel(params);

searchPayload.getSearchPayload(dojo.hitch(self, function(payload) {
    self.onBroadcastEvent("icm.SearchCases", payload);
}));
  • Setting multiple criteria
params.ObjectStore = solution.getTargetOS().id;
 var criterion1 = new ecm.model.SearchCriterion({"id": "CmAcmCaseIdentifier", "selectedOperator": "STARTSWITH", "dataType": "xs:string",
         "defaultValue" : "%", "value": "%", "values": ["%"]});
 var criterion2 = new ecm.model.SearchCriterion({"id": creationDateAttr, "selectedOperator": "GREATEROREQUAL", "dataType": "xs:date",
         "defaultValue" : stamp.toISOString(creationDate), "value": stamp.toISOString(creationDate), "values": [stamp.toISOString(creationDate)]});
 params.criterions = [criterion1, criterion2];
  • Searching for a specific property value and removing it from the result list columns
var solution = this.solution;
var params = {};
var self = this;

/* The specific case type (you will get the Summary view properties in the columns ) */
var caseType = solution.getPrefix() +"_NewAccount";
var priority = solution.getPrefix() +"_Priority";
/* For all case types, use "" (but you will get the default columns) */

params.ObjectStore = solution.getTargetOS().id;
var criterion = new ecm.model.SearchCriterion({"id": "cmAcmCaseState", "name":"CaseState", "selectedOperator": "EQUAL", "dataType": "xs:integer","defaultValue" : 2, "value": 2});
params.criterions = [criterion];
params.CaseType = caseType;
params.solution = solution;
var searchPayload = new icm.util.SearchPayload();
searchPayload.setModel(params);

searchPayload.getSearchPayload(dojo.hitch(self, function(payload) {
            
   /*Remove standard Case State property from display*/
   var property;
   var newdvprops = [];
   for (var i=0; i<payload .detailsViewProperties.length; i++) {
      property = payload .detailsViewProperties[i];
      if(property.symbolicName !== "cmAcmCaseState" ){
         newdvprops.push(property);
      };
   };
   payload.detailsViewProperties = newdvprops;
         /* add sort by priority */

         payload.searchTemplate.resultsDisplay.sortAsc = true;
         payload.searchTemplate.resultsDisplay.sortBy = priority;
   self.onBroadcastEvent("icm.SearchCases", payload );
}));
  • The relationship between criterions(AND or OR) can be setted by param.andSearch=true|false

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSCTJ4","label":"IBM Case Manager"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

UID

ibm11281244