IBM Support

Working the Case, Not a Queue

Technical Blog Post


Abstract

Working the Case, Not a Queue

Body

I was recently reminded of a blog entry I had done a really long time ago that described a new feature we had added to the Inbasket widget that allowed you to programmatically wire in filter values so the user's list immediately contained the work items that were really important to them.

 

At that time, the inbound event to do this required that the filter properties be preconfigured on the in-basket.

We later added a new inbound filtering event that allows you to set a filter that is always respected, even after further filtering by the user, using any properties that are available on the queue.

The use case I was after was to be able to add the in-basket widget to a Case Details page and have it display only the work items for that specific case. The new freeform page layouts we added in 5.3.1 are great for making this a really viable capability since we can place the in-basket behind a tab so that it has the space it wants.

The key to this is that the F_CaseFolder guid is automatically added to each queue that Case Builder creates and since this version of the event does not require that the property be actually exposed as a user filter, we are good to go!

 

image

 

To try this out for yourself:

  • add the in-basket to your Case Details page. By default, the in-basket will display all work for the current user's role
  • set the configuration option in the in-basket to Do not populate the in-basket until the dynamic event is received. This is important to ensure things happen in the right order. 
  • add a script adapter widget to the hidden area of the same page
  • wire the script adapter between the Page Container's Send Case Information outbound event and the In-basket's Apply Filter event inbound event
  • enter the following script into your hidden script adapter:
  var caseFilterValue = payload.caseEditable.id;  var dataType = "xs:guid";  var solutionPrefix = ecm.model.desktop.currentSolution.prefix;  var inbasketName = ecm.model.desktop.currentRole.name;  var queueName = solutionPrefix + "_" + inbasketName.replace(/\s+/g, '');    var json = {"queueName":queueName,  "inbasketName":inbasketName,  "hideFilterUI":"false",  "queryFilter":"(F_CaseFolder = :A)",  "queryFields": [{"name": "F_CaseFolder", "value": caseFilterValue , "type": dataType}],  "hideLockedByOther":"false"};    var dynamicFilter = icm.model.InbasketDynamicFilter.fromJSON(json);  var dynamicFilters = [];  dynamicFilters.push(dynamicFilter);  var applyFilters = {"dynamicFilters": dynamicFilters};  return applyFilters; 

When applied to a freeform Case Details page, your result could be something like this:

image

 

Now, a case worker knows exactly what work needs to be done for this case and can open and complete the items directly from here.

Thanks to Bob Jackson for reminding me how this worked!

 

[{"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

ibm11280764