Developing Applications With ICN
Developing Applications With ICN
Version 2 Release 0
SC19-3716-00
IBM Content Navigator
Version 2 Release 0
SC19-3716-00
Note
Before using this information and the product it supports, read the information in “Notices” on page 79.
This edition applies to version 8, release 5 of later of IBM Content Manager OnDemand for Multiplatforms (product
number 5724-J33), version 8, release 5 or later of IBM Content Manager OnDemand for z/OS (product number
5697-N93), version 7, release 1 or later of IBM Content Manager OnDemand for i (product number 5770-RD1),
version 8, release 4 or later of IBM Content Manager Enterprise Edition (program number 5724-B19), version 8,
release 4 or later of IBM Content Manager for z/OS (program number 5697-H60), version 5 release 0 or later IBM
FileNet Content Manager (program number 5724-R81) and to all subsequent releases and modifications until
otherwise indicated in new editions.
© Copyright IBM Corporation 2012.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract
with IBM Corp.
Contents
ibm.com and related resources. . . . . v Packaging the plug-in components . . . . . . 28
How to send your comments . . . . . . . . vi
Contacting IBM . . . . . . . . . . . . . vi External data services . . . . . . . . 31
Creating an external data service for IBM Content
Developing applications with IBM Navigator . . . . . . . . . . . . . . . 34
Content Navigator . . . . . . . . . . 1 External data service REST protocol specifications 36
Object types resource . . . . . . . . . . 36
Particular object type resource . . . . . . . 39
IBM Content Navigator development Sample external data service. . . . . . . . . 49
architecture . . . . . . . . . . . . . 3 Files in the sample external data service . . . . 49
IBM Content Navigator midtier services . . . . . 5 Deploying the sample external data service . . . 50
Sample applications for IBM Content IBM Content Navigator API reference 53
Navigator . . . . . . . . . . . . . . 7 IBM Content Navigator modeling library structure 53
IBM Content Navigator visual widget catalog . . . 56
Constructing a URL for IBM Content Widgets package . . . . . . . . . . . 57
Navigator . . . . . . . . . . . . . . 9 Administration widgets package . . . . . . 67
Administration model package . . . . . . . 70
Dialog box widgets package . . . . . . . . 71
Creating plug-ins to IBM Content Layout widgets package . . . . . . . . . 74
Navigator . . . . . . . . . . . . . 13 Process widgets package . . . . . . . . . 76
Creating the plug-in components . . . . . . . 16 Teamspace builder widgets package . . . . . 76
Creating a menu action . . . . . . . . . 17 Viewer widgets package . . . . . . . . . 78
Creating a menu. . . . . . . . . . . . 18
Creating a feature . . . . . . . . . . . 20 Notices . . . . . . . . . . . . . . 79
Creating a layout . . . . . . . . . . . 21 Trademarks . . . . . . . . . . . . . . 81
Creating a request or response filter . . . . . 22
Creating a service . . . . . . . . . . . 24
Creating a viewer . . . . . . . . . . . 26
Index . . . . . . . . . . . . . . . 83
Creating a widget . . . . . . . . . . . 27
Information center
PDF publications
You can view the PDF files online using the Adobe Acrobat Reader for your
operating system. If you do not have the Acrobat Reader installed, you can
download it from the Adobe Web site at http://www.adobe.com.
Consumability survey
Tell us how you feel about the value of quality content by taking the Importance of
High Quality Technical Information survey at the following link:
http://www.ibm.com/survey/oid/wsb.dll/s/ag2c1. If you want to help IBM
make this product easier to install and use, take the Consumability Survey at the
following link: http://www.ibm.com/software/data/info/consumability-survey/.
Related information:
Contributing to the information center
Share your opinions and contribute to the documentation in the information center.
Simply sign in with your IBM ID to comment on the documentation, start
discussion threads, share examples, rate topics, watch topics or threads, and more.
Contacting IBM
To contact IBM customer service in the United States or Canada, call
1-800-IBM-SERV (1-800-426-7378).
To learn about available service options, call one of the following numbers:
v In the United States: 1-888-426-4343
v In Canada: 1-800-465-9600
For more information about how to contact IBM, see the Contact IBM website at
http://www.ibm.com/contact/us/.
vi IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Developing applications with IBM Content Navigator
IBM Content Navigator provides a powerful platform for building custom web
applications to manage content. You can use various extension points and
application programming interfaces (APIs) to extend the existing web client by
adding custom actions, menus, layouts, or services. You can also use the APIs to
build custom applications that incorporate IBM Content Navigator features without
using the standard web client.
You use the IBM Content Navigator Java API to create plug-ins to implement the
functionality that you want to add to the web client. You use the IBM Content
Navigator JavaScript API to create custom widgets to use with the plug-ins. In
addition, you can use IBM Content Navigator to access the APIs for the content
servers.
As the following diagram shows, the components of IBM Content Navigator are
separated functionally according to the MVC design:
Web client
The web client acts as a controller that provides the communication
between the view and the model. Users interact with the widgets that are
contained in the web client. The web client translates these interactions
into the actions that are performed by instances of the model classes.
Visual widget library
This library of JavaScript classes defines widgets that are used to build the
view for IBM Content Navigator.
Modeling library
This library of JavaScript classes defines the model for IBM Content
Navigator. The modeling classes provide the business logic and data. These
classes define communication with the midtier services to provide access to
the content repositories and their respective application programming
interfaces (APIs).
You can use the modeling classes to customize the communication and
data exchange between the web client and the repositories.
OnDemand CMIS
repository
Restriction: The CMIS service is provided only for technical preview in IBM
Content Navigator V2.0.
You can customize IBM Content Navigator at each level of the architecture by
using custom plug-ins. You can create plug-ins to implement custom widgets,
services, and other components. By creating custom plug-ins, you can integrate
information and content from external sources and augment or modify the
behavior of IBM Content Navigator.
IBM Content Navigator uses plug-ins to implement various features. For example,
IBM Content Analytics with Enterprise Search is integrated as a plug-in to IBM
Content Navigator. The external data service plug-in augments the behavior of
4 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
many IBM Content Navigator widgets to support the integration of data from
sources other than the content repositories. You can use this feature to add such
features as choice lists, choice list dependencies, and validation to the web client.
“IBM Content Navigator midtier services”
The IBM Content Navigator services provide the connections to the repositories.
In addition, the services support features such as search and document viewing
across the repositories.
Related tasks:
“Creating plug-ins to IBM Content Navigator” on page 13
You can create custom plug-ins to add features such as menus and services to IBM
Content Navigator.
Related reference:
“IBM Content Navigator visual widget catalog” on page 56
The JavaScript classes in the IBM Content Navigator visual widget library are
grouped by package. In some packages, the classes can be further grouped by the
type of widgets that they represent.
“IBM Content Navigator modeling library structure” on page 53
The classes in the modeling library provide the business logic and data for IBM
Content Navigator. These classes are used by the widgets to access and represent
data in the content servers and in the IBM Content Navigator configuration.
IBM Content Navigator uses the application programming interfaces (APIs) of each
repository type to establish connections to these repositories. You can create custom
plug-ins that use these APIs to perform actions on repository items.
IBM Content Navigator also includes plug-ins to support the following services:
IBM Content Analytics with Enterprise Search plug-in
Supports searching across different repositories and data sources that are
configured for use with IBM Content Navigator. You can search with
simple or advanced queries. In addition, you can use facets to organize
and classify items, which makes it easier to find documents quickly. The
plug-in provides actions that you can use to work with the search results.
For example, you can edit documents that are returned by the search or
add the documents to workflows.
External data service plug-in
Supports integration of data from an external data source into IBM Content
Navigator. You can use this external data to customize field properties and
manage property behavior in IBM Content Navigator.
6 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Sample applications for IBM Content Navigator
The IBM Content Navigator software package includes several sample applications:
a plug-in, an external data service, and a set of web pages. You can use these
sample applications to create custom applications.
The files for the sample plug-in are available in the ECMClient_installdir\
samples\samplePages directory. The SamplePlugin.jar file that you can deploy by
using the IBM Content Navigator administration tool is available in the
ECMClient_installdir\navigator directory.
The sample external data service implements a service that is used to obtain values
for a choice list from an external data source.
This sample web application provides HTML pages that use IBM Content
Navigator modeling classes and widget classes. The pages demonstrate different
aspects of the IBM Content Navigator toolkit.
You can open IBM Content Navigator on a particular desktop, folder, or document
with a URL. For example, you can embed a URL in your custom application to
open IBM Content Navigator to a particular document.
You can get URLs for documents or folders when you select the item and click
Actions > View link.
A sample scenario where you can use the URL-based interface is to embed a link
in the portal of a custom application to a particular document or folder in a
particular repository. Review participants can review the contents of the folder or
document. For instance, you can embed a link on your company-wide intranet to a
folder in the repository that contains safety and emergency protocol documents.
For a more advanced example, you can create a web application that adds
documents to a repository, records the docid value, and generates the docid value
as a confirmation number. The docid value can then be used in the URL syntax to
create a valid link to the document.
Procedure
Format: desktop=desktop_ID
Example: http://myserver.mycompany.com:9080/navigator/
?desktop=AccountsPayable
Viewing documents
Valid parameters and values include:
Table 2. Valid parameters and values for viewing documents
Parameters Valid values
desktop Specifies which desktop to log in to. Specify
the ID that is displayed for the desktop in
the ID column on the Desktops tab in the
administration tool.
Format: desktop=desktop_ID
repositoryId Specifies the server to log in to. Specify the
ID that is displayed for the server in the ID
column on the Repositories tab in the
administration tool.
Format: repositoryId=repository_ID
docid The system-generated identification number
for the document. Uses the template_name
value as the prefix to this folder ID.
Format: docid=document_ID
template_name Document, Folder, or the name of the custom
document class or item type.
Format: template_name=template_name
version current, released, or a specific version
number.
Format: version=version_number
vsld The IBM FileNet P8 version series object,
which is the Globally Unique Identifier
(GUID), that is associated with the
document.
Format: vsld=GUID_number
10 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Example: http://myserver.mycompany.com:9080/navigator/
bookmark.jsp?desktop=AccountsPayable&repositoryId=AP_P8_System
&docid=30dd879c-ee2f-11db-8314-0800200c9a66
&template_name=APtemplate&version=released
Viewing folders
Table 3. Valid parameters and values for viewing folders
Parameters Valid values
desktop Specifies which desktop to log in to. Specify
the ID that is displayed for the desktop in
the ID column on the Desktops tab in the
administration tool.
Format: desktop=desktop_ID
repositoryId Specifies the server to log in to. Specify the
ID that is displayed for the server in the ID
column on the Repositories tab in the
administration tool.
Format: repositoryId=repository_ID
docid The system-generated identification number
for the document. Uses the template_name
value as the prefix to this folder ID.
Format: docid=document_ID
template_name Document, Folder, or the name of the custom
document class or item type.
Format: template_name=template_name
Example: http://myserver.mycompany.com:9080/navigator/
bookmark.jsp?desktop=AccountsPayable&repositoryId=CM_System
&docid=30dd879c-ee2f-11db-8314-0800200c9a66
&template_name=CHEMtemplate
You should also be familiar with the Dojo Toolkit, which is the toolkit that IBM
Content Navigator uses.
The plug-in that you create to use with IBM Content Navigator must provide:
v The web browser logic that enables users to call the plug-in
v The midtier server logic that enables the plug-in to load the plug-in components.
The plug-in consists of the following components that are contained in a single
JAR file:
The web browser logic
The web browser logic is a required component of the plug-in that enables
users to call the plug-in from the web client.
The web-browser logic component of your plug-in communicates with the
IBM Content Navigator client. The web client is built by using the IBM
Content Navigator visual widgets, which are based on the Dojo Toolkit.
You should use the IBM Content NavigatorC visual widgets and the Dojo
Toolkit to build your plug-in.
The web browser logic is implemented in JavaScript.
The midtier server logic
The midtier server logic is a required component of the plug-in. This logic
calls the APIs for the content servers to retrieve the data that is used by the
plug-in or that is displayed to users.
The midtier logic component of your plug-in communicates with the IBM
Content Navigator services component on the web application server.
The midtier server logic is implemented in Java.
Procedure
4. In your Plugin class file, implement the appropriate get methods to identify
the custom components that are included in this plug-in:
14 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
6. Deploy the JAR file into your web application server.
Important: The plug-in JAR file must be available on a URL addressable web
application server or the plug-in will not work in the web client.
7. Use the IBM Content Navigator administration desktop to add the new plug-in.
The following files in the sample plug-in define the plug-in and the configuration:
Table 4. Sample files that define the plug-in and the configuration
File Description
SamplePlugin.java This file extends the Plugin class to list the
custom components that are provided by the
sample plug-in.
SamplePlugin.js This file extends the Plugin class to list the
custom components that are provided by the
sample plug-in.
ConfigurationPane.js This file defines the configuration pane that
is used for the sample plug-in.
ConfigurationPane.html This file provides the HTML form template
that is used for the sample plug-in
configuration pane.
16 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
content server. For example, you can create a service that provides a viewer for
specific document types on a IBM FileNet P8 server.
“Creating a viewer” on page 26
You can create a plug-in to provide a content viewer. Users can then map the
custom viewer to document types by using the IBM Content Navigator
administration tool.
“Creating a widget” on page 27
You can create a widget to provide the user interface for your plug-in. For
example, you might create a widget that enables users to run a custom action.
You also might create a widget to enable administrators to configure the
plug-in.
Procedure
To create an action:
1. Implement a JavaScript function to define the behavior of the action. For
information about actions in IBM Content Navigator, see the
ecm.model.Action.js class.
2. If you want to specify when the action is enabled or disabled, extend the
ecm.model.Action.js class.
3. Extend the PluginAction.java class to define the plug-in for the action:
a. Implement the getActionFunction method to return name of the JavaScript
function that you created in step 1.
b. If this action overrides the standard code for enabling actions, implement
the getActionModelClass method to return name of the JavaScript class that
you created in step 2.
4. Add the action as a component in your Plugin.java subclass. To add the
action, implement the getFeatures method to return an instance of the
PluginAction.java class that you created in step 3.
The following files in the sample plug-in define a custom menu action:
Table 5. Sample files that define a plug-in menu action
File Description
SamplePluginAction.java This file extends the PluginAction.java class
to define a sample action.
What to do next
After you add the plug-in in the web client, use the IBM Content Navigator
administration tool to add the action to a toolbar or context menu.
Related information:
Class ecm.model.Action
Represents a user-executable action. This action can be configured for a desktop in
the IBM Content Navigator administration tool.
Class PluginAction
Provides an abstract class that is extended to define a client-side action that is
provided by a plug-in. The actions that are defined by subclasses of this class
appear on the IBM Content Navigator toolbar and on the context menus within the
content list.
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
Creating a menu
You can create a plug-in to provide a custom toolbar or context menu to use in
IBM Content Navigator.
To create a menu, you must first create the menu type. The menu type indicates
where and how the menu will appear in the user interface. For example, you
might define a menu type to create a context menu for a custom widget. You can
use the menu type for multiple menus.
18 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Procedure
The following files in the sample plug-in define a context menu and two toolbar
menus:
Table 6. Sample files that define a plug-in menu
File Description
SamplePluginContextMenuMenuType.java This file extends the PluginMenuType.java
class to create a menu type for a context
menu.
SamplePluginContextMenuMenu.java This file extends the PluginMenu.java class to
defines a context menu that includes the
following actions:
v A sample action, which is defined in the
SamplePluginAction.java file
v Properties
v Help
v About
v Preview
v Open
What to do next
After you add the plug-in in the web client, use the IBM Content Navigator
administration tool to add the menu to a desktop.
Related information:
Class PluginMenuType
Provides an abstract class that is extended to define a custom menu type provided
by a plug-in.
Class PluginMenu
Provides an abstract class that is extended to define a menu in a plug-in.
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
Creating a feature
You can create a plug-in to add a major feature to IBM Content Navigator. For
example, you might create a feature to show statistical data on content usage or a
summary of recent document activity. You might also create a feature or to select
documents for archival. This feature can be displayed with the features that are
provided by IBM Content Navigator such as favorites, browse, search, and
administration.
Procedure
To define a feature:
1. Create an icon to represent the feature in the web client. The icon must be 64
pixels wide by 64 pixels high. For best results, create the icon as a transparent
PNG file.
20 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
2. Create a widget to provide the primary pane that defines the user interface for
the feature. This widget provides users with access to the behavior of the
feature.
3. Extend the PluginFeature class to describe the feature:
a. Implement the getIconUrl method to return the icon that you created in
step 1 on page 20.
b. Implement the getContentClass method to return an instance of the widget
that you created in step 2.
4. Add the service as a component in your Plugin.java subclass. Implement the
getFeatures method to return an instance of the PluginFeature class that you
created in step 3.
What to do next
After you add the plug-in in the web client, use the IBM Content Navigator
administration tool to add the feature to a desktop. You add the feature on the
Appearance tab for the desktop.
Related information:
Class PluginFeature
Provides an abstract class that is extended to define a feature provided by the
plug-in. Features are major functional areas that typically appear as icons along the
left side of the user interface. Features are configurable for each desktop. Examples
of features include Browse and Favorites.
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
Creating a layout
You can create a plug-in to provide a custom layout to use in IBM Content
Navigator. The layout defines the arrangement of the widgets that are used in a
desktop.
Procedure
To create a layout:
1. Extend the ecm.widget.layout.MainLayout.js class to create the primary
widget for the layout:
a. Implement the getAvailableFeatures method to return the features that to
be available in the layout. Each feature is declared as an instance of the
ecm.model.Feature class.
What to do next
After you add the plug-in in the web client, use the IBM Content Navigator
administration tool to associate the layout with a desktop.
Related information:
Class ecm.widget.layout.MainLayout
Provides the main layout for IBM Content Navigator or for similar desktop
layouts. This class displays the launch bar that contains the features on the left side
of the layout.
Class PluginLayout
Provides an abstract class that is extended to define a layout that is provided by a
plug-in. The layout is the main widget for the desktop and defines the overall
arrangement of widgets in the desktop. The particular layout that is used for a
desktop is selected in the IBM Content Navigator administration tool.
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
The external data service plug-in uses request and response filters to enable a
service to provide custom choice lists and validation.
22 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
To use a filter, a plug-in must handle the JSONArtifact object that is sent in the
request or the JSONObject object that is returned in the response.
Important: The JSON format that is used for request and response filters is subject
to change without notice. If you create request and response filters for plug-ins,
you might need to make updates to your code if a new version of the IBM Content
Navigator Java application programming interface is released.
Procedure
Tip: Examine the JSON object that is sent to the service to determine the
requirements for the filter method.
2. If you are creating a response filter, extend the PluginResponseFilter class:
a. Implement the getFilteredServices method to return the names of the
services for which this filter is used.
b. Implement the filter method to define the filter that is to be applied to the
request.
Tip: Examine the JSON object that is returned by the service to determine
the requirements for the filter method.
3. Add the filter as a component in your Plugin.java subclass:
Creating a service
You can create a plug-in to define a service that performs operations on a content
server. For example, you can create a service that provides a viewer for specific
document types on a IBM FileNet P8 server.
You use the application programming interfaces (APIs) that are native to the
content server to define the operations that are performed by the service.
Tip: Follow best practices for servlets when you implement an IBM Content
Navigator plug-in service:
v Because the application server is multithreaded, the plug-in service needs to
handle multiple threads safely.
v The service will be called on multiple threads for multiple users; therefore, do
not use instance variables. Using instance variables can have side effects such as
unintentional sharing of information among users.
Procedure
To create a service:
1. Extend the PluginService class to create the service:
a. Implement the execute method to provide the service with access to the
APIs for the content server.
b. If this service replaces one of the IBM Content Navigator services,
implement the getOverriddenService method to identify that service.
c. If the service requires configuration, use the
PluginServiceCallbacks.loadConfiguration method to obtain the values
that were configured for the service.
2. If the service provides a custom viewer, extend the PluginViewerDef class to
define the URL template to launch the viewer.
3. Add the service as a component in your Plugin.java subclass:
a. Implement the getServices method to return an instance of the
PluginService.java class that you created in step 1.
b. If the service provides a custom viewer, implement the getViewers method
to return an instance of the PluginViewerDef class that you created in step 2.
24 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Sample plug-in files for a custom service
What to do next
Call the service as needed from your custom actions, viewers, or features. You then
use the IBM Content Navigator to associate these components with a desktop,
which makes the service available to users.
Creating a viewer
You can create a plug-in to provide a content viewer. Users can then map the
custom viewer to document types by using the IBM Content Navigator
administration tool.
Procedure
To create a viewer:
1. Extend the PluginService class to create a service that provides the viewer.
2. Extend the PluginViewerDef class to provide a URL template that will open the
viewer.
26 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Related information:
Class PluginService
Provides an abstract class that is extended to create a class implementing each
service provided by the plug-in. Services are actions, similar to servlets or Struts
actions, that perform operations on the IBM Content Navigator server. A service
can access content server application programming interfaces (APIs) and J2EE
APIs.
Class PluginViewerDef
Provides an abstract class that is extended to define a viewer provided by the
plug-in. The viewer can be used in viewer mappings to identify the types of
documents for which the viewer should be invoked. Viewers are launched within
their own iframes or web browser windows, based on a URL that is built by IBM
Content Navigator by using a template that is defined in this class.
Creating a widget
You can create a widget to provide the user interface for your plug-in. For
example, you might create a widget that enables users to run a custom action. You
also might create a widget to enable administrators to configure the plug-in.
If no IBM Content Navigator widget meets your requirements, you can create a
custom widget. The classes in the IBM Content Navigator JavaScript modeling
library that make it easier to build new widgets from the basic Dojo dijit widgets.
This library includes models of Dojo data stores that provide common methods for
representing data. These data store model classes enable multiple widgets to easily
use and present data. The library also includes models of Dojo trees that you can
use to obtain data for navigation trees in custom widgets.
Procedure
What to do next
Use the widget to provide a user interface for the custom actions or features that
are defined by your plug-in.
Related information:
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
Writing Your Own Widget
See this web page for detailed information about creating and modifying widgets
by using the Dojo Toolkit.
Procedure
28 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
...
WebContent
// Include all the image, JavaScript, and HTML files
// that are required by the plug-in
WEB-INF
manifest.mf
In the packageName folder, include the Java class files that are defined for the
plug-in. Create the subfolders based on the package names of the Java classes.
Follow the standard JAR file structure by using nested folders for nested
packages.
Important: All the Java classes must be included in a named package. You
cannot use the default package.
2. Modify the manifest.mf file for your plug-in to include the following property:
Plugin-Class: pluginClassName
pluginClassName is the name of your Plugin.java subclass.
You can also include any of the standard properties for a JAR file in the
manifest.mf file.
Related information:
Class Plugin
Provides the main class of an IBM Content Navigator plug-in. The abstract
methods provide the name and version of the plug-in, as well as actions, services,
and scripts provided by the plug-in.
When you create an external data service, your existing data is integrated with
IBM Content Navigator field values and other field properties, but you continue to
store and maintain the data only in the original, authoritative data source. You
access the data without moving or copying that data to a separate repository, so
the source remains in the original data store. The external data source must remain
available to IBM Content Navigator, so that the external data can be accessed
whenever the business user invokes the service through the web client.
An advantage to using an external data service is that you do not need to modify
the IBM Content Navigator source code to customize the user interface properties
and values. Therefore, upgrades and other major changes to IBM Content
Navigator do not affect the property data that is obtained by an external data
service, because the data and external data service are located separately from IBM
Content Navigator source code.
You can use an external data service to customize the following field properties
and property behaviors when users add documents, add folders, check-in
documents, use entry templates, process workflow step properties and workflow
filter criteria fields (IBM FileNet P8), and create or use searches:
Look up values in a database to create choice lists
Create choice lists by using existing data that is managed in a different
content repository or data source than the one that is connected to IBM
Content Navigator.
For example, you can use values in a JSON file that is located and
managed in an external server or repository.
Prefill properties
Specify prefilled properties and default values.
For example, you can prefill fields with custom default values that are
based on a particular class ID, authenticated user, or the parent folder.
Specify property dependencies
Define dependencies between properties.
For example, you might specify a dependency between a geographic
region choice list property and an office branch choice list property so that
when a user chooses a geographic region, the subsequent choice list that is
dependent on the selected geographic region contains only the office
branches that pertain to that geographic region.
When an external data service is implemented for a certain action or property, the
service is invoked when a business user interacts with that item in the web client.
The following diagram shows how an external data service submits and returns
requests.
32 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
IBM Content Navigator client IBM Content Navigator server
6
7 Property in the user interface
is updated with data from the Merge data from
external source. the reponse payload
with underlying
repository
information
Response payload
(POST method)
Request payload
(POST method)
UpdateObject Types
For each class, get current values
and return that information in the
response payload.
The external data service works by using two services, which the application
developer needs to create:
v A GetObjectTypes service to get the list of all classes, item types, or workflow
information that the external data service needs to handle.
v An UpdateObjectType service for each class to get the current attributes or values
and return that information in the response payload.
The external data service is invoked when a user opens a certain dialog box or
tries to set a value on a property in the user interface. The middle tier services
sends a request payload to the external data service, which interrogates the
external data source for the requested information about the classes and attributes.
The information from the response payload is then merged with the underlying
information in the repository that you are using, for example, IBM Content
Manager or FileNet P8.
The precedence order in which data appears in the user interface is that IBM
Content Navigator first uses the class attributes, then checks for values that are
specified in the active selected entry template, and finally, IBM Content Navigator
checks for values specified by the external data service.
“Creating an external data service for IBM Content Navigator” on page 34
Use the EDS REST protocol to create an external data service that specifies
Understand which properties and areas in IBM Content Navigator you can
customize through an external data service.
Review the specifications for defining an object types request and a particular
object type request.
As you design your service, consider the following tips to improve the usability of
your choice lists and other field properties:
Reduce the size of choice lists by adding properties that can narrow subsequent
lists For example, you can use questions to narrow the scope of the list, or use
dependencies between properties to break long choice lists into shorter
choice lists.
Create dependent choice lists
Dependent choice list values are replaced with a different list depending
on the value that is selected in the preceding parent list. For example, you
can set up Region and Branch Office choice lists, where the Branch Office
list depends on the Region list selection. If the user selects a different
region, the Branch Office list is cleared and populated by a different list of
branch offices.
Implement custom validation so that users can immediately resolve any errors in
data entry.
For example, if you implement text fields that have character restrictions,
instead of using a custom validation error message to display only a
34 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
description of the error, you can also provide users with a list of the
unsupported characters so that users can avoid typing those characters in
the future.
Procedure
This service is invoked with the GET request, which provides the repository
ID. The response in this example is an array of name values in a JSON file.
This list must contain all the classes that are to be supported by the external
data service.
2. Create a service that gets current attributes and values for each class that is
included in the service that you created in the previous step. This service gets
current attributes and values for a class and then returns information about
those properties to the middle tier services. The data that is posted is JSON,
and the response is also JSON.
For example, you might create an UpdateObjectType servlet that handles a
POST method with a URL of the form /type/object_type_name:
v Request:
POST /type/class_name_or_item_type_name
{
"repositoryId":"target_repository",
"objectId" : "if_an_existing_instance,_the_GUID_or_PID",
"requestMode" : "indicates_context_that_info_is_being_requested",
"externalDataIdentifier" : "opaque_identifier_meaningful_to_service",
"properties":
[
{
"symbolicName" : "symbolic_name",
"value" : "the_current_value",
}
// More properties ...
]
}
v Response:
{
"externalDataIdentifier": "opaque_identifier_meaningful_to_the_service",
"properties":
[
{
"symbolicName": "symbolic_name",
"choiceList":
{
"displayName": "display_name",
What to do next
After you write the external data service, you must deploy and start your service
in the web application server, and register the EDSSupportPlugin plug-in in the
IBM Content Navigator administration tool.
Related concepts:
“IBM Content Navigator midtier services” on page 5
The IBM Content Navigator services provide the connections to the repositories. In
addition, the services support features such as search and document viewing
across the repositories.
Related tasks:
Registering and configuring plug-ins
Related reference:
“Example: GET method request and response” on page 39
This sample code submits a GET request to an external data service. The service
then returns the supported object types, which includes the classes, workflow
information, or item types for whose properties are to be updated with the values
that are obtained from the external data source.
“Example: POST method request and response” on page 48
This sample code submits a request to an external data service when an IBM
Content Navigator user selects a value for the region property, Region. The service
then updates the choice list for the branch office property, BranchOffice, which
depends on the Region property.
36 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
“GET method”
The GET request gets the list of object types for the external data service.
“External data service integration into FileNet P8 workflows” on page 38
The external data service (EDS) can be implemented in data fields for process
in-basket filter criteria, in step processors, and in launching workflows. You
must construct a multi-part String that finds the service and identifies the
in-basket filter, step, or workflow.
“Example: GET method request and response” on page 39
This sample code submits a GET request to an external data service. The service
then returns the supported object types, which includes the classes, workflow
information, or item types for whose properties are to be updated with the
values that are obtained from the external data source.
GET method
The GET request gets the list of object types for the external data service.
URI syntax
For the response, you create the object types resource, for example, an
ObjectTypes.json file, which contains the class names, item type names, or
workflow information for whose properties are to be updated with the values that
are obtained from the external data source.
For IBM FileNet P8 workflow information, multi-part String values are used
instead of a class or item type name.
/types?repositoryId=Repository_ID
The repository ID is the symbolic name of the data source that contains the class
names, item type names, or workflow information that is used in the service.
Request content
GET /types?repositoryId=Repository_ID
Response content
The response to the request must include a JSON payload that contains the
following parameters:
{
"types":
[
{
"symbolicName": "TypeOne",
},
//More object types
...
]
}
Response codes
Table 13. Response codes for the GET method
Code Description
200 OK The method completed successfully. The response that is returned by the GET method
includes the JSON payload that contains the list of object types.
400 Bad Request One of the required parameters was missing or a parameter value was invalid.
Related reference:
“External data service integration into FileNet P8 workflows”
The external data service (EDS) can be implemented in data fields for process
in-basket filter criteria, in step processors, and in launching workflows. You must
construct a multi-part String that finds the service and identifies the in-basket filter,
step, or workflow.
You can implement an EDS in workflow data fields for the following areas:
v Process in-basket filter criteria
v Launch workflow and step processor properties
The EDS must register multiple-part values to identify the service request type. For
workflow information, the multiple-part values are used instead of the class or
item type name.
Construct the multiple-part string to identify the in-basket filter that you are using
in your EDS implementation. Use the following format to identify the in-basket
filter:
application_space_name.process_role_name.in-basket_name
Example:
{"symbolicName": "DefaultApplication.Personal_Items.My_Personal_Work"}
Construct the multiple-part string to identify the launch workflow step or other
steps in the step processor that you are using in your EDS implementation. Use the
following format to identify the step:
workflow_name.sheet_name.step_name
Example:
{"symbolicName": "Data_Field_Workflow.Workflow.LaunchStep"}
38 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
workflow_name.sheet_name.step_name.EDS_Service_value
The EDS_Service_value value comes from the value of an exposed custom data
field that is called EDS_Service on that particular step. The workflow designer
must manually create the EDS_Service data field and specify for that data field to
be exposed for steps that require the EDS_Service value for EDS processing. When
a workflow exposes this string on a step, the string is not displayed in the
processors properties user interface; instead, the string is a hidden property.
For example, this string identifies a step called Approval_Step with the
EDS_Service value of MyService:
{"symbolicName": "Data_Field_Workflow.Workflow.Approval_Step.MyService"}
The EDS REST protocol calls the POST method for resources when an item is
created or a property is modified. The service then returns the required
information in the response to the POST request.
“POST method” on page 40
The POST method obtains data from an external data source for item types of a
specific class. You do not call this method directly. Instead, the EDS REST
protocol calls this method automatically when workflow information or a
content item is being added or modified.
“Request modes” on page 42
When an item is created or modified in the web client, IBM Content Navigator
calls the POST method for the particular object type resource to submit a request
to the external data service. This request payload contains a request mode that
indicates the action that is being performed.
“Response payload to a POST method request payload” on page 43
The external data service responds to a POST method that was submitted by the
EDSSupportPlugin plug-in. The response payload contains values for the
properties that are managed by the service.
POST method
The POST method obtains data from an external data source for item types of a
specific class. You do not call this method directly. Instead, the EDS REST protocol
calls this method automatically when workflow information or a content item is
being added or modified.
When IBM Content Navigator calls the POST method, the request payload contains
the current value for each property. The current value can be one of the following
values:
v The default value
v The value persisted for the property in the repository
v The working value that the user entered for the property
The response payload that the external data service returns includes changes to the
properties that it manages. The service can modify attributes of properties in
addition to modifying property values.
IBM Content Navigator then merges these changes with the base data in the
repository and returns the data to IBM Content Navigator.
URI syntax
/type/{class name}
Path elements
Table 14. Path elements for the POST method
Name Type Description
{object type name} String The symbolic name of the class name or item type name that defines the
property that is being updated.
Request content
{
"repositoryId":"target_object_store_name",
"objectId" : "GUID_or_PID_of_item_that_is_being_edited",
"requestMode" : "request_context",
"externalDataIdentifier" : "identifier_for_the_service",
"properties":
[
{
"symbolicName" : "property_name",
"value" : current_value,
}
],
40 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
"clientContext":
{
"Key1":"Value1",
"Key2":"Value2"
}
Response codes
Table 16. Response codes for the POST method
Code Description
200 OK The method completed successfully. The response that is returned by the POST method
includes the updated information for the property.
400 Bad Request One of the required parameters was missing or a parameter value was invalid.
404 Not Found The class that was specified in the request was not found. This error does not indicate that
the class is invalid. Instead, it indicates that the external data service does not manage any
property values for the class. The EDS REST protocol does not return an error to IBM
Content Navigator.
500 Internal Server A server error occurred. For information about the error, see the userMessage element in the
Error JSON response.
Request modes
When an item is created or modified in the web client, IBM Content Navigator
calls the POST method for the particular object type resource to submit a request to
the external data service. This request payload contains a request mode that
indicates the action that is being performed.
You must configure the external data service to respond with the data that is
required for that action. For example, if the request is to add a document, when
the Add Document wizard is opened, the service needs to respond with the initial
property values that are defined for the Add Document class.
The requestMode parameter indicates the action that is being performed in IBM
Content Navigator. This action determines the response that is returned by the
external data service.
For input payloads, the following values are provided on the context ID:
Table 17. Values provided on the context ID for input payloads
Value Description
userid The user ID for the user who is logged in to
IBM Content Navigator.
locale The locale of the browser that initiated this
call to the external data service.
desktop The desktop ID for the desktop that is in use.
42 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
update of the class include the externalDataIdentifier parameter to
indicate the current state of the data to the service.
inProgressChanges
Indicates that the external data service is being called in response to
changes in one or more properties that have dependent properties. The
input payload can contain the following information:
v The current working value for each property in the class or item type
v The externalDataIdentifier parameter, which indicates to the service
the previous state of any properties that it updated
v For an existing class, the objectId parameter, which specifies the GUID
or the PID of the content item that is being edited
The external data service responds to this request if the attributes or
working value of any property that it manages changed. The service also
responds to return a custom validation error.
finalNewObject
Before the object is persisted in the repository, this value indicates that the
external data service is being called for the final time in the sequence of
exchanges to create the object. After this call, the new object is created and
the property values are persisted in the repository.
For each property, the input payload that is passed to the service contains
the working values for all properties that are defined by the class.
finalExistingObject
Indicates that the external data service is being called for the final time in
the sequence of exchanges to update an existing property. After this call,
the updated property values are persisted in the repository.
For each property, the input payload that is passed to the service contains
the working values for all properties that are defined by the class or item
type.
Response content
The response to the request must include a JSON payload that contains the
following parameters:
{
"externalDataIdentifier": "opaque_identifier_meaningful_to_the_service",
"properties":
[
{
"symbolicName": "symbolic_name",
"value": potential_new_value,
"customValidationError": "Description of an invalid reason",
"customInvalidItems": [0,3,4,8], // Invalid multi-value items
"displayMode": "readonly_or_readwrite",
"required": true_or_false,
"hidden": true_or_false,
"maxValue": overridden_maximum_value,
"minValue": overridden_minimum_value,
"maxLength": underlying_maximum_length,
{
"displayName": "name",
"value": value
},
"hasDependentProperties": true_or_false,
You implement this parameter with values that are meaningful for your data
source. Typically, the parameter references the specific configurations that
define attributes other than the property value such as the minimum value,
maximum value, or the choice list. These configurations can be selected
dynamically based on other property values. To select configurations
dynamically, the service can use the externalDataIdentifier parameter to
determine that the configuration changed since the previous call.
If the external data service returns data that is dynamic, you must capture the
data state. For example, the service might manage a property whose value or
other attributes are determined by the value of another property. In this
situation, you must implement the parameter to return a value that references
the specific configuration that was used to determine the value or other
attributes of the dependent property. The parameter must capture enough
information to identify changes in property data when the
externalDataIdentifier parameter is returned to the service in an
inProgressChanges request.
44 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Property attributes
The Properties parameter contains the following attributes for each property that
is managed by the external data service. The external data service can determine
many of these values dynamically so that the service can return a different value in
each response.
Table 19. Attributes of properties in the response payload
Name Type Required? Description
symbolicName String Yes The symbolic name of the property. The name must match the
symbolic name that was specified in the request payload.
value Determined No The value of the property. The value that is set by the external data
by setting in service must correspond to the data type that is specified for the
the class property in the class.
If the service does not specify a value, the current working value for
the property is unchanged.
custom String No A message that describes why a property value is invalid.
Validation
Error You can configure the external data service to validate the current
value of a property. If the value is invalid, the service can leave the
value unchanged and return an error message in the
customValidationError parameter.
The external data service can set this parameter to one of the
following values:
readonly
The user can view the property value but cannot modify it.
readwrite
The user can modify the property value. This setting is the
default value.
If the property value is set to readonly in the class, the
external data service cannot make the value writable. In this
situation, a value of readwrite is ignored.
format String No An expression that describes the correct format for values to enter
into the property. Uses formatDescription to provide a description for
the format parameter.
format String No The description that is displayed in a tooltip if the user enters a
Description format that does not match the expression specified in the format
parameter.
required Boolean No A Boolean value that is set to true to indicate that a value is required
for the property.
46 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 19. Attributes of properties in the response payload (continued)
Name Type Required? Description
maxLength Integer No A number that indicates the maximum length of characters in the
property value.
The external data service can specify a choice list only if one is not
defined for the property in the repository. The service can determine
the choices in the list dynamically based on the values of other
properties.
{
"displayName": "display_name_for_a_specific_choice",
"value": value
},
The JSON response that is returned by the method contains additional information
about the error condition. The following example shows the format that the
response uses to provide that information:
#Response
HTTP/1.1 404 Not Found
Content-Type: application/json;charset-UTF-8
{
"userMessage":
{
"text":"The specified object type is not a valid object type.",
}
"underlyingDetails":
{
"causes":
[
"More detailed message 1",
"More detailed message 2",
]
}
}
{
"repositoryId":"ObjectStore1",
"objectId" : "{EC4D244B-5980-4...6978-8796-A5B4C3D2E1F0}",
"requestMode" : "inProgressChanges",
"properties":
[
{
"symbolicName" : "Region",
"value" : "Western",
}
],
"clientContext":
{
"userid":"user1",
"locale":"en_US",
"desktop": "default"
}
}
Response example
{
"externalDataIdentifier": "opaque_identifier_meaningful_to_the_service",
"properties": [
{
"symbolicName": "BranchOffice",
"dependentOn": "Region",
"dependentValue": "Western",
"choiceList": {
"displayName": "Western Branch Offices",
48 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
"choices": [{
"displayName": "Los Angeles",
"value": "Los Angeles"
},
{
"displayName": "San Francisco",
"value": "San Francisco"
},
{
"displayName": "Salt Lake City",
"value": "Salt Lake City"
},
{
"displayName": "Seattle",
"value": "Seattle"
}]
}
}
]
}
A sample external data service and JSON files, which are the sample data source,
are available in the ECMClient_installdir\samples\sampleEDSService\WEB-INF\
classes directory.
“Files in the sample external data service”
You can use the sample service as an example and as a starting point for your
own external data service. The sample service consists of a GetObjectTypes
servlet, an UpdateObjectTypes servlet, the object types resource JSON file, JSON
files as the data source, and the web.xml deployment file.
“Deploying the sample external data service” on page 50
You modify the sample external data service to be appropriate for your content
classes and then deploy the service in the web application server.
Related reference:
“Sample applications for IBM Content Navigator” on page 7
The IBM Content Navigator software package includes several sample applications:
a plug-in, an external data service, and a set of web pages. You can use these
sample applications to create custom applications.
Important: These files are provided primarily to help you understand the
expected JSON format and to help you start creating the JSON for your
own external data service. To use the sample files for EDS deployment,
extensive configuration is required.
The JSON needs to match the classes, item types, and the corresponding
custom properties on your system. To use the provided JSON files in the
sample, the JSON files need to be modified so that the correct custom
properties are aligned with the actual classes and custom properties in
your IBM FileNet P8 or IBM Content Manager repository.
Similarly, to use the workflow JSON files (IBM FileNet P8), the JSON must
be modified to match your IBM Content Navigator workflows, including
the appropriate steps, step names, workflow data fields, and other custom
properties.
To apply the sample EDS on a workflow filter, the Application Space,
Role, Inbasket, and filter criteria must be set up accordingly.
A sample localized file is included in the sample to help illustrate that the
EDS can send locale information in the request. The EDS developer can
specify for the EDS to look at the locale information in the request and
return the response JSON in the proper correct translation.
web.xml file
The web.xml file provides configuration and deployment information for
the web application. This file must reside in the WEB-INF directory under
the context of the hierarchy of directories that exist for the external data
service.
An Eclipse project is provided with the sample EDS service. You must modify the
libraries that are referenced in the project to fit your configuration. For example,
the \navigator\build\lib\j2ee\j2ee.jar might not be the correct path to your
50 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
j2ee.jar file. Find the equivalent JAR file for your environment and update the
project configuration to point to that JAR file.
Procedure
Results
When you select values from choice list properties, the list contains the values
from your external data source, which is specified by the external data service.
What to do next
In the IBM Content Navigator client, verify that the fields and properties are
showing the correct data and are behaving as you expect.
For screen reader users on Mozilla Firefox web browsers, traverse through the
landmark navigation area in the JavaScript API reference documentation by using
the Tab key.
Important: The IBM Content Navigator APIs are subject to change without notice.
If you use the APIs to develop applications or plug-ins, you might need to make
updates to your code if a new version of the APIs are released.
“IBM Content Navigator modeling library structure”
The classes in the modeling library provide the business logic and data for IBM
Content Navigator. These classes are used by the widgets to access and
represent data in the content servers and in the IBM Content Navigator
configuration.
“IBM Content Navigator visual widget catalog” on page 56
The JavaScript classes in the IBM Content Navigator visual widget library are
grouped by package. In some packages, the classes can be further grouped by
the type of widgets that they represent.
The following diagram shows the hierarchy of the primary classes in the modeling
library:
Workspace
Workspace
Template
Result
Set
Item
Content
Result Result
Work
Item
Set Item
Set
As shown in this diagram, an instance of the Desktop class encompasses the other
objects in the model. The Desktop object specifies the repositories, features, actions,
and viewers to which a set of users will have access.
The Repository object gives users the ability to access and perform actions on
repository objects. These objects are also represented by classes in the modeling
library:
SearchTemplate class
This class represents a search that is stored in the repository. In an IBM
Content Manager or IBM FileNet P8 repository, a SearchTemplate object
represents a saved search. In an IBM Content Manager OnDemand
repository, a SearchTemplate object represents a folder.
54 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
A SearchTemplate object gives users the ability enter or modify the criteria
that is used to perform a search. The criteria is represented in the model
library by the SearchCriterion class.
EntryTemplate class
This class represents an entry template that is stored in an IBM FileNet P8
repository. An EntryTemplate object gives users the ability to create a
document, folder, or custom object. An EntryTemplate object also provides
the default values for the destination folder, properties, and security.
ContentClass class
This class represents a document or folder class in a IBM FileNet P8
repository or an item type in an IBM Content Manager repository. A
ContentClass object gives users the ability to access the item and to edit
the properties and attributes of the item.
Each property or attribute is represented by an instance of the
AttributeDefinition class that contains information about the property or
attribute, such as type and allowed values.
WorklistFolder class
This abstract class represents a collection of work lists, which are
sometimes called in-baskets or inboxes. The subclasses of the
WorklistFolder class represent collections of the different types of work
lists and in-baskets. For example, the ProcessApplicationSpace class
represents a collection of process roles that determine who can access an
IBM FileNet P8 process application. The ProcessRole class represents a role
that is defined on an IBM FileNet P8 server. An instance of this class
determines who has access to the in-baskets that are defined in an
application space.
Worklist class
This class represents a single work list. A Worklist object provides users
with the ability to process the work items that are assigned to them.
The model includes the ProcessInBasket subclass for IBM FileNet P8
repositories.
Workspace class
This class represents a teamspace. A Workspace object provides users with
the ability to organize and share the content that a team needs to complete
its tasks.
The individual users and groups who belong to a teamspace are
represented in the model by the User and UserGroup classes.
WorkspaceTemplate class
This class represents a teamspace template. A WorkspaceTemplate object
provides users with the ability a set of predefined options for creating a
teamspace.
ResultSet class
This class represents a set of items that are returned by a search. A
ResultSet object provides users with the ability to locate and select
documents, folders, or work items.
An individual item in a ResultSet object is represented in the model by
the Item class or one of its subclasses:
v The ContentItem class represents a document, folder, or other content
item in the repository.
v The WorkItem class represents a workflow item.
56 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
edit teamspaces and teamspace templates. In IBM Content Navigator, these
widgets are used for the teamspace builder.
“Viewer widgets package” on page 78
The ecm.widget.viewer package contains classes that are used to view
document content.
Related concepts:
“IBM Content Navigator development architecture” on page 3
IBM Content Navigator uses a model-view-controller (MVC) architecture.
Widgets package
The classes in the ecm.widget package define widgets that you use to create, edit,
and search repository objects such as documents, folders, and work items. This
package also includes classes that define common user interface components such
as buttons, menus, and tabs.
These widgets are used to view and edit documents and folders.
Table 20. Widgets that are used to view and edit documents and folders
Widget class Description
AddContentItemGeneralPane Provides a pane that is used in the
AddContentItemDialog widget to add a
document or folder to a repository. This pane
is also used in the CheckInDialog widget to
check a document in to a repository.
AddContentItemPropertiesPane Provides a pane that is used in the
AddContentItemDialog widget to edit
properties when a user adds a document or
folder to the repository. This pane is also
used in the CheckInDialog widget to edit
properties when a user checks a document in
to the repository.
AddContentItemSecurityPane Provides a pane that is used in the
AddContentItemDialog widget to view and
edit the security settings of a document or
folder that is being added to a repository.
This pane is also used in the CheckInDialog
widget to view and edit the security settings
of a document or folder that is being checked
in to a repository.
AttributeDefinitionsForm Provides a widget that is used to define
attributes for an IBM Content Manager class
or item type.
ChildComponentPropertiesPane Provides a widget that is used to view and
edit the attributes of a child component of an
IBM Content Manager item type.
58 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 20. Widgets that are used to view and edit documents and folders (continued)
Widget class Description
ModifyPermissionPane Provides a pane that is used to edit the
permissions for accessing a document or
folder.
SecurityPane Provides a widget that contains a list of users
and roles that have access to an item.
VersionsPane Provides a widget that is used to view the
versions of an item.
Search widgets
These widgets support the definition of teamspaces and the selection of users.
Table 22. Widgets that are used to define teamspaces and select users
Widget class Description
TeamList Provides a widget that displays a list of the
users and groups that are assigned to a
teamspace.
UserGroupSelector Provides a widget that is used to select a
user or group. This widget can be configured
to display both users and groups or only
users. The widget can also be configured to
support multiple selections or only single
selections.
UserGroupSelectorPane Provides a pane that is used by the
_PropertiesMixin class to select users or
groups for assigning property value. The
widget can be configured to display voting
approval properties for Entry Template
workflows.
60 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
User interface widgets
62 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 23. Widgets that are used to define common user interface components (continued)
Widget class Description
FilteringSelect Provides a combination box that consists of a
drop-down list and a field. The user can
select a value from the list or type a value in
the field. The list is filtered to display values
that begin with the value entered in the field.
A valid entry must match completely a value
from the list.
64 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 23. Widgets that are used to define common user interface components (continued)
Widget class Description
SloshBucket Provides a widget that is used to pick a
subset of unique items from a larger set of
items.
Teamspace widgets
Workflow widgets
These widgets are used to view and edit workflows, work lists, and work items.
Table 25. Widgets that are used to view and edit workflows, work lists, and work items
Widget class Description
ReassignToUserDialog Provides a dialog box that is used to reassign
an IBM FileNet P8 workflow item to another
user.
StartWorkflow Provides a widget that is used to start folders
and documents on a workflow.
SuspendWorkItems Provides a widget that is used to suspend
folders and documents on a workflow.
TrackerHistoryPane Provides a widget that is used to view the
history of an IBM FileNet P8 workflow.
TrackerMilestonesPane Provides a pane that is used to view the
milestones for a tracker.
WorkItemAttachmentsPane Provides a widget that is used to view or
edit work item attachments.
WorkItemPropertiesPane Provides a widget that is used to view or
edit the properties of a work item.
66 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 25. Widgets that are used to view and edit workflows, work lists, and work
items (continued)
Widget class Description
WorklistSelector Provides a widget that contains a tree that is
used to navigate process workflow items.
This widget displays the available work lists,
process roles, and in-baskets for selection.
General widgets
These widgets are used to configure the desktops that are available in the web
client.
These widgets are used to configure the context menus and toolbars that are
available in the web client.
Table 29. Widgets that are used to configure menus
Widget class Description
TabMenu Provides a tab that is used to edit a toolbar
or a context menu.
TabMenus Provides a tab that lists the available toolbars
and context menus. This tab is used to select
a toolbar or a menu to edit or copy.
68 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Plug-in configuration widgets
These widgets are used to configure the repositories that IBM Content Navigator
connects to.
Table 31. Widgets that are used to configure repositories
Widget class Description
ODCustomPropertiesDialog Provides a dialog box that is used to edit
custom properties for the connection to an
IBM Content Manager OnDemand repository.
RepositoryConfigurationParameters Provides a widget that is used to configure
the properties for a repository.
RepositoryFolders Provides a pane that is used to specify the
properties for repository folders. The pane
also determines the order in which the
folders are displayed when users browse a
repository.
RepositorySearch Provides a pane that is used to configure the
search properties, search operators, and
search results for a repository.
RepositorySystemProperties Provides a pane that is used to specify the
system properties that are displayed for the
documents and folders in a repository.
TabRepositories Provides a tab that shows the available
repositories.
TabRepository Provides a tab that is used to view and
configure a repository. Users use this tab to
edit repository parameters, system properties,
and folders.
Settings widgets
These widgets support the mapping of content viewers to specific file types.
Table 33. Widgets that are used to configure viewer mappings
Widget class Description
TabViewer Provides a tab that is used to add or edit a
viewer that is used to open files.
TabViewers Provides a tab that lists the viewers that are
available to open files.
These widgets define the model for the administration user interface.
Table 34. Widgets that define the model for the administration user interface
Widget class Description
AdminTreeModel Provides a widget that contains a hierarchical
navigation tree for administration objects.
70 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 34. Widgets that define the model for the administration user interface (continued)
Widget class Description
NexusAdminCategoryObject Provides methods that are used to handle
category objects in the IBM Content
Navigator administration tool. These
category objects represent the Desktops,
Repositories, Plugins, Viewer Maps, and
Menus nodes in the main navigation tree in
the administration tool.
These widgets define dialog boxes that are used to display messages.
Table 35. Widgets that are used to display messages
Widget class Description
ErrorDialog Provides a dialog box that is used to display
an error message that was generated by a
service request.
MessageDialog Provides a dialog box that displays a simple
message to the user.
StatusDialog Provides a dialog box that is used to display
a status message during the processing of a
request to the server.
These widgets define dialog boxes that are used to select objects and users.
Table 37. Widgets that are used to select items
Widget class Description
ContentClassSelectorDialog Provides a dialog box that is used to select
content classes.
SelectObjectDialog Provides a dialog box that is used to search
for and select repository items.
SelectUserGroupDialog Provides a dialog box that is used to select
users and groups.
These widgets define dialog boxes that are used with work items and workflows.
Table 38. Widgets that are used with work items and workflows
Widget class Description
ReassignToUserDialog Provides a dialog box that is used to reassign
an IBM FileNet P8 workflow item to another
user.
StartWorkflow Provides a dialog box that is used to start
folders and documents on a workflow.
StepProcessorWindow Provides a mechanism that is used to display
the IBM FileNet Business Process Manager
widget in a separate browser window.
SuspendWorkItems Provides a dialog box that is used to suspend
work items in a workflow.
72 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 38. Widgets that are used with work items and workflows (continued)
Widget class Description
WorkflowSubscriptionsDialog Provides a dialog box that is used to suspend
work items in a workflow.
WorkspacePropertiesDialog Provides a dialog box that is used to edit
workspace properties.
74 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 40. Widgets that define components of the web client layout (continued)
Widget class Description
FlyoutMenuContainerChild Provides a container for the fly-out panes
that are used for features.
HorizontalScrollPane Provides a pane that can be scrolled
horizontally.
LaunchBarContainer Provides a vertical bar that displays the
features available in a layout.
LaunchBarDialogPane Provides a widget that is extended for any
pane that is placed in a LaunchBarContainer
fly-out. This pane provides flags and
callbacks that are used by the parent
container to control loading content in the
fly-out and opening panes in the content area
of the LaunchBarContainer widget.
LaunchBarPane Provides a widget that is extended for any
pane that is placed in the content area of the
LaunchBarContainer widget. This class
provides flags and callbacks that are used by
the parent container to control navigation
and content loading.
MainLayout Provides the main layout for IBM Content
Navigator or for similar desktop layouts.
This class displays the launch bar that
contains the features on the left side of the
layout.
ManageTeamspacesPane Provides a widget that displays a list of all
teamspaces and teamspace templates that a
user can access. From the list, a user with
appropriate authority can open, edit, and
delete teamspaces and teamspace templates.
A user with the appropriate authority can
also open the builder to create new templates
and teamspaces from this widget.
NavigatorMainLayout Extends the MainLayout class to provide
additional interactions that are specific to
IBM Content Navigator.
RecentActivityPane Provides a pane that displays information
about the recent activity on items.
SearchFlyoutPane Provides a fly-out pane that contains the
search interface for a layout.
SearchPane Provides a pane that contains the search
interface for a layout.
TeamspaceBuilderPane Provides a pane to display the teamspace
builder in the layout.
TeamspaceFlyoutPane Provides a fly-out pane that is used for the
teamspaces feature in the launch bar.
TeamspacePane Provides a pane that is used to display a
teamspace in the layout.
WorkFlyoutPane Provides a fly-out pane that is used to select
repositories and to navigate IBM Content
Manager worklists and IBM FileNet P8
application spaces.
76 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Table 42. Widgets that are used to create teamspaces and teamspace templates (continued)
Widget class Description
FoldersAndDocsPane Provides a widget that is used to select the
default documents and folders to include in
the teamspace.
These widgets define dialog boxes that are used to view content.
Table 43. Widgets that are used to view content
Widget class Description
AjaxViewer Provides a widget that supports
page-by-page viewing of documents.
ContentViewer Provides a widget that contains tabs in which
individual viewers for documents are
displayed.
ContentViewerPane Provides a widget that supports a single
document viewer. This widget is contained in
the ContentViewer widget.
78 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in
other countries. Consult your local IBM representative for information on the
products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may
be used instead. However, it is the user's responsibility to evaluate and verify the
operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not grant you
any license to these patents. You can send license inquiries, in writing, to:
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS
PUBLICATION “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or
implied warranties in certain transactions, therefore, this statement may not apply
to you.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
Licensees of this program who wish to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged, should contact:
IBM Corporation
J46A/G4
555 Bailey Avenue
San Jose, CA 95141-1003
U.S.A.
The licensed program described in this document and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement or any equivalent agreement
between us.
All statements regarding IBM's future direction or intent are subject to change or
withdrawal without notice, and represent goals and objectives only.
This information contains examples of data and reports used in daily business
operations. To illustrate them as completely as possible, the examples include the
names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
80 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Portions of this product are:
v Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
The Oracle Outside In Technology included herein is subject to a restricted use
license and can only be used in conjunction with this application.
“Trademarks”
Trademarks
The following terms are trademarks of the International Business Machines
Corporation in the United States, other countries, or both: http://www.ibm.com/
legal/copytrade.shtml
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the
United States, other countries, or both.
Other company, product, and service names may be trademarks or service marks
of others.
Notices 81
82 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
Index
A ecm.widget.layout package
class summary 74
J
actions ecm.widget.process package JavaScript API
creating plug-ins for 17 class summary 76 ecm.model package 53
menu actions ecm.widget.viewer package ecm.widget package 57
creating plug-ins for 17 class summary 78 ecm.widget.admin package 67
administration tool widgets ecm.widget.workspaceBuilder package ecm.widget.admin.model 70
desktops 67 class summary 76 ecm.widget.dialog package 71
graphical interface 67 edsPlugin.jar file ecm.widget.layout package 74
labels 67 registering 50 ecm.widget.process package 76
menus 67 external data services ecm.widget.viewer package 78
applications creating 34 ecm.widget.workspaceBuilder
creating features 20 deploying 50 package 76
creating layouts 21 edsPlugin.jar file 50
creating menu actions 17 error responses
creating menus 18
creating plug-in components 16
external data service REST L
protocol 48 label widgets
creating plug-ins 13 object types resource 37 administration tool 67
creating request or response overview 31 layout widgets
filters 22 particular object type resource 39, 48 ecm.widget.layout package 74
creating services 24 POST method 40 layouts
creating viewers 26 registering 50 creating plug-ins for 21
creating widgets 27 request modes 42
developing with IBM Content requirements 34
Navigator 1
development architecture 3
response content 43
REST protocol specifications 36
M
midtier services 5 sample external data service 49 menu widgets
packaging plug-in components 28 sample files 49 administration tool 67
sample applications 7 workflow integration 38 menus
architecture creating plug-ins for 18
development 3 message widgets
midtier services 5 dialog boxes 71
F modeling library
features structure 53
D creating plug-ins for 20
finalExistingObject request mode
desktop widgets
administration tool 67
particular object type resource
finalNewObject request mode
42
O
developing applications particular object type resource 42 object types request
architecture 3 folder widgets error responses 48
midtier services 5 ecm.widget package 57 external data service 37
dialog box widgets GET method 37
messages 71 GET method example 39
searches 71 response content 43
selection 71 G
work items 71 graphical interface widgets
workflows 71
document widgets
administration tool 67
P
particular object type resource
ecm.widget package 57
example 48
I external data service 39
IBM Content Navigator POST method 40
E developing applications 1 plug-in components
ecm.model package initialExistingObject request mode creating 16
structure 53 particular object type resource 42 features 20
ecm.widget package initialNewObject request mode layouts 21
class summary 57 particular object type resource 42 menu actions 17
ecm.widget.admin package inProgressChanges request mode menus 18
class summary 67 particular object type resource 42 packaging 28
ecm.widget.admin.model request or response filters 22
class summary 70 services 24
ecm.widget.dialog package viewers 26
class summary 71 widgets 27
W
R widgets
request filters administration model widget
creating plug-ins for 22 classes 70
request modes administration widget classes 67
finalExistingObject 42 creating plug-ins for 27
finalNewObject 42 dialog box widget classes 71
initialExistingObject 42 documents 57
initialNewObject 42 folders 57
inProgressChanges 42 layout widget classes 74
requestMode parameter process widget classes 76
particular object type resource 42 searches 57
response filters teamspace builder widget classes 76
creating plug-ins for 22 teamspaces 57
users 57
viewer widget classes 78
S widget classes 57
workflows 57
sample applications
work item widgets
customizing 7
dialog boxes 71
sample external data service
workflow widgets
customizing choice lists 31
dialog boxes 71
search widgets
ecm.widget package 57
dialog boxes 71
ecm.widget package 57
selection widgets
dialog boxes 71
services
creating plug-ins for 24
T
teamspace builder widgets
ecm.widget.workspaceBuilder
package 76
teamspace widgets
ecm.widget package 57
U
URLs
creating for IBM Content
Navigator 9
user interface widgets
ecm.widget package 57
user widgets
ecm.widget package 57
V
viewers
creating plug-ins for 26
visual widget library
administration model widgets
package 70
administration widgets package 67
dialog box widgets package 71
layout widgets package 74
process widgets package 76
84 IBM Content Navigator: Developing Applications with IBM Content Navigator APIs
SC19-3716-00