IBM Navigator Mobile app for iOS focuses on driving efficiency across the organization by allowing mobile users to access their business content in their enterprise P8 systems – whenever and wherever they are. The home screen includes: Files, access to all common enterprise documents the user has permissions to see; Teamspaces, to enable collaboration by mobile users; On Device, to sync and access documents offline, and Settings, to customize how the app functions. In this article, we will look at how mobile users collaborate using IBM Navigator Mobile from business perspective.

Audience

This tutorial is intended for mobile users who use iOS devices to access files in teamspaces and colloabrate with team users.

Prerequisites

Before you begin this tutorial, you should have IBM Content Navigator V2.0.3.5 or later version installed and configured for your teamsplaces. For tutorial on creating and configuring teamspaces, see IBM Content Navigator V2.0.3 documentation in IBM Knowledge Center.

ExampleCo recently developed a product named CardProd to help banks to improve and simplify their credit card business.

Justin Cobern, a Sales Representative in ExampleCo, will meet with his customer and demonstrate the product.

To prepare for the presentation, Justin wants to view some internal documents regarding the product design and features. He asked Rachael Dorkin, the product manager, to grant the access.

Rachael opens IBM Navigator Mobile from her iPhone, and taps "Teamspaces" at the bottom of the screen.

Rachaels sees a list of teamspaces that she belongs to and are not offline. This list is paginated. She may swipe up to the end of the list to view more teamspaces.

Rachael taps "CardPro development". All folders and files in the teamspace are listed.

Rachael taps "Users" on the top of the screen. All users and groups in teamspace are displayed.

Rachael taps the "+" button to go to the Add Users screen, and types "Justin" in the search bar to find the user.

Then Rachael selects name "Justin Cobern" to add the user.

As the user being added only needs read access and does not edit any documents in the teamspace, Rachael taps "Roles" and changes the role from the default role to "Reviewer".

Rachael goes back to the previous screen and taps "Done".

Then Justin is added to the teamspace.

Justin opens IBM Navigator Mobile from his iPhone, and goes to "Teamspaces". He can now see teamspace "CardPro development".

Justin swipes right on the "CardPro development" row, and taps the Favorite button . The teamspace is then added to his favorite list, so that he can view the content conveniently.

Justin taps "Files" at the bottom of the screen.

Then he taps "Favorites". The favorite teamspaces, files and folders are displayed.

Justin browses the documents in "CardPro development" teamspace and collects the information he needs. Then he writes a presentation on his computer, and adds the file to the "Demo" folder in "CardPro Sales" teamspace from the IBM Content Navigator web site.

He goes to the "Demo" folder on this mobile, swipes right on the presentation file, and then taps the Device button to enables sync.

Justin taps "On Device" at the bottom. He can see that the document is synchronized to his mobile. He can view and edit the document from anywhere, no matter if network is connected.

Justin asks his sales teammates to review the presentation. Caleb Brombach, another Sales Representative, also belongs to the "CardPro Sales" teamspace. He goes to the teamspace from his mobile, taps on the presentation file and reviews content.

Then he taps the Comment button and posts his comment.

Justin then sees all the comments of the presentation from his mobile. He taps the Export button ,and opens the document in another app. After revising the document in the other app, he saves the file back into the IBM Navigator Mobile app.

He taps "Favorites", goes to his own folder and taps the "Add" button to save the document.

To make the new version of presentation accessible by other teammates, Justin goes to the "Demo" folder in the "CardPro Sales" teamspace and taps the More button "..." .

Then he taps "Check in File" and selects the presentation file.

He selects "IBM Navigator" app as the source,

and selects the new version of the presentation in his own folder.

Then Justin taps the "Update" button.

The folder is displayed when the process completes and the file is listed as modified.

After Justin presents the demo to the customer, Rachael goes to the "CardPro development" teamspace and removes Justin from the teamspace as he no longer needs the access.

Rachael taps "Remove from Teamspace" and then Justin is removed from the teamspace.

Conclusion

IBM Navigator Mobile makes it easy to collaborate on mobile devices. You may get the work done from anywhere in order to drive better and faster decision making. Collaboration is secure between individuals and through teamspaces.

The standard IBM Case Manager case properties widget which can be configured with Case Builder is a simple and easy to use way to display case properties to users. However, it has limited options for dynamic configuration and may exhibit longer loading times as the number of properties grows. This post includes sample code and description of a Dojo-based custom widget which is flexible and extensible to a large number of case properties.

It has been implemented for a client with over 120 case properties. It loads quickly and allows for easy modification of property editor visibility, editor type, and location on the page and on a per-work-item basis using an easy to manage spreadsheet definition file. Dynamic visibility - showing or requiring fields depending on the value of others, is also implemented.

A Guide for New Developers

For developers new to IBM Case Manager or JavaScript developing a custom widget package can be a daunting task. This case properties widget is provided as both example and reference guide, with documentation including code snippets, screenshots and extensive explanation on the operation of Case Manager custom widgets.

In the documentation the first section describes the files which are used to define the widget layout and appearance, the HTML and CSS, and the spreadsheets used to specify the properties and layout of case properties within the widget display. The second section describes important JavaScript code components which form the basis of the widget, while the third section details how Case Manager case properties are programmatically accessed, updated and validated. The fourth section covers how dynamic behaviour is added to the custom widget, and how it is used to drive a task-based workflow system. The final section describes the process of building and deploying a widget package for IBM Case Manager. Additional notes about Dojo and JavaScript are also provided for developers new to these technologies.

Included Files

This example is provided ready to use with an Eclipse project containing the code and a Case Manager solution to use it in, along with the documentation:

customPropsWidget_eclipseProject.zip: An Eclipse project created in Eclipse Enterprise Edition version 4.4.2 containing code and build scripts. This project is based upon a stripped down version of the code provided with the DeveloperWorks article “Creating custom widgets with the IBM Case Manager JavaScript API”

Example_CaseManager_Solution.zip: An IBM Case Manager solution including all roles, properties and tasks to use the example custom properties widget sample in a complex case processing workflow.

In ICN 2.0.2 and earlier releases, an upgrade-supported configuration file was provided for Daeja Viewer configuration (navigator.war/applets/filenetViewer_properties.jsp). This was provided to allow sites the ability to customize viewer startup parameters. In the past, in P8 Workplace and P8 Workplace XT, customization was done in the actual JSP that launched the viewer, and once those changes were made, the site had to maintain that code through upgrades.

The intent, in ICN, with filenetViewer_properties.jsp was to provide for customization without the need to maintain code through updates. Upgrade installations to ICN do not overwrite this file.

As it turns out, there are sites that have gone to customizing the viewer startup scripts around filenetViewer_properties.jsp anyway. Sites have gone this route in order to provide more granular, and context-specific customization to startup parameters. One of the more common cases for this is to disable annotation support for certain classes of documents, or for certain groups of users.

Enter ICN 2.0.3

In ICN 2.0.3, all of the configuration of Daeja ViewONE Pro (called FileNet Viewer in earlier releases), the new Daeja ViewONE Virtual, and the related streaming and redaction services have been moved into the ICN admin interface.

Some basic upgrade support is provided in ICN 2.0.3 that reads the filenetViewer_properties.jsp, and initializes default settings in ICN admin, based on the values found there. The first time these settings are modified and/or saved in the ICN admin database, the filenetViewer_properties.jsp file is never used again.

Moreover, the scripts that launch Daeja ViewONE Pro, and Daeja ViewONE Virtual are heavily modified from prior releases, in order to load ICN admin-stored configuration on viewer startup.

Which leads us to the purpose of this article.

With ICN 2.0.3, many sites are discovering that their scripted customizations to viewer launch in ICN 2.0.2 and earlier no longer work. Also, there is no script available that allows for customization of the startup of ViewONE Virtual.

The good news is that with ICN 2.0.3, internal requirements obviated the need to provide a generalized, extensible Daeja ViewONE Pro/Virtual startup customization capability.

So, as of ICN 2.0.3.3, a new set of services are provided, that allow context-specific customization of both Pro and Virtual launch via ICN plugin.

For sites that had been maintaining custom viewer launch scripts, this is the recommended way forward. This article describes this new ViewONE Bootstrap service, and provides a basic sample plugin that can be used as a starter for developing a variety of customizations to viewer configuration and behavior.

ViewONE Bootstrap Service

In ICN 2.0.3.3, a new set of services are introduced “per-platform”:

/p8/getViewoneBootstrap.do

/cm/getViewoneBootstrap.do

/od/getViewoneBootstrap.do

/cmis/getViewoneBootstrap.do

/box/getViewoneBootstrap.do

Whenever a Daeja Viewer is launched, a request is made to one of these services, depending on the repository where the document is stored. The document information is passed on the request, so that the service has access to all of those details.

The service sends a JSON response, containing all of the parameters required to launch the viewer for the document to be viewed.

ICN Plug-In Support

The ICN Plugin interfaces provide the ability to create request and/or response filters for any of the services used in ICN. A custom plugin can therefore provide an implementation of a request or response filter for the ViewONE Bootstrap service.

These filters receive all of the request parameters that are also used to launch the document, and operate in the context of the current authenticated user.

Therefore, it is possible for a plugin to implement a response filter that adjusts viewer launch parameters on a per-document or per-user basis.

If for certain documents you want to disable annotations, you can do it just for those documents. This can be by document class, by document property value, the user’s access level, or really anything in context. If you want to only allow certain users access to certain viewer features, you can enable or disable those features for the user or group in question.

Plugin Sample

What better way to illustrate how to customize Daeja ViewONE launch in ICN than by providing some sample code?

Another common reason that sites customize viewer launch is to configure custom image stamp annotations. With the release of ICN 2.0.3.5, image stamp annotation support is introduced with Daeja ViewONE Pro and ViewONE Virtual.

Daeja ViewONE has had image stamp annotation support for a long time. But in the context of ICN, prior to ICN 2.0.3.5, the parameters used to configure image stamps in ViewONE were restricted such that it was not possible to configure and use with ICN.

Daeja ViewONE 4.1.4 resolves this by introducing a new parameter – imageStampResourceContext, which allows us to configure the service, or resource path that is used to retrieve image stamp content. This combined with a robust macro substitution capability, also introduced in ViewONE 4.1.4, give us a great deal of flexibility in how the viewer can be set up to use image stamps.

So the sample provided here serves two purposes. It illustrates how to write a plugin response filter that can be used to customize Daeja ViewONE launch, and it illustrates a basic scheme that can be used as a starting point, to configure image stamp annotations.

Basic Approach

Note that image stamp support as I am going to describe it here will first appear in ICN 2.0.3.5. So this example, can only be used “verbatim” on that or newer releases. The overall technique of implementing a response filter on the getViewoneBootstrap service, and specifying custom viewer launch parameters via the JSON response object is, however, supported back to ICN 2.0.3.3.

This seems like a good point to start with a simple illustration:

In this basic example, the imageStampResourceContext parameter will be set as shown here. With the single macro - ${originalStampURL.query.path}. This macro has three parts. I am not going to get into the details of Daeja’s new macro syntax here, except to say that it offers a great deal of flexibility. I will provide a link to Daeja’s macro documentation in the comments – once it is available.

In this case, we are going to use a basic path-based approach to the image stamps. However the macro support is robust enough that we could also store the image stamps in a repository, or serve them via some other service.

All the macro expression does in this case is pick up the “path” parameter from the query portion of the value in annotationStamp1 (path=resources/images/RedactedStamp.png).

The result, then is that the stamp is addressed as a resource within the web application - /navigator/resources/images/RedactedStamp.png.

Plugin Configuration

It would be no problem to simply go into the ViewONE Virtual configuration in ICN admin, set these parameters. There is a new entry in the UI for imageStampResourceContext, and the annotationStampN parameters can be added in the additional parameters.

But with the plugin, we can tailor the configuration to the scheme that has been chosen to set up the image stamps. Here is a screenshot of the plugin configuration as it is implemented:

The configuration consists of two properties for each stamp that is going to be defined – Label and Path. The Label is the value that will be displayed in the viewer, to select the image stamp. And the path is a path relative to the root if IBM Content Navigator, where the image will be stored.

When the user clicks new or edit, a dialog will be displayed to add or edit a new stamp:

The configuration is stored as JSON, which can then be read at runtime by our custom response filter. Here is the code for the response filter:

// Log all of the parameters sent to the bootstrap service, and the current logged in user ID.

// This call is just here to show what is available as contextual information.

...

}

private Map<String,String> getDocUrlMap(String docUrl) {

...

}

}

And that is the whole response filter. The configuration JSON corresponding to these two image stamp annotations would look like:

[

{ “Redacted”: “resources/images/RedactedStamp.png” },

{ “Pineapple”: “resources/images/PineappleStamp.jpg” }

]

The configuration code consists of a pair of widgets that reuse and extend the CustomSettings and CustomSettingsDialog widgets provided in the ICN toolkit. The code is relatively straightforward, but if there are any questions, please feel free to ask in the comments.

There is one additional function in the filter that I abbreviated above, but would like to also point out. This is the method logParameters:

I’ve included this in the sample, to provide an easy roadmap to the parameters and basic contextual information that is available for use in this response filter. As you can see, you have all of the information about the document that is about to be viewed, access to the current user context, and some details about the type of viewer and mode of launch.

And here is a screenshot that shows the image stamps configured in ViewONE Virtual (and the “Redacted” image stamp placed in the document):

Conclusion

So here it is – a sample plugin that will hopefully prove useful for anyone looking to customize Daeja ViewONE Virtual or ViewONE Pro launch.

It illustrates a basic scheme for setting up image stamp annotations in ICN 2.0.3.5, and walks you through the API’s and customization points that are available now for your own ICN plugin.

Links

A zip containing the plugin source as discussed in this article can be downloaded here:

A new video is available about how to configure background searches in Content Platform Engine, a component of IBM FileNet Content Manager and IBM Content Foundation. You can perform long-running queries in the background, and then create reports and charts to show the results.

Overview

ICM eclipse plug-in is for quickly building up an ICM custom widget/action or custom editor project in minutes.
It allows you to create the following two types of projects by a wizard.

Custom Page Widget/Action Project

Custom Editor Project

A created custom page widget/action should work on either ICM 5.2.0 or 5.2.1.
However, a custom editor works only on 5.2.1, since custom editor for the properties view is a new feature introduced in 5.2.1.

Installation

Copy com.ibm.tsdl.icm.ui_*.jar to the dropins folder of your Eclipse (Juno, Kepler, or Luna).

Restart Eclipse

Usage

Select [File]-[New]-[Project].

In the [Select a wizard] dialog box, open the [ICM] node and select either [ICM 5.2 Custom Page Widget Project] or [ICM 5.2.1 Custom Editor Project].

Follow the wizard instructions. In either project type, you must specify the location of navigatorAPI.jar.

Description

With the wizard, you can choose whether to use a separate web project or to use only an ICN plug-in project.
You can configure custom properties, custom events, and custom actions.
Also, you can configure ICN plug-in configuration panel.

All the wizard pages have sample values as default values.
You can leave them as they are (except the location of navigatorAPI.jar), if you would like to create a hello world plug-in.

The location of navigatorAPI.jar is a required field. On Windows, it is typically located at
C:\Program Files (x86)\IBM\ECMClient\lib\navigatorAPI.jar
You cannot finish the wizard without specifying the location since it is necessary for building the project.

The ICM eclipse plug-in generates a working ICM plugin code. After you complete the wizard, without any modifications, you should be able to build the project by running build.xml with Ant, and the built ICM plug-in should work.
For example, if you configure event subscribers with the wizard, the resulting code will be a widget that simply displays subscribed values. This gives you information on how to get the subscribed values, how to display something on the widget, etc.

One of the major challenges in Software Development Lifecycle (SDLC) is the amount of defects that is found both during the test cycle and post the software release. Having a zero defect code is a myth and so the effort has always been to reduce the number of defects, be more prepared to handle the defects and faster turnaround cycles in terms of defect fixes, providing fix pack releases to customers and so on. In this article, we will look at how defect prediction using SPSS can help address some of the above areas.

Introduction:

SPSS Modeler is a predictive analytics platform that is designed to bring predictive intelligence to decisions made by individuals, groups, systems and the enterprise. It provides a range of advanced algorithms and techniques, including text analytics, entity analytics, decision management and optimization, to help you select the actions that result in better outcomes.

SPSS Modeler is used to build predictive models and conduct other analytic tasks. It has a visual interface, which allows users to leverage statistical and data mining algorithms without programming.

Why prediction?

Each defect discovered post the product release is a huge cost and impacts customer experience and requires extensive development effort. If there is data around the areas where more defects are expected, or areas where regressions are bound to be more, the teams can be better prepared in terms of planning, automation, resource management and so on.

Scope of prediction

A few of the prediction scenarios that can be further modified as per the type of application, industry and impact of defects and so on include:

From which functional area can we expect more number of defects from the next release?

From which functional area can we expect more number of regression defects from the next release?

From which functional area can we expect high severity defects in the next four months?

Which customer can raise the highest number of PMRs for the next release?

SPSS Implementation

SPSS Modeler offers a variety of modeling methods taken from machine learning, artificial intelligence and statistics. The methods available on the modeling palette enable you to derive new information from your data and to develop predictive models. Each method has certain strengths and is best suited for particular types of problems.

Data preparation:

Data preparation is one of the most critical and often, the time-consuming aspect in all data predictions. For this case study, we used defect data for a software product, for the last four years, for a set of identified components. The prediction was about incoming defects in the next six months in this Product/Component.

The sample of data that we input to the Modeler:

We developed a model using this data.

Next steps:

Upload the excel sheet to modeler,

Read the values of the sheet and assign the Input and Target for the values using the TYPE filed.

Forecast the data for the next four months using the TIME INTERVALS field.

Generate predictive report using the Time Plot Model. There are many others such as - <>,<>,<> and so on and based on the use case the appropriate model must be selected.

Graphical representation:

Tabular representation of the data:

Prediction result:

The column, “$TS-No of Defects” represents the expected number of defects expected in the next four months.This gives an early start to teams in terms of resource management, skills, estimation and helps with quick turnaround on fixes and releasing patches.

Conclusion

Modeler is an easy-to-use application that puts the power of predictive modeling in the hands of business users. Using predictive models, you can identify patterns based on what has happened in the past and use them to predict what is likely to happen in the future.

Automate decisions using business rules and add insight using predictive models.

Use prioritization, optimization, or simulation to reach the best decision based on the above.

Conduct analysis regardless of where the data is stored and regardless of whether it is structured or unstructured.

Solve a variety of business problems with an extensive range of analytics.

While an upgrade to the IBM Content Navigator was introduced in ICN 2.0.3, the configuration profile is not prepopulated with the previous profile details. End users will need to provide the correct previous profile details. The database design and schema has been changed to support the new features such as collaboration services, task manager, no repository, weblogic12.1.2 and so on and the upgrade database options should be understood clearly and then configured. This article will be helpful for existing customers as the configuration panel has been changed and any invalid value might corrupt the existing database and result in production down time.

Upgrade Design

For ICN2.0.2 and below, the configuration tool welcome panel has two options seen as below.

When users upgrade from a previous version to ICN2.0.2, they have to choose update, or reuse existing profile option; all tasks required for that profile are listed.

Users must take care to execute only the tasks required for an upgrade scenario.

This overhead of manually reentering the exact previous profile details was removed in ICN2.0.3.

Upgrade to ICN2.0.3

Before starting the upgrade process, it is recommended to take a backup of the existing profile. This can be done by copying the <Install_path>/configure/profile/profilename folder to some custom path (sayC:\profilename or /opt/profilename)

Note: Any reference to the previous profile can be done using the XML files present in this folder.

Application Server details – applicationserver.xml

LDAP details – configureldap.xml

JDBC details - configurejdbcecm.xml

1. After running the ICN2.0.3 installer on top of any previous release (2.0.1 or 2.0.1.x or 2.0.2 or 2.0.2.x), the following screen is shown after installation.

2. Clicking Next we get the below panel.

3. Launch the Configuration tool by selecting either of the below options

Selecting the Start the Configuration and Deployment Tool check box as above

Double Clicking configmgr.exe from path <Install_Path>/configure

4. As of ICN2.0.3, the configuration tool has three options: new, modify, upgrade profile as seen as below.

When you click on upgrade an existing deployment profile option, the below warning message is thrown.

Because in versions of IBM Content Navigator 2.0.2 and below, a Server.xml file was not created upon creating a profile, the upgrade is unable to populate the Appserver, Database details and so on.

Clicking Yes, opens the New Upgrade profile wizard prompting for profile name as below.

Provide the same profile name used in the previous ICN profile (2.0.2 set up).

Clicking next, prompts for the Appserver type.

A dialog box prompting for AppServer details is shown. Provide the same AppServer details as were specified in the ICN2.0.2 set up.

After entering the details as below, we can use the Test Connection button to verify the AppServer details.

Clicking next, we need to choose the same repositories as used in the ICN2.0.2 profile. For example, if we have configured IBM FileNet P8 and IBM Content Manager, we need to choose those two repositories in the Choose Repository dialog shown below.

Clicking next, the new upgrade profile is created.

After Clicking Yes, the upgrade profile is completed.

As stated in the panel above, clicking next will proceed to the next task to be executed in the wizard mode. For this set of instructions we will cover the manual configuration by clicking the advanced button and then click yes in the confirmation dialog.

Update FileNet P8 Client Connector task is an optional task. It has to be run only if there is an update to the IBM FileNet P8 Engine version. Right click the task and edit the Content Engine Server name and port and run the task.

Right click the Configure Your Database and Datasource task and click edit. Initially the properties such as Database Server will be blank as below.

Provide the database properties as used in the ICN2.0.2 profile. If you have a back up of the previous profile, you can open configureldap.xml to verify the values.

Note:

Current database configuration property must be updated with configured for IBM Content Navigator value is selected.

Run the script on your database check box should be selected

Click on Save and Run Task.

Right click the Configure the IBM Content Navigator task and choose Edit. Provide the schema name value as used in the ICN2.0.2 profile and then Save and Run task.

Right click Build the Web Application Task and choose Edit. All fields are prepopulated. Click Run Task.

Right click Deploy the Web Application Task and choose Edit. Choose the Appserver node and Server from the drop down. Save and click Run Task.

Bio: Mirnalini Karnakaran has over six years of testing experience in ECM domain and is currently responsible for IBM Content Navigator installation and configuration testing. She is responsible for the installer testing of IBM Content Navigator 2.0.2 and 2.0.3 release and all the fixpacks and LA releases in that stream. She has also tested other installers such as IBM Workplace, IBM WorkplaceXT, IBM Content Platform Engine and Rendition Engine and so on.

Abstract: Problems which cause Java processes to dump threads to a core file can be solved with the help of an IBM DeveloperWorks tool created by Jinwoo Hwang.

Introduction

Some error conditions in an IBM® Java Virtual Machine (JVM) running under IBM WebSphere® Application Server result in a crash. The output of a crash is a Java core file. The Watson Explorer Content Analytics runtime is instrumented to output all running Java threads, at the time of a system-critical error. These core files are written to the Content Analytics/logs directory and are included in the output of the command.

esservice.sh/bat

While it is true that the support team may ask for such files, it is also to do your own preliminary analysis. IBM has published a detailed technote on Java core files and their analysis.

It is a good idea for any Support engineer to read this article, perferably with an actual core file to refer. However, the current article is simply to present you with an IBM tool, IBM Thread and Monitor Dump Analyzer for Java. The home page of this tool is at:

About the technology

Jinwoo Hwang (http://JinwooHwang.com/) is a software engineer, inventor, author and previous technical leader within the IBM WebSphere Application Server Technical Support team, which is based in Research Triangle Park, N.C. He joined IBM in 1995 and worked with IBM Global Learning Services, IBM Consulting Services, support and development teams.

Since Mr. Hwang's departure from IBM, the IBM HeapAnalyzer is now maintained by the WebSphere Application Server Level 2 Support SDK team. The current developer is Thomas Ireton, any questions and concerns should be routed to Thomas at tireton@us.ibm.com

Running the Tool

Download the jar file anywhere you like. From that directory, run it as follows:

<Java Runtime Environment path>java -Xmx500m -jar jcaNNN.jar

Note: NNN is the version number.

Note: Of course, you must have a Java SDK, not simply a JRE – the JRE does not contain the functionality to run a Java jar file.

You will be presented with the splash screen:

Figure 1

Go to the File menu, Open Thread Dumps and navigate to a Java core file you want to analyze.

Figure 2

After the file has been loaded, be patient while the tool performs the analysis. After a short time, you will see:

Figure 3

It should be immediately apparent that there is a wealth of debugging details that you can use, including JRE version and the operating system. More importantly, however, is that you know the process ID of the JVM that crashed, but even more important is that the Anlayzer tells you the cause:

If we scroll down, we see that this JVM is configured with a very small heap:

Java Heap Information

-Xmx (Maximum Java heap size) : 128m

-Xms (Initial Java heap size) : 16m

It is unlikely that this heap could withstand much work. One quick fix would be to increase the Maximum Java heap size for this JVM.

Additional information can be found in the Command-Line Arguments and Environment Variable Analysis sections.

Figure 4

Figure 5

Support will be able to determine a lot from the current thread analysis -- the thread that was running when the crash occurred:

Figure 6

In Content Analytics terms, this would likely pertain to the crawling/parsing process, which reads in raw byte data and then pushes it to the parser.

The Garbage Collection history refers us back to the original cause of the core being thrown:

Figure 7

There was simply no more memory to allocate for the request.

View the same information in a User Interface

All of the above information can be viewed graphically, using either the Analysis menu:

Figure 8

Or the icon tray:

Figure 9

Often people confuse memory errors with CPU usage. If we look at the graphical CPU usage chart, it is obvious that this crash had nothing to do with the CPU, which was virtually unused.

Figure 10

We should definitely take a look at Thread Analysis since it is a major feature of the tool. Of course, this type of analysis requires a great deal of knowledge. Start by opening the Thread Status Analysis UI.

Figure 11

In this case we might assume that the JVM is getting hung – half the threads are waiting on some condition.

Figure 12

Almost all of the rest of the threads are parked.

A complete explanation of all thread states for Java 7 can be found here:

There is one last view we will look at in this article. It gives a look at the ulimits on a Unix system.

Figure 13

Figure 14

It is frequently the case when running Content Analytics on a Unix system, that the ulimit is reached or exceeded, with reference to the number of files that can be simultaneously opened. This is indicated by the NOFILE argument in Figure 12, above, with hard and soft limits.

----------

Author : Kameron A Cole

Job Title: Watson Level 2 Support Engineer

Email: kameroncole@us.ibm.com

Bio: Kameron Cole is an unstructured information solutions architect. He was a WebSphere consultant for many years, but has become an expert in IBM search technology over the past 10 years, in his role as Complex Solution Architect for the Content Analytics Platform

In my previous article, I described and provided a sample ICN plugin, and some "entry point" JavaScript as an example of how to integrate the ICN ContentViewer widget generically into any web-based application.

As luck would have it, the journey didn't end there. In the months that followed, I ended up working with customers to help them take that sample and deploy in the real world. That process of putting theory into practice presented some challenges to overcome. Rather than attempt to rewrite the article taking these extra details into account, I have decided to write a short follow-up to discuss those challenges, and how they were addressed. In taking this approach, it is my hope to keep the initial article as clear and uncluttered as possible, so that its fundamentals are not lost.

Two major hurdles presented themselves that I will discuss. The first is the issue of "cross-domain" deployment, and the second I will call multi-window coordination in JavaScript.

Cross-domain Deployment

In the situation where you have a web application deployed on "host A", and ICN deployed on "host B", the samples in my original article break down. Those samples assumed that both the calling application and ICN were on the same host, making it possible for the JavaScript running in the "caller" window to call directly into JavaScript functions in the ICN window.

For security reasons, JavaScript loaded from "host A" cannot make calls to JavaScript loaded from "host B". To address this, there is a method provided in the JavaScript/DHTML window object, named postMessage. postMessage is available in most browsers, with the only restriction that I could find being that in IE8, messages must be String type, and cannot be a JavaScript object.

In the sample attached to this article, there is an updated EmbeddedViewerPlugin sample plugin, and two sample HTML files, named XDomainViewerAPI.html and XDomainViewerWindow.html. As a starting point, both of these would be deployed within the application that will call into ICN.

XDomainViewerAPI.html is the caller, and provides the sample code to use from your application. The JavaScript functions in this HTML will open a browser window to XDomainViewerWindow.html.

XDomainViewerWindow.html contains "wrapper" JavaScript, and hosts an iframe that takes up the full width and height of the browser window. The contained iframe opens to ICN. The wrapper JavaScript uses postMessage to make calls into the contained iframe.

This sample is implemented so that the viewer opens in a separate browser window. For embedding the iframe, the code in XDomainViewerWindow.html could be copy/pasted to the application page where the iframe would appear, and the wrapper JavaScript functions could then be called directly.

Multi-Window Coordination in JavaScript

With the XDomainViewerAPI.html described in the previous section, a second browser window must be opened and managed. The time that it takes for the second window to open may vary depending on platform, and the time it takes to load the content of that second window may take varying time as well. While we can do our best to set up a "handshake" between these windows, there is always some chance that the window will take longer to open than expected, or may not open at all, or may be inadvertently closed by the user.

The caller JavaScript must be implemented to take these possibilities into account. The code from the original sample was implemented very simply, for illustration purposes, and not so much with production in mind.

The sample attached to this article has been tested and used on customer systems successfully. There are two important details to point out with it.

First, the handshake to the second window has been set up so that once it is launched, no further attempt is made to launch it a second time, either until the window opens and can be accessed, or the script times out waiting for the window to open.

Second, the code functions that open the window, and obtain the window for calling are all wrapped in try/catch structures. Any error that occurs in these areas will cause the code to reset its state and start over with opening the browser window.

Additional checks are placed to detect, where possible, when the window has been closed by the user, and logging is added to help with diagnosing issues that may arise.

With the caller code implemented this way, the worst that can happen therefore, is that the script resets itself and starts over - opening a new viewer window.

Conclusion

Other than the items covered in this article, the script contains the same function calls, and works in the same intended fashion as those in the first article.

A zip containing the plugin source and sample HTML pages as discussed in this article can be downloaded here:

In case you were not able to attend the IBM Case Manager in a Mortgage Processing Scenario product demo
event on March 12, 2015, or (like many who attended) had trouble with the video quality during the web cast;
you can now view the recorded session of this demo at your convenience.

The demo covers some of the features introduced in ICM 5.2.1, such as: external documents, external data, push in-baskets and To-Do lists, and shows the products through a desktop as well as a mobile user interface.
DataCap (9.0), IBM Enterprise Records, Cognos Real-time Monitoring and Watson Content Analytics are shown briefly in this demo as well.

We continuously try to improve our portfolio of ECM demos, and any feedback or request you may have is much appreciated. You can reach me at jolminkh@us.ibm.com.

This information is provided “as is” without warranty of any kind, express or implied, and is based on current IBM product plans
and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the
use of, or otherwise related to, this document. Nothing contained in this document is intended to, nor shall have the effect of,
creating any warranties or representations from IBM (or its suppliers or licensors), or altering the terms and conditions of the
applicable license agreement governing the use of IBM software.