Technical Blog Post
Abstract
Displaying Related Cases in ICM 5.2
Body
A really long time ago, I described how you could use the Case List widget to display a list of "Related Cases"; cases that are somehow related to the case you are currently looking at.
This has been a pretty popular solution customization so I thought it was about time I updated it for ICM 5.2.x.
The use case here is that you want to display a list of related cases on a work details page that is used to process a task step for a particular case. You can easily modify the first bit if your Case List happens to be on another page (eg. payload.caseEditable.
- Add a case list widget to your Work Details page
- Use the wiring settings to disable the Select Case broadcast event. This ensures the case list does not interfere with other page widgets like the Case Infomation
- Add a Script Adapter widget to the hidden page area
- Enter the following script in the Script Adapter
- Wire the inbound event of the Script adapter from the Page Container's "send Work Item" event
- We use a broadcast event in our script so no need to wire the outbound event
var solution = this.solution; var params = {}; var self = this; /* This is good practice. Makes reusing scripts much easier */ var prefix = solution.prefix; params.ObjectStore = solution.getTargetOS().id; var custID = payload.workItemEditable.propertiesCollection[prefix+"_CustomerID"].value; console.log ("Customer ID: ",custID); var caseObj = payload.workItemEditable.icmWorkItem.caseObject; /* The following call ensures that the case data is loaded before we go try and get the case ID */ caseObj.retrieveCachedAttributes(function(caseObject) { var caseID = caseObject.caseIdentifier; console.log ("Case ID: ",caseID); /* Find all of these */ var criterion1 = new ecm.model.SearchCriterion({"id": prefix+"_CustomerID", "name" : "Customer ID", "selectedOperator": "STARTSWITH", "defaultOperator": "STARTSWITH", "dataType": "xs:string"}); criterion1.value = custID ; criterion1.defaultValue = custID ; criterion1.setValues( [custID]); /* But omit this one */ var criterion2 = new ecm.model.SearchCriterion({"id": "cmAcmCaseIdentifier", "name" : "Title", "anded": true, "selectedOperator": "NOTEQUAL", "defaultOperator": "NOTEQUAL", "dataType": "xs:string"}); criterion2.value = caseID; criterion2.defaultValue = caseID; criterion2.setValues( [caseID]); params.criterions = [criterion1, criterion2]; params.CaseType = ""; /* all case types */ params.solution = solution; var searchPayload = new icm.util.SearchPayload(); searchPayload.setModel(params); searchPayload.getSearchPayload(function(payload) { self.onBroadcastEvent("icm.SearchCases", payload); }); });
[{"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
ibm11280866