On behalf of the ECM team, I'd like to
welcome you to our new technical community. This community is focused
on providing an environment where solution developers like yourself can
interact with experts and get access to technical resources as you build
out your solutions using the ECM portfolio. We also hope that over
time, it acts as a window into the larger ECM ecosystem, making it
easier to navigate the vast array of resources that are out there as you
design, build and deliver your solutions.
Enterprise software is
only as valuable as the solutions it can deliver. Software platforms,
while they continue to evolve and provide more and more functionality,
are also getting increasingly complex, pulling in more and more
components and technologies to enable more functionality for users. IBM
Case Manager is a case in point. Building a true case management
solution goes well beyond just managing active content. It requires
the incorporation of rules logic, support for collaboration and the
ability to provide a customized user experience for the various
individuals working on a case. Analytics play a critical role in
providing insight into the efficiency and effectiveness of the solution,
as well as providing valuable input to help improve their processes.
IBM Case Manager does a great job of pulling these critical technologies
together and providing tooling and a platform for building Case
Management solutions. But at the end of the day, it is a platform and
each case management solution requires some level of customization using
that platform. With each solution that is built, new assets are
that could be reused in other solutions. Some of these assets are
industry or use case specific, while others are more horizontal,
fundamental building blocks for building solutions. Our goal is that
this community will become the environment where those assets and
experiences are shared.
Beyond this, we are consistently finding
that case management solutions inevitably lead to requirements that
involve other parts of the ECM portfolio, and sometimes even other parts
of the IBM Software Group portfolio. Building a case management
solution inevitably leads to a discussion about data capture or
lifecycle management. Sophisticated solution designers are starting to
think about how they might use predictive analytics or different forms
of collaboration. Through this community, we can explore some of those
requirements. In the end, you will be able to deliver better solutions
more quickly and our products become better by incorporating what we
learn through our interactions with you, the people that deliver
So again - welcome. I encourage
you to get started by taking a quick look at our Getting Started
It will provide you with some insight into how we've structured the site
and also some tips for when you are ready to contribute or publish
content. If you have any questions or feedback, don't hesitate to
Modified by Dave Perman
Hello ECM Community members and welcome to our new virtual hang out!
In this series of Tips and Tricks entries, I will share some simple but powerful design strategies that may help make your solutions even better. I will tag them with TipAndTricks and the relevant products or components.
Make sure you let me know which ones have worked for you. Also, please share any that you dream up that may help others.
Modified by Dave Perman
Out of the box, Case Builder allows you to define one role in-basket and one personal inbox for each user in a role. In order to partition work or give users access to other relevant work, you can use Process Designer to extend your solution with additional in-baskets. These in-baskets can be configured to all the work items in a queue or they can use expressions to refine what is returned.
Make sure your solution is not open in Case Builder
Open FileNet Process Designer on your system
Select Solution->Edit from the File menu
Navigate into your DOS and locate your Solution Definition file and open it (DOS->IBM Case Manager->Solutions->YourSolution->Solution Definition)
Once the solution is open, select In-baskets from the View menu
Select the queue you want from the drop-down and create (or duplicate an existing) your new in-basket
Select Roles from the View menu
Select the role who should see your new in-basket (there should be one in-basket already assigned)
Click the pencil above the in-basket list and check off your new in-basket
Select Solution->Save and Close from the File menu
Go back to the solution page in Case Builder and click the Refresh Solutions button (top-right)
Your solution should show as modified.
Click the Deploy button to redeploy to your test environment
Click the Test
During solution development, custom widgets often leverage the new Case REST APIs to access case related information. Some of the APIs require configuration specific values that the case client already knows.
A Case Manager technote that describes other properties is available here
Note how you could use the previous ICM Settings example to programmatically assemble the REST URL instead of hard coding it as it is below.
var getUserURL = "http://ICMServer:9080/CaseManager/P8BPMREST/p8/bpm/v1/currentuser?cp=P8ConnPt1";
var xmlhttp= null;
xmlhttp= new XMLHttpRequest();
xmlhttp.open('GET' , getUserURL , false); xmlhttp.send();
var myResObj = eval('(' + xmlhttp.responseText + ')');
var myUser = myResObj.name;
The ability to easily configure personalized in-basket views for case roles is a great feature of Case Manager. It allows you to display what ever columns of case properties you like, making it easier for the end user to identify work.
In the initial release of Case Manager, some standard Case System properties do not show up as properties that can be exposed as in-basket columns. This is where the Reuse Property feature comes in. It allows you to specify case properties that may already exist in the target object store as well as giving you access to a few case system properties such as the Case ID.
To display the Case ID in an in-basket column, do the following:
- Add the CmAcmCaseIdentifier as a solution property by entering it as a Reuse Property
- Add this new property to your case type
- Add it as a column to your in-basket.
Modified by Dave Perman
In FileNet BPM solutions, it is very common to want to display some process system fields in In-basket views. Examples include:
In Case Manager Builder, when you are creating an In-basket view for a role, those process system fields are not available in the UI to select. Fortunately you are not stuck!
To display a process system field as an In-basket column:
Create your in-basket in Case Builder without the system field
Deploy your solution
Open the region in PCC
Add the system property manually to the In-basket
Modified by Dave Perman
The example below is for IBM Case Manager 5.0 (really old!), if you want to see how to do this in ICM 5.2, check out this article.
In this example we are going to add the Case List widget to our Work page. When the user clicks on a row in an In-basket, we are going to display all cases related to customer whose name is associated with the work.
- Add the Case List widget to your Work page
- Add the Case Search widget
- Add the Script Adapter widget
- Add the Event Explorer widget
- Wire the Event Explorer widget to the Case Search widget's Search Cases as CaseSearch event
- Using the Advanced Search of the Case Search widget, perform a search on the property you are going to use as your search key
- You will see the search payload appear in the Event Explorer widget
- Highlight over the payload text in the Event Explorer and copy it
theEvent = paste_your_event_payload_here;
- Edit the query text line to look like this:
"QuerySQL": "SELECT * FROM CCDM_ManageDisputeItem WHERE (CCDM_CustomerName = '" + payload + "' AND CmAcmCaseState = 2) "
How this works
The key to this is the fact that the Case List widget gets its entire search and display information from an inbound event. Typically, the Case Search widget wires that in when you enter something in and click the Search button.
Update. Turns out the payload sent from the search includes the current target object store name. This fine until you try deploying to a different target. To fix this, instead of this line:
"ObjectStore" : "Your_TOS_Name"
"ObjectStore" : ecmwdgt.getBean("spaceConfig").getTargetOS()
as described in the tip Accessing Case Manager Settings.
Well, I've spoke about this many times and discussed this with many people. To put it simply a case is a service request made by an employee, citizen, or customer which much be resolved by a knowledge worker. Now that sounds simple enough. Let's look at the three things I just mentioned and you decide what it means to you. I'm open for discussion here. I'm just one guy with an opinion who struggles with this from time to time.
This simply put is a request for some type of decision. I request to work on an international assignment in Australia. That is an employee service request. You request for a home mortgage from your bank. That is a customer service request. My wife requests for benefits from the state. That is a citizen service request.
This is the person or persons responsible for determining the outcome of the service request. This have many forms and many levels of experience.
This is not mentioned above but is anything that is needed to support determining the outcome of the service request. This may be legacy information, verbal information, unstructured content, pictures, notes, etc.
Now, that is a quick down and dirty definition. Let's see if you think this makes sense and how you can better refine this course thought.
IBM Case Manager Client and the ECM Widgets component of FIleNet P8 are built on a flexible and extendable component based architecture that leverages mashup and widget technology.
By creating our client application on this architecture, we have made it easier for our customers and partners to quickly assemble solutions using the out-of-the-box components. When the solution requires that additional information or actions be available to the end users, new components can simply be dropped on the page and wired with the existing ones.
This architecture is based on IBM's iWidget open specification. This specification defines how a web based component (an iWidget), should be structured so that it can be loaded and called at runtime by an iWidget compliant container application.
A fully functioning, basic HelloWorld iWidget requires less than 50 lines of xml and JavaScipt.
The basic structure of an iWidget include:
- an xml catalog file that allows container app to recognize and register your widget into its UI
These files are usually packaged up as a WAR file, deployed onto an app server, and registered into the container app.
The following developerWorks articles provide lots of details and examples on how to create your own iWidgets.As with any new design pattern, it takes a bit of learning to get comfortable with iWidgets, but once you create your first one and understand how the required bits work, the rest are simply limited by your imagination.