BPF Performance Tuning Guide

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Business Process Framework

Performance Tuning Guide


Software Release 4.0.0
May 2007

FileNet is a registered trademark of FileNet corporation.


All other product and brand names are trademarks or
registered trademarks of their respective companies.

FileNet Corporation
3565 Harbor Boulevard
Costa Mesa, California 92626

Due to continuing product development, product


specifications and capabilities are subject to change
without notice.
Copyright 2002, 2007 FileNet Corporation. All rights
reserved.

1.800.FILENET (345.3638)
Outside the US, call:
1.714.327.3400
www.filenet.com

Contents
Introduction ................................................................................................................................................... 5
Objective.................................................................................................................................................... 5
BPF configuration tuning............................................................................................................................... 6
Enabling open Case event ........................................................................................................................ 6
Disabling attachment properties update.................................................................................................... 6
Disabling attachment list............................................................................................................................ 6
Disabling Inbasket case count................................................................................................................... 6
Filtering out locked workobjects ................................................................................................................ 6
Role management configuration ............................................................................................................... 7
Application settings Metadata cache...................................................................................................... 7
Application settings Enable profiling....................................................................................................... 7
Application settings - XMLHTTP logging................................................................................................... 7
Application settings - Case ID Manager reservation size.......................................................................... 8
Application settings Folder to file case objects ...................................................................................... 8
Application settings Inbasket browse list page size ............................................................................... 8
Application Settings Case attachments list Adhoc search definition................................................... 8
Case fields Lookup fields ..................................................................................................................... 11
Web Application logging .......................................................................................................................... 11
Avoid large dynamic pick lists ................................................................................................................. 12
Avoid large numbers of Read From Workflow fields ............................................................................... 13
Annotation viewing .................................................................................................................................. 13
Bulk Processing....................................................................................................................................... 13
Disable Inbasket(s) List on Search.......................................................................................................... 13
Content Engine tuning................................................................................................................................. 14
Query Options ......................................................................................................................................... 14
Disable trace logging ............................................................................................................................... 14
Index Content Engine Objects................................................................................................................. 14
Process Engine tuning ................................................................................................................................ 16
Purge workflow event log ........................................................................................................................ 16
Disable unnecessary events ................................................................................................................... 16
Create indices.......................................................................................................................................... 16
Turn off VWRouter logging ...................................................................................................................... 16
Monitor number of server processes....................................................................................................... 16
Web Application container tuning ............................................................................................................... 17
Internet Explorer settings......................................................................................................................... 17
Cache settings ..................................................................................................................................... 17
BEA WebLogic ........................................................................................................................................ 17
Web container thread pool settings ..................................................................................................... 17
Connection pool size............................................................................................................................ 18
Heap Size ............................................................................................................................................ 18
JIT compiler settings ............................................................................................................................ 19
HTTP connection timeout .................................................................................................................... 20
IBM WebSphere ...................................................................................................................................... 21
Servlet caching .................................................................................................................................... 21
Web container thread pool settings ..................................................................................................... 21
Connection Pool size ........................................................................................................................... 22
Heap size ............................................................................................................................................. 22
JIT compiler settings ............................................................................................................................ 23
Notices and License Agreements ............................................................................................................... 24
Notices..................................................................................................................................................... 24
License Agreements................................................................................................................................ 25
Apache License Agreement, Version 1.1 ............................................................................................ 25
Apache License Agreement, Version 2.0 ............................................................................................ 25

BPF Performance Tuning Guide


Contents
Centera License Agreement ................................................................................................................ 28
PDFBox License Agreement ............................................................................................................... 29
Jaxen License Agreement ................................................................................................................... 30

FileNet Corporation

BPF Performance Tuning Guide


Introduction

Introduction
BPF is a Case Management framework application. In contrast to BPM, which typically operates with only
a single workflow object, or ECM, which operates with a single document or piece of content when
manipulated through Workplace, BPF operates with complex business objects. A BPF business object
(referred to as a Case) is a collection of custom objects in a CE repository, which include the Case object,
attachment objects (documents, folders, or custom objects), audit trail event objects, etc. A BPF Case
may or may not be related to one or more workflow objects in the PE as well. BPF always operates Case
in terms of BPF Cases, although it could be configured to mimic BPM step processor behavior. BPF
presents its business objects (Cases) in a consistent and very intuitive manner, hiding the complexity of
the different components stored and managed in different repositories, allowing for synchronization of the
individual Case, its attachments (both documents and custom objects) and workflow. BPF transactions
are significantly more complex than the typical BPM or ECM transactions, as one BPF transaction
initiates multiple object transactions in multiple products and repositories.
The key components of BPF are its configurable user interface (the BPF Web Application) and a
framework for background step processing.
The BPF Web Application is built around the AJAX (Asynchronous JavaScript and XML) development
model and makes extensive use of the FileNet P8 Platform Web Application Toolkit (WAT) as well. The
BPF Web Application exposes Case Management services via an action dispatcher servlet. The Web
client uses XMLHTTP (AJAX) for communication with the action dispatcher. The design of the BPF Web
Application minimizes the client-server traffic by updating the browser only with the data that has
changed. The BPF Web Application also contains a set of client-side JavaScript functions that employ
data validation techniques, minimizing unnecessary round trips to the web server.
The BPF Web Application user interface layout is metadata driven and is built dynamically upon user
request. The metadata describing the user interface layout is stored in the BPF Metastore database and
is configured via the BPF Explorer administrative tool. When the user makes a request to retrieve
business objects, the business object presentation manifest and any associated business rules are
retrieved from the BPF Metastore, packaged as XML, and then sent to the browser, where the proper
HTML is rendered via client-side XSL transformation. The BPF Metastore Cache Manager virtually
eliminates the database traffic by caching all frequently used presentation manifest information.
The BPF background step processor framework is implemented as a FileNet P8 Platform Component
Integrator Java adaptor. This allows BPF operations to be placed as steps on the process map. Each
operation is configurable and allows the workflow designer to implement both simple and relatively
complex background processes with no developer assistance required. The key operations available in
BPF include: Create Case, Attach Document, Update Case, and Log Event. Note that Create Case and
Attach Document both support the attachment of custom objects as well as documents.

Objective
This section explains some of the key performance-related aspects of BPF. It includes a high-level
description of the BPF architecture so as to provide a better understanding of the performance and
scalability related aspects of BPF as well as of the tuning parameters that can impact its performance.
NOTE It is recommended that system administrators implementing BPF first review and implement
recommendations published in the FileNet P8 Platform 4.0 Performance Tuning Guide to tune the
baseline FileNet P8 Platform environment before tuning BPF.

FileNet Corporation

BPF Performance Tuning Guide


BPF configuration tuning

BPF configuration tuning


BPF has many useful features that add tremendous value to the application but deploying these may also
add considerable performance overhead. It is important to weigh the value provided by these features
against the performance impact that will be incurred. These tunable options are described below with
some general indications of the performance impact that they can have.

Enabling open Case event


The Enable Open Case Event option in the Inbasket Configuration General Tab, provides additional
audit logging each time the Case is opened. If this option is unchecked, BPF only logs the action entry
when the Case is dispatched, not the entry time when the Case was opened. The Enable Open Case
event option is somewhat expensive, involving the creation of additional AuditLog item entries. Leaving it
unchecked will result in a performance gain of perhaps several hundred milliseconds.

Disabling attachment properties update


When a Case has attached content, it is possible to update one or more attached content properties
when the Case properties have changed and the Case object is updated. This adds overhead to the
action of saving a Case. The Disable Updating Attachment Properties option (in the Options pane on the
right-hand side of the General tab of the Inbasket Configuration dialog for each Inbasket) can, if checked,
improve performance considerably since updating attachment properties is an expensive transaction, and
the expense, in terms of slower performance, increases in direct proportion to the number of attachments
each Case has.

Disabling attachment list


Generally, attached content is shown in the lower part of the Case tab pane. This adds overhead in
loading the Case tab because BPF needs to establish the hyperlinks to the attachments as well. Since
the Case tab is typically the default display tab, the wait time may be more noticeable to the user.
Attachments can also be displayed via the Attachments tab. If possible, set the Attachment Visibility
option dropdown value (in the Options pane on the right-hand side of the General tab of the Inbasket
Configuration dialog for each Inbasket) to No and consider using the separate Attachments tab instead.
This will allow the Case tab to load much more quickly since it will not have to load hyperlinks to the
attachments as well.

Disabling Inbasket case count


This feature provides an Inbasket count, which is displayed immediately following the Inbasket name in
the Web Application but is controlled at the role level. Consider deselecting the Display Case Count
checkbox on each security profile and exposing the queue_depth tool (for use as needed) instead.
Otherwise, BPF will have to recalculate the Case count each time a Case is dispatched or an Inbasket
filter value changed and the open Inbasket clicked on, which is a very expensive operation.

Filtering out locked workobjects


The filters determine how the workflow queue will be browsed in order to create the Inbasket view. Each
filter has modifiable SQL syntax behind it. These are defined in the Workflow Configuration section of
BPF Explorer and then selected in the Filter Name dropdown in the Inbasket Configuration General tab.
The default filters pre-defined in BPF Explorer show both locked and unlocked work objects. By contrast,
it can be far less expensive to browse a queue and filter out any items locked by other users. To add this
additional SQL parameter, modify the appropriate filter in BPF Explorer by adding a term such as
(F_LockUser = %USERID% or F_LockUser = 0) to the WHERE clause as a way of filtering out any items
locked by users other than the current user.

FileNet Corporation

BPF Performance Tuning Guide


BPF configuration tuning
For example:
select %PAGESIZE% F_WobNum, F_UniqueId, F_Locked, F_LockUser, F_BoundUser, Bp8CaseID, 9999 as
queue_depth from %VIEWNAME% WHERE %FILTERBY% (F_LockUser = %USERID% or F_LockUser = 0) and
F_StepName='%STEPNAME%' order by %ORDERBY%, F_EnqueueTime, F_UniqueId asc

It is much less expensive to handle this kind of filtering at the SQL level than at the ResultSet level, after
the fact.

Role management configuration


BPF Supports three different models of role management configuration. They are:

Manual Role membership is assigned and managed via BPF Explorer only.

LDAP group integration Role membership is managed via LDAP security group membership.
BPF roles are linked to LDAP groups.

Workplace access roles Role membership is managed via LDAP security group membership.
BPF roles are linked to Workplace access roles, which are linked to LDAP groups.

For reasons of performance enhancement, it is strongly recommend that you use Workplace access roles
instead of direct LDAP integration, especially in cases where the LDAP directory is large or complex
(containing many levels of nested groups/folders).

Application settings Metadata cache


Consider setting Enable BPF Metadata Cache (under System-wide settings) to True, if it is not already set
that way. Using the metadata cache will save BPF from having to make many repetitive trips to the server
to get metadata from the Bp8Metastore that is generally fairly static except in true development
environments. Typically, this setting is only set to False for development purposes when you want to
immediately test the effect of a configuration change in the Web Application.

Application settings Enable profiling


This should be set to False. Setting the Troubleshooting Enable Profiling application setting (under the
Web Application group) to True will allow log4j.xml settings higher than Error (such as Debug for
example) to result in the additional information being written out to the BPF log files so configured in the
<web_root>\WEB-INF\log4j.xml file. This allows logging (other than for errors) to be turned off very easily,
even when the logging level in log4j.xml is set to Debug, without modifying log4j.xml. Nevertheless, for
performance reasons, it is recommended that this application setting be set to False unless debug-level
logging is considered absolutely necessary, as debug-level logging is extremely expensive in terms of
performance.

Application settings - XMLHTTP logging


This should be set to False. Another logging-related BPF application setting that can affect performance
is Enable XML action messages logging (under the XML Message Logging group). Setting this to True
can be very useful for debugging purposes, but is extremely harmful in terms of performance. It is strongly
recommend that this setting be set to False in production environments.

FileNet Corporation

BPF Performance Tuning Guide


BPF configuration tuning

Application settings - Case ID Manager reservation size


This should be set relatively high (greater than or equal to the default of 100). The BPF Case ID Manager
reservation size application setting (under the System-wide Settings group) is used by both the BPF Web
Application and by BPF_Operations (although independently of one another) to determine the number of
Bp8CaseID values the application should reserve and cache each time it runs out of previously reserved
and cached values and needs to create a new BPF Case. The lower this value is set, the more frequently
BPF will need to execute the code that reserves and caches a range of Bp8CaseID values. Since this is
an expensive operation, we strongly recommend setting this value higher, rather than lower, when
configuring a production system.

Application settings Folder to file case objects


It is recommend you leave the Object Store Folder to File Case Objects application setting (under the
System-wide settings group) blank. BPF allows specifying a CE repository folder where the Bp8Case,
Bp8AuditTrail, and Bp8Attachment objects instances are filed. While it is sometimes useful to have all
these objects filed in a particular folder, there is a performance penalty, which may result in significant
performance degradation as number of objects increases. It is recommended that you disable filing Case
objects in a folder by keeping the setting blank.

Application settings Inbasket browse list page size


It is recommended that you keep the Inbasket Page Size application setting (under the Web Application
group) set to a value less than 100. BPF allows specifying a number Case objects that will be displayed
on a single page in the Inbasket browse list. It is recommended you keep page size under 100 records to
avoid unnecessary load on the server.

Application Settings Case attachments list Adhoc search


definition
The CE SQL query that is installed by default for this setting, which builds the list of attached documents
and custom objects that appears as icons at the bottom of the Case tab, is configured to be as broad as
possible, taking into account the possibility that the customer might be storing attached documents and
custom objects in CE folders and being, of necessity, unaware of the specific document and custom
object subclass names being used for attachments at any given customer site. As a result, the default
query references the entire document and customobject pseudo-tables and joins these results with the
folder pseudo-table, which can result in performance issues if a customer has many other document and
custom object subclasses and instances in their system than those actually being used as attachments
with BPF.
One way of addressing this issue is for customers to customize CE SQL query (configured in BPF
Explorer under Applications Settings > Web Application) in a customer-specific fashion to provide
improved performance.
NOTES

BPF Development and Support will not support any such customizations beyond providing
examples, such as the following one, of how this might be done in principle.

Other, similar, queries for the Attachment tab and Viewer Documents List can also be found in
BPF Explorer under Applications Settings > Web Application as well, and could potentially be
customized in similar ways.

FileNet Corporation

BPF Performance Tuning Guide


BPF configuration tuning
The following is an example of how this query might be customized to improve performance.
By default, the DOCUMENT_LIST_PANEL_SQL CE query looks like this:
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,
d.isReserved, d.IsVersioningEnabled, f.FolderName, c.Bp8CaseID from ((Bp8Attachment a left
join Document d ON d.VersionSeries = a.Bp8VersionSeries) left join Folder f ON f.Id =
a.Bp8ObjectGUID) left join CustomObject c ON c.Id = a.Bp8ObjectGUID where a.Bp8CaseID = ^1
and ^2 order by a.Bp8ObjectType desc, f.FolderName asc, d.DocumentTitle asc

In the case of an actual BPF Case with Bp8CaseID 66746 and two attachments (one a Document and
one another Case object), the ^1 and ^2 are being replaced to produce the following actual CE query:
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,
d.isReserved, d.IsVersioningEnabled, f.FolderName, c.Bp8CaseID from ((Bp8Attachment a left
join Document d ON d.VersionSeries = a.Bp8VersionSeries) left join Folder f ON f.Id =
a.Bp8ObjectGUID) left join CustomObject c ON c.Id = a.Bp8ObjectGUID where a.Bp8CaseID = 66746
and (((VersionStatus = 1 OR VersionStatus is null) AND d.isCurrentVersion = True) OR
a.Bp8ObjectType = 15) order by a.Bp8ObjectType desc, f.FolderName asc, d.DocumentTitle asc

In the CE Catalog trace log, this CE SQL query is being converted to actual Microsoft T-SQL as follows
by CE itself before being executed against the object store database:

2006/02/25 00:55:34.546 0750 0034 Text0<SELECT T1.u41_bp8objectid, T1.u42_bp8objecttype,


T1.object_id, T2.u2e_documenttitle, T2.version_series_id, T2.version_status,
T2.major_version_number, T2.minor_version_number, T2.mime_type, T2.is_reserved,
T2.versioning_enabled, T3.name, T4.u3d_bp8caseid, T1.object_class_id, T1.security_id,
T2.object_class_id, T2.security_id, T3.object_class_id, T3.security_id, T4.object_class_id,
T4.security_id
FROM

Generic T1

left outer join (SELECT * FROM DocVersion D2 WHERE D2.home_id IS NULL) T2 on (


T2.version_series_id = T1.u47_bp8versionseries )
left outer join (SELECT * FROM Container D3 WHERE D3.home_id IS NULL) T3 on (
T3.object_id = T1.u45_bp8objectguid )
left outer join (SELECT * FROM Generic D4 WHERE D4.home_id IS NULL) T4 on (
T4.object_id = T1.u45_bp8objectguid )
WHERE T1.home_id IS NULL
AND T1.object_class_id IN (?)
and ( ( T1.u3d_bp8caseid = ? ) and ( ( ( ( T2.version_status = ? ) or ( T2.version_status is
null) ) and ( T2.is_current = 1 ) ) or ( T1.u42_bp8objecttype = ? ) ) )

ORDER BY

T1.u42_bp8objecttype DESC,

T3.name ,

T2.u2e_documenttitle >

2006/02/25 00:55:34.546 0750 0034 InBindings0<{1B2F8C97-5D9F-4099-98C9-6F4099A03359}, 66746,


1, 15>

The following is a example of a customized version of this query, which assumes that the customer in
question is using CustomObjects as attachments:
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,
d.isReserved, d.IsVersioningEnabled, f.FolderName from (Bp8Attachment a left join Document d
ON d.VersionSeries = a.Bp8VersionSeries) left join Folder f ON f.Id = a.Bp8ObjectGUID where
a.Bp8CaseID = ^1 and ^2 order by a.Bp8ObjectType desc, f.FolderName asc, d.DocumentTitle asc

In the case of an actual BPF Case with Bp8CaseID 66746 and two attachments (one a Document and
one another Case object), the ^1 and ^2 are being replaced to produce the following actual CE query:
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,

FileNet Corporation

BPF Performance Tuning Guide


BPF configuration tuning
d.isReserved, d.IsVersioningEnabled, f.FolderName from (Bp8Attachment a left join Document d
ON d.VersionSeries = a.Bp8VersionSeries) left join Folder f ON f.Id = a.Bp8ObjectGUID where
a.Bp8CaseID = 66746 and (((VersionStatus = 1 OR VersionStatus is null) AND
d.isCurrentVersion = True) OR a.Bp8ObjectType = 15) order by a.Bp8ObjectType desc,
f.FolderName asc, d.DocumentTitle asc

This query still returns any custom objects that might be attached to Case 66746, but without the extra
join to the CustomObject virtual table (and thus without the additional information such as c.Bp8CaseID
returned by the default query). As long as custom objects are not being used as attachments, this should
be no problem, and the resulting query should be faster because it avoids the extra join.
In the CE Catalog trace log, this CE SQL query is being converted to actual Microsoft T-SQL as follows
by CE itself before being executed against the object store database:
2006/02/25 01:04:00.250 0984 0230 Text0<SELECT T1.u41_bp8objectid, T1.u42_bp8objecttype,
T1.object_id, T2.u2e_documenttitle, T2.version_series_id, T2.version_status,
T2.major_version_number, T2.minor_version_number, T2.mime_type, T2.is_reserved,
T2.versioning_enabled, T3.name, T1.object_class_id, T1.security_id, T2.object_class_id,
T2.security_id, T3.object_class_id, T3.security_id
FROM

Generic T1

left outer join (SELECT * FROM DocVersion D2 WHERE D2.home_id IS NULL) T2 on (


T2.version_series_id = T1.u47_bp8versionseries )
left outer join (SELECT * FROM Container D3 WHERE D3.home_id IS NULL) T3 on (
T3.object_id = T1.u45_bp8objectguid )
WHERE T1.home_id IS NULL
AND T1.object_class_id IN (?)
and ( ( T1.u3d_bp8caseid = ? ) and ( ( ( ( T2.version_status = ? ) or ( T2.version_status is
null) ) and ( T2.is_current = 1 ) ) or ( T1.u42_bp8objecttype = ? ) ) )

ORDER BY

T1.u42_bp8objecttype DESC,

T3.name ,

T2.u2e_documenttitle >

2006/02/25 01:04:00.250 0984 0230 InBindings0<{1B2F8C97-5D9F-4099-98C9-6F4099A03359}, 66746,


1, 15>

The following is another example of a customized version of this query, which:

Assumes that the customer in question is not storing their attached documents in CE folders

Uses the Email CE document subclass, along with the CaseManagementDocuments CE


document subclass as an example to show how the CE SQL IsClass function can be used to
restrict the scope of a query to multiple specific CE document classes without searching all of the
remaining document classes in CE.

This avoids the extra joins to both Folder and CustomObject, and returns only Documents.
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,
d.isReserved, d.IsVersioningEnabled from Bp8Attachment a left join Document d ON
d.VersionSeries = a.Bp8VersionSeries where (IsClass(d, CaseManagementDocuments) or IsClass(d,
Email)) and a.Bp8CaseID = ^1 and ^2 order by a.Bp8ObjectType desc, d.DocumentTitle asc

In the case of an actual BPF Case with Bp8CaseID 66746 and two attachments (one a Document and
one another Case object), the ^1 and ^2 are being replaced to produce the following actual CE query:
select a.Bp8ObjectID as Id, a.Bp8ObjectType as ObjectType, a.Id as AttachID, d.DocumentTitle,
d.VersionSeries, d.VersionStatus, d.MajorVersionNumber, d.MinorVersionNumber, d.MimeType,
d.isReserved, d.IsVersioningEnabled from Bp8Attachment a left join Document d ON d.VersionSeries
= a.Bp8VersionSeries where (IsClass(d, CaseManagementDocuments) or IsClass(d, Email)) and
a.Bp8CaseID = 66746 and (((VersionStatus = 1 OR VersionStatus is null) AND d.isCurrentVersion =
True) OR a.Bp8ObjectType = 15) order by a.Bp8ObjectType desc, d.DocumentTitle asc
According to the CE Catalog trace log, this CE SQL query is being converted to actual Microsoft T-SQL
as follows by CE itself before being executed against the object store database:

FileNet Corporation

10

BPF Performance Tuning Guide


BPF configuration tuning

2006/02/25 01:35:26.875 0bdc 0882 Text0<SELECT T1.u41_bp8objectid, T1.u42_bp8objecttype,


T1.object_id, T2.u2e_documenttitle, T2.version_series_id, T2.version_status,
T2.major_version_number, T2.minor_version_number, T2.mime_type, T2.is_reserved,
T2.versioning_enabled, T1.object_class_id, T1.security_id, T2.object_class_id, T2.security_id
FROM

Generic T1

left outer join (SELECT * FROM DocVersion D2 WHERE D2.home_id IS NULL) T2 on (


T2.version_series_id = T1.u47_bp8versionseries )
WHERE T1.home_id IS NULL
AND T1.object_class_id IN (?)
and ( ( ( T2.object_class_id = ? ) or ( T2.object_class_id = ? ) ) and ( T1.u3d_bp8caseid =
? ) and ( ( ( ( T2.version_status = ? ) or ( T2.version_status is null) ) and ( T2.is_current
= 1 ) ) or ( T1.u42_bp8objecttype = ? ) ) )

ORDER BY

T1.u42_bp8objecttype DESC,

T2.u2e_documenttitle >

2006/02/25 01:35:26.875 0bdc 0882 InBindings0<{1B2F8C97-5D9F-4099-98C9-6F4099A03359},


{54E7A9C7-68AC-42D6-B865-B155275B7D43}, {95D9616A-1800-4499-BE69-8F6B64B82D91}, 66746, 1, 15>

NOTE Customers and project teams are responsible for developing and testing their own customized
versions of this and the other CE queries configured for the Attachment tab and Viewer Documents List
that can also be found in BPF Explorer under Applications Settings > Web Application as well, and could
potentially be customized in similar ways. Nor can BPF Development or Support guarantee any specific
performance gains for any such customizations.

Case fields Lookup fields


Lookups can be extremely expensive from a performance perspective. Internal lookups to the same
CE/PE environment used by BPF typically take between 100 and 300 milliseconds. External custom
lookups can obviously take much, much longer. Consider having a local copy of external data in the
Bp8Metastore database, or doing without the lookup altogether, if possible.

Web Application logging


Configuring the <bpf_web_root>\WEB-INF\log4j.xml file as follows (see the sections highlighted in bold) is
recommended as a way of reducing the level of logging as far as possible as a way of increasing
performance accordingly:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="bp8" class="org.apache.log4j.DailyRollingFileAppender">


<param name="File" value="${bp8.app_root}/WEB-INF/logs/bp8.log"/>
<param name="DatePattern" value=".yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%t] %c (%M:%L) - %m%n"/>
</layout>
</appender>

<appender name="Profiling" class="org.apache.log4j.DailyRollingFileAppender">


<param name="File" value="${bp8.app_root}/WEB-INF/logs/profiling.log"/>

FileNet Corporation

11

BPF Performance Tuning Guide


BPF configuration tuning
<param name="DatePattern" value=".yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%t] %c (%M:%L) - %m%n"/>

</layout>
</appender>

<appender name="external" class="org.apache.log4j.DailyRollingFileAppender">


<param name="File" value="${bp8.app_root}/WEB-INF/logs/external.log"/>
<param name="DatePattern" value=".yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%t] %c (%M:%L) - %m%n"/>

</layout>
</appender>

<logger name="com.filenet.wcm.api" additivity="false">


<level value="error"/>
<appender-ref ref="external"/>
</logger>

<logger name="Profiler" additivity="false">


<level value="error"/>
<appender-ref ref="Profiling"/>
</logger>

<logger name="com.filenet.bp8 " additivity="false">


<level value="error"/>
<appender-ref ref="bp8 "/>
</logger>

<root>
<level value="error"/>
<appender-ref ref="external"/>
</root>

</log4j:configuration>

Avoid large dynamic pick lists


Dynamic pick lists are SQL statements that retrieve information from a backend database in real time.
BPF does not cache the results of these SQL statements; they are executed each time the pick list is
used. If a Case field is configured to use such a pick list, and then this field is configured as an Inbasket
filter, a browse list column, and/or a regular Case field displayed on the Case tab for an Inbasket, then
each time it is used/referenced in any of these contexts, a round-trip to the server will be required, during
which the SQL statement will be executed and the results sent back to the client. For dynamic pick lists
containing hundreds of items or more, this is obviously a prohibitively expensive process and alternative
approaches should be considered. If the pick list is large because the design approach was to have a
FileNet Corporation

12

BPF Performance Tuning Guide


BPF configuration tuning
single table that is filtered at runtime to obtain a subset for a specific condition, consider creating separate
smaller pick lists to support each requirement.

Avoid large numbers of Read From Workflow fields


Read From Workflow is used when the work object value may be more current than the case object value
and you wish to read the work object value and synchronize it to the case object value upon Case open.
The cost of having BPF update CE from PE when the values do not match is relatively high. Consider
keeping the values synchronized by others means outside of BPF to avoid this overhead.

Annotation viewing
Currently there is a known significant performance issue in the FileNet Java Viewer when it checks for
annotations. Until a patch is available, it is suggested that annotation checking (and display) be turned off,
if possible. To implement this, the Java Viewer JSP file needs to be modified directly to disable
annotations: Workplace\UI-INF\jsp\ui\WcmJavaViewer.jsp. Contact CSS to request assistance in
modifying this file.

Bulk Processing
The bulk processing function in BPF was designed to process only a small number of Cases at a time
and there is a practical and physical limit as to how many objects can be processed at once. The
recommendation is therefore to keep the number of items below 50 at a time and definitely no more than
100 at a time. In addition to performance considerations within BPF, there are CE limitations (length of
the SQL query) that would not allow processing more than approximately 150 at a time.

Disable Inbasket(s) List on Search


Whenever a Case is opened from the Search Results list, BPF will display a list of all of the Inbaskets
available to the current users current Role or Security Profile in which that Case can be seen. If the
Cases work object is no longer active in Workflow, a message to that effect is displayed instead.
In implementations where each Role or Security Profile is associated with a large number of Inbaskets
(more than 30 seems to be a general point where this issue is first noticed), users may begin to notice
that it is taking a long time for BPF to open Cases from Search Results. This is because BPF executes
the same SQL search against the PE database for each of the Inbaskets configured for the current users
current Role or Security Profile (just as if it were pulling up each Inbasket in the Browse List) and then
displays the names of those Inbaskets for which count(*) is greater than 0. Once the number of Inbaskets
involved here reaches 30 or so, the time it takes BPF to execute those 30 or more SQL queries can
significantly slow down the opening of the Case.
For this reason, it is sometimes desirable to disable this feature entirely. Make the following changes
manually to the openCaseQueryInbasket function in the Bp8InitMain.js file (in red below):
function openCaseQueryInbasket() {
if (inbaskets.length == 0) {
showMessageScreen( localize( "QueryInbasketNotDefined", "Query Inbasket not
defined for this profile." ) );
return;
}
var objWO;
try {
objWO = RemoteFunctions.getWorkObjectsDOM( initialCase );
} catch (e) {return;}
objWO=null; // Add this line to disable Inbasket(s) feature.
var caseInbasketName = "";
var firstCaseWob;
/*-------------------------------------*/
// Add this line to disable Inbasket(s) feature.
if(objWO==null){
caseInbasketName="";
}else{
/*-------------------------------------*/

FileNet Corporation

13

BPF Performance Tuning Guide


Content Engine tuning
...
if(originCommandId == "9010"){
caseInbasketName = caseInbasketName + " | " + localize(
"InsufficientPrivilegeToProcessCase", "Insufficient privilege to process this Case" );
}
}
} // Add this line to disable Inbasket(s) feature. DONT FORGET THIS LINE!!!
document.getElementById('tdRoleTitle').innerHTML = caseInbasketName;
toolbarConfig( currentInbasketIndex );
selectCase( initialCase, firstCaseWob );
}

Add the lines as indicated in red above, close any IE browser sessions currently pointing to BPF, clear
the browser cache on each client machine, and then retry. The expected result is that you should not see
any message indicating the Inbasket(s) list and that your cases will open from the Search Results much
more quickly.

Content Engine tuning


Query Options
If customers are experiencing high response times when browsing and/or searching an object
store, adjusting the CE query options may prove beneficial. Two parameters may be tuned, and
can be accessed as follows:
1. Load FileNet Enterprise Manager.
2. Expand the Object Stores node.
3. Right click on your Object Store, and select Properties.
4. Select the Query tab. Under the Query tab, you can change the following parameters:

Enumeration Batch Size - The Enumeration Batch Size parameter refers to how may
enumerated items the CE will fetch in one request. By default, the Enterprise
Manager shows this value as zero. The actual batch size value used by the CE in this
situation is 20. Tests performed in the FileNet test lab showed improved performance
by increasing the parameters value to 50.

Default Query Batch Size - The Default Query Batch Size parameter refers to how
many items the CE will fetch per roundtrip to the server. By default, the Enterprise
Manager shows this value as zero. The actual batch size value used by the CE in this
situation is 20. Tests performed in the FileNet test lab showed improved performance
by increasing the parameters value to 50.

Disable trace logging


Consider turning off all trace logging through the Enterprise Manager, by navigating to the servers node
and turning off trace logging for each one by right-clicking its Trace Logging node and selecting Disable all
Components.

Index Content Engine Objects


Indexing certain table columns in the CE database can make a tremendous difference in terms of
improving performance. The BPF Installation Guide recommends indexing the following BPF-specific
FileNet Corporation

14

BPF Performance Tuning Guide


Content Engine tuning
properties:

Object
Bp8Attachment

Index field name


Bp8ObjectGUID

Bp8Attachment

Bp8Attachment_Bp8Case

Bp8AuditLogItem

Bp8AuditLogItem_Bp8Case

Bp8Case

Bp8CaseID

To accomplish this, do the following for each of the items previously listed using FileNet Enterprise
Manager:
1. Navigate to Enterprise Manager > {os display name} > Other Classes > Custom Object > Bp8Object.
2. Right click on the appropriate object.
3. Select Properties.
4. Select Property Definitions tab.
5. Check the Inherited Properties check box.
6. Select the appropriate field name.
7. Click Edit.
8. Verify that the Indexed text box has value of single indexed. If not:
a. Click Set/Remove button.
b. Click Set radio button
c.

Check Single Indexed checkbox.

d. Click OK.
9. Click OK to close properties page.

In addition, it has been found that putting database indexes on the object_class_id column of both the
Generic and DocVersion tables in the CE object store (directly through the RDBMS) can provide a
significant performance boost for BPF, even though object_class_id is not a BPF-specific property.

FileNet Corporation

15

BPF Performance Tuning Guide


Process Engine tuning

Process Engine tuning


In addition to the remarks found in the FileNet P8 Platform 4.0 Performance Tuning Guide, be sure to
consult the FileNet P8 Platform documentation under the following topic:
FileNet P8 Documentation > FileNet P8 > Process Engine Administration > System administration tasks
> Improving system performance

Purge workflow event log


Consult the FileNet P8 Platform documentation under the following topic:
FileNet P8 Documentation > FileNet P8 Administration > Process Engine Administration >
Administrative Tools > vwlog > Purging data from the event logging table

Disable unnecessary events


Certain event logging options cause slight performance degradation. The overall degradation is about five
percent on the server, with no noticeable degradation on the PC workstation. You can, for example,
enable or disable logging for a specific event category in an isolated region through the Process
Configuration Console. For more information, see the Process Configuration Console online help. This
can be done by un-checking the Work Item Messages you can do without from with Process
Configuration Console under the Event Logging Options tab for the isolated region. Please consult the
FileNet P8 Platform documentation for more details.

Create indices
Make sure to create indices on the queue fields defined as sortable columns in BPF Inbaskets.

Turn off VWRouter logging


In Process Task Manager, make sure that the logging is turned off for your router by setting the Debug
Level to Off.

Monitor number of server processes


On the General tab of the Process Pooled Manager console, monitor the Server Processes in Use value
and compare it with the Max Processes value configured there. If the value of Server Processes in Use is
consistently near the Max Processes value, consider setting the Max Processes value higher.

FileNet Corporation

16

BPF Performance Tuning Guide


Web Application container tuning

Web Application container tuning


In general, be sure to consult the BEA documentation found at the following address for further details
regarding the information found below: http://edocs.bea.com/platform/docs81/.

Internet Explorer settings


Cache settings
It is recommended that the IE cache setting is set to Automatic on user desktops to achieve best
performance. To verify or correct the browser settings, open Tools > Internet Options > General tab >
Settings and make sure the Check for Newer Versions of Stored Pages is set to Automatically. The BPF
Web Application was optimized to take advantage of browser object caching in order to reduce network
load and improve both server and client performance. Allowing for automated IE cache handling and
having allocated at least 5 MB to cache is advantageous.

BEA WebLogic
Web container thread pool settings
The thread count value should be set to a value greater than or equal to maximum user load your
application can have at a time. For example, if an application can have as many as 100 users connected
and working at a time, then the minimum recommended value for max connections would be 100.

Turning off servlet reloading


Use a text editor to add the following child element with the following value to the container-descriptor
element of the weblogic.xml file used by the BPF Web Application:
<container-descriptor>
...
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
</container-descriptor>

Tuning the default execute queue threads


The value of the ThreadCount attribute of an ExecuteQueue element in the config.xml file equals the
number of simultaneous operations that can be performed by applications that use the execute queue. As
work enters an instance of WebLogic Server, it is placed in an execute queue. This work is then assigned
to a thread that does the work on it. Threads consume resources, so handle this attribute with care-you
can degrade performance by increasing the value unnecessarily.
By default, a new WebLogic Server instance is configured with a development mode execute queue,
weblogic.kernel.default that contains 15 threads. In addition, the WebLogic server provides two other
pre-configured queues:

weblogic.admin.HTTP Available only on administration servers, this queue is reserved for


communicating with the administration console; you cannot reconfigure it.

weblogic.admin.RMI Both administration servers and managed servers have this queue; it is
reserved for administrative traffic; you cannot reconfigure it.

Unless you configure additional execute queues, and assign applications to them, Web Applications and
RMI objects use weblogic.kernel.default.

Modifying the default thread count


To modify the default execute queue thread count using the administration console:
FileNet Corporation

17

BPF Performance Tuning Guide


Web Application container tuning
1. Start the administration server if it is not already running.
2. Access the administration console for the domain.
3. Expand the Servers node in the left pane to display the servers configured in your domain.
4. Right-click the name of the server instance that contains the execute queue you want to configure,
and then select View Execute Queues on the pop-up menu to display a table of execute queues that
can be modified.
NOTE You can only modify the default execute queue for the server or a user-defined execute queue.
5. In the Name column, click directly on the default execute queue name to display the Configuration tab
for modifying execute queues.
6. Locate the Thread Count value and increase or decrease it, as appropriate.
7. Click Apply to save your changes.
8. Reboot the selected server to enable the new execute queue settings.

Connection pool size


Maximum capacity
In the JDBC Connection Services > JDBC > Connection Pool > Configuration > Connections tab, you can
specify the number of connections in the connection pool and details for each connection in the
connection pool.
A connection pool contains a group of JDBC connections that are created when the connection pool is
registered, usually when starting up WebLogic server. Your application borrows a connection from the
connection pool, uses it, then returns it to the connection pool by closing it
This value should be set to a value greater than or equal to maximum user load your application can have
at a time. For example if an application can have more up to 100 users connected and working at a time
than minimum recommended value for max connections would be 100.

Initial capacity
The Initial Capacity setting specifies the minimum number of physical connections to maintain. Until this
number is reached, the pool maintenance thread does not discard physical connections. This value
should be set to a reasonable number depending upon customer's requirement.

Heap Size
Initial and maximum heap size
The preceding changes are made through the administration console and saved in BEA's config.xml file.
By contrast, you need to make this change and the following changes by altering the actual script that is
used to start up the BEA WebLogic server instance. Specifically, the -Xmx and
-Xms flags passed to the java.exe need to be (re)configured.

FileNet Corporation

18

BPF Performance Tuning Guide


Web Application container tuning
For example:
-Xms<size>
-Xms sets the initial and minimum size of the heap. For this, we recommend that you set it to
the same size as the maximum heap size; for example:
-java -Xgcprio:throughput -Xmx:64m -Xms:64m myClass

Please consult the online BEA documentation at http://e-docs.bea.com/wls/docs81/perform/


for further details on the advantages of setting -Xmx and -Xms to the same value.

topten.html#1120355

Initial heap size specifies the initial heap size available to the JVM code, in megabytes. Increasing the
minimum heap size can improve startup. In general, increasing the size of the Java heap improves
throughput until the heap no longer resides in physical memory. After the heap begins swapping to disk,
Java performance suffers drastically.
The physical memory usage must be shared between the JVM and the other applications, such as, the
database. For assurance, use a smaller heap, for example 64MB, on machines with less memory.
Try a maximum heap of 256MB on a smaller machine, that is, less than 1GB of physical memory, 512MB
for systems with 2GB memory, and 1024MB for larger systems. The minimum heap size depends on the
application. Setting the minimum heap size equal to the maximum avoids the onset of garbage collection
activity. Subsequent garbage collection cycles are fewer, but have a longer duration that can affect
performance.
As per the FileNet P8 Platform 4.0 Performance Tuning Guide, it is recommended that you adhere to the
following BEA recommendations:
For clients running WLS 7.x, BEA recommends that 80 - 85% of the machines physical memory is
allocated to the heap, as long as that value does not exceed 1 GB. Clients running WLS 8.x should
follow the same rule, however they should not exceed a heap of 2 GB in size. In addition, BEA
suggests that the minimum and maximum values for the heap be equal. For both versions of WLS,
the suggestion above assumes that users are running a single instance of WLS.
The arguments listed below would be added to your startup script if you were to allocate a minimum and
maximum size of 1 GB to your heap:
-Xms1024m -Xmx1024m

JIT compiler settings


Where possible, you should use a Just-in-Time (JIT) compiler when running the WebLogic server. JVMs
with JITs include those from Sun Microsystems and Symantec. Good performance improvements have
been noted from the use of JITs.
Please ensure that

FileNet Corporation

-Djava.compiler=NONE

is NOT set in server startup script.

19

BPF Performance Tuning Guide


Web Application container tuning

HTTP connection timeout


It is recommended to increase the HTTP connection timeout in from the default 5 seconds to 10 seconds
or more seconds modifying ConnectionIOTimeout and ConnectionKeepAliveTimeout parameters in
WebSphere administrative console. Changing these parameters is required to resolve timeout and xml
parsing errors that might be observed on a slow or busy network connections. Follow the instructions in
the link:
http://publib.boulder.ibm.com/iseries/v1r1m0/websphere/ic2924/index.htm?info/rzaiz/50/admin/acsht
tpcp.htm, specifically the following:

ConnectionIOTimeout Specifies the maximum number of seconds to wait when trying to read
or process data during a request.
The default value is five seconds. This value determines how long the application server waits
while receiving two subsequent data packets for the same HTTP request. For example, with the
default ConnectionIOTimeout setting of five seconds, if an HTTP client sends two data packets
spaced six seconds apart, the process times out, and the server throws a
java.io.InterruptedIOException error. The server terminates the HTTP request, and the HTTP
client must resubmit the request.

ConnectionKeepAliveTimeout Specifies the maximum number of seconds to wait for the next
request on a keep-alive connection.

FileNet Corporation

20

BPF Performance Tuning Guide


Web Application container tuning

IBM WebSphere
Servlet caching
Configuring servlet caching
Enable servlet caching to save the output of servlets in memory using the dynamic cache service.
Enabling the dynamic cache service improves application performance by caching the output of servlets,
Web services, and WebSphere commands into memory

Before you begin


To enable servlet caching, you must complete enabling the dynamic cache service.

Steps for enabling servlet cache


Open the administrative console.
1. Click Servers > Application Servers in the console navigation tree.
2. Click a server.
3. Click Web Container.
4. Select Enable servlet caching under the Configuration tab.
5. Click Apply or OK.
6. Restart the WebSphere application server.

Steps for enabling dynamic cache service


You can enable dynamic cache service to improve response time. Use the administrative console to
make configuration changes:
1. Select Servers > Application servers > server_name > Container services > Dynamic cache service.
2. Click on the Configuration tab.
3. Select the Enable Service at Server Startup option.

Web container thread pool settings


Requests are sent to the server through any of the HTTP transport channels or HTTP transports. A
thread pool enables components of the server to reuse threads to eliminate the need to create new
threads at run time. Creating new threads expends time and resources.
To view this administrative console page, click Servers > Application Servers > server_name > Thread
Pools > Thread Pool. (You can reach this page through more than one navigational route.)
Maximum value should be set to a value greater than or equal to maximum user load your application can
have at a time. For example if an application can have more than 100 users connected and working at a
time than minimum recommended value for max connections would be 100.

FileNet Corporation

21

BPF Performance Tuning Guide


Web Application container tuning

Connection Pool size


JDBC max connections
Max connections specify the maximum number of physical connections that you can create in this pool.
These are the physical connections to the backend resource. Once this number is reached, no new
physical connections are created and the requester waits until a physical connection that is currently in
use returns to the pool, or a ConnectionWaitTimeoutException is thrown.
This value should be set to a value greater than or equal to maximum user load your application can have
at a time. For example if an application can have more than 100 users connected and working at a time
than minimum recommended value for max connections would be 100.

JDBC min connections


Min connections specify the minimum number of physical connections to maintain. Until this number is
reached, the pool maintenance thread does not discard physical connections. However, no attempt is
made to bring the number of connections up to this number. If you set a value for Aged Timeout, the
minimum is not maintained. All connections with an expired age are discarded. This value should be set
to a reasonable number depending upon customer's requirement.

Heap size
Initial heap size specifies the initial heap size available to the JVM code, in megabytes. Increasing the
minimum heap size can improve startup. For the WebSphere application server, the number of garbage
collection occurrences is reduced and a 10% gain in performance is realized.
In general, increasing the size of the Java heap improves throughput until the heap no longer resides in
physical memory. After the heap begins swapping to disk, Java performance suffers drastically.
The physical memory usage must be shared between the JVM and the other applications, such as, the
database. For assurance, use a smaller heap, for example 64MB, on machines with less memory.
Try a maximum heap of 256MB on a smaller machine, that is, less than 1GB of physical memory, 512MB
for systems with 2GB memory, and 1024MB for larger systems. The minimum heap size depends on the
application. Setting the minimum heap size equal to the maximum avoids the onset of garbage collection
activity. Subsequent garbage collection cycles are fewer, but have a longer duration that can affect
performance.
As per the FileNet P8 Platform 4.0 Performance Tuning Guide, it is recommended that you adhere to the
following IBM recommendations:
For Solaris customers running WS 5.0.x, it is recommended that 80 - 85% of the machines physical
memory is allocated to the heap, as long as that value does not exceed 1 GB. Clients running WAS
5.1.x on Solaris should follow the same rule, however should not exceed a heap of 2 GB in size.
For Windows customers running WebSphere, it is suggested that 80 - 85% of the machines physical
memory be allocated to the heap regardless of the version of WS being used.
NOTE Both suggestions made above assume only a single instance of WS in running on the system.
The arguments listed below would be added to your startup script if you were to allocate a minimum and
maximum size of 1 GB to your heap:
-Xms1024m -Xmx1024m

FileNet Corporation

22

BPF Performance Tuning Guide


Web Application container tuning

JIT compiler settings


The Just In Time (JIT) compiler can significantly affect performance. In all cases, run with JIT enabled,
which is the default. To enable JIT:
1. Click Servers > Application Servers > server_name.
2. Click the Process Definition > Java Virtual Machine under Additional Properties.
3. Deselect the Disable JIT checkbox if selected.
4. Click Apply or OK.
5. Click Save.
6. Stop and restart the application server.

FileNet Corporation

23

BPF Performance Tuning Guide


Notices and License Agreements

Notices and License Agreements


Notices
FileNet P8 Platform documentation contains information proprietary to FileNet Corporation (FileNet). Due
to continuing product development, product specifications and capabilities are subject to change without
notice. You may not disclose or use any proprietary information or reproduce or transmit any part of this
documentation in any form or by any means, electronic or mechanical, for any purpose, without written
permission from FileNet. FileNet has made every effort to keep the information in the documentation
current and accurate as of the date of publication or revision. However, FileNet does not guarantee or
imply that the documentation is error-free or accurate with regard to any particular specification. In no
event will FileNet be liable for direct, indirect, special incidental, or consequential damages resulting from
any defect in the documentation, even if advised of the possibility of such damages. No FileNet agent,
dealer, or employee is authorized to make any modification, extension, or addition to the above
statements. FileNet may have patents, patent applications, trademarks, copyrights, or intellectual property
rights covering subject matter in this document. Furnishing this document does not provide any license to
these patents, trademarks, copyrights, or other intellectual property. FileNet is a registered trademark of
FileNet corporation. Copyright 2002, 2007 FileNet Corporation. All rights reserved.
Java and Java-based trademarks are trademarks of Sun Microsystems, Inc., in the U.S. and other
countries. FileNet Corporation is independent of Sun Microsystems, Inc.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the
United States, other countries, or both.
Copyright 1998-2003 VERITAS Software Corporation. All rights reserved. VERITAS, the VERITAS
logo, VERITAS Cluster Server and all other VERITAS product names and slogans are trademarks or
registered trademarks of VERITAS Software Corporation. VERITAS and the VERITAS Logo Reg. U.S.
Pat. & Tm. Off.
Entrust is a trademark of Entrust, Inc. in certain countries. Entrust is a registered trademark of Entrust,
Inc. in the United States and other countries. In Canada, Entrust is a registered trademark of Entrust
Technologies Limited. All Entrust product and program names are trademarks of Entrust, Inc.
All other brands, products, and company names mentioned are trademarks of their respective owners.
Portions of this software were developed by FileNet Corporation using cURL. The contents of this file are
subject to the Mozilla Public License Version 1.1 (the "License"). You may obtain a copy of the License at
http://www.mozilla.org/MPL/. Software distributed under the License is distributed on an "as is" basis,
without warranty of any kind, either express or implied. See the License for the specific language
governing rights and limitations under the License."
Portions of the documentation were developed by FileNet Corporation using Tigra Tree Menu from
SoftComplex, Inc.
This product includes 3rd-party software listed below.

This product includes software developed by the Apache Software Foundation


(http://www.apache.org/). This product incorporates an Apache Software Foundation XML Parser,
Apache HTTPD, Apache Xerces, Apache Xalan, Apache SOAP, Apache log4j, the Java Apache
Mail Enterprise Server (James), and a documentation search feature powered by Apache Jakarta
Lucene. Copyright 1999-2005 The Apache Software Foundation. All rights reserved. Apache
License, Version 2.0. Some Apache software may be licensed under Apache License, Version
1.1.

FileNet Corporation

24

BPF Performance Tuning Guide


Notices and License Agreements

Used with the Apache Lucene search engine is PDFBox, a Java PDF Library.

2001 Liquent, Inc. All rights reserved. This software is provided under a license agreement with
Liquent. Use of this software and all related documentation is subject to and limited by the terms
and conditions stated in such software license agreement.

Includes the Verity K2. Copyright 2002, All Rights Reserved.

See the Centera License Agreement in the following section for copyright information pertaining
to EMC Centera.

See the Jaxen License Agreement in the following section for copyright information pertaining to
Jaxen.

CONTAINS IBM(R) 32-bit Runtime Environment for AIX(TM), Java(TM) 2 Technology Edition,
Version 1.4 Modules. Copyright IBM Corporation 1999, 2002 All Rights Reserved.

License Agreements
Apache License Agreement, Version 1.1
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must include the following
acknowledgment:
4. "This product includes software developed by the Apache Software Foundation
(http://www.apache.org/)."
5. Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party
acknowledgments normally appear.
6. The names "Apache" and "Apache Software Foundation" must not be used to endorse or promote
products derived from this software without prior written permission. For written permission, please
contact [email protected].
7. Products derived from this software may not be called "Apache", nor may "Apache" appear in their
name, without prior written permission of the Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE
SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

Apache License Agreement, Version 2.0


Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
FileNet Corporation

25

BPF Performance Tuning Guide


Notices and License Agreements
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by
Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting
the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled
by, or are under common control with that entity. For the purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii)
beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this
License.
"Source" form shall mean the preferred form for making modifications, including but not limited to
software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source
form, including but not limited to compiled object code, generated documentation, and conversions to
other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under
the License, as indicated by a copyright notice that is included in or attached to the work (an example
is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or
derived from) the Work and for which the editorial revisions, annotations, elaborations, or other
modifications represent, as a whole, an original work of authorship. For the purposes of this License,
Derivative Works shall not include works that remain separable from, or merely link (or bind by name)
to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any
modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to
Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity
authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent to the Licensor or its
representatives, including but not limited to communication on electronic mailing lists, source code
control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication that is
conspicuously marked or otherwise designated in writing by the copyright owner as "Not a
Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution
has been received by Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform,
sublicense, and distribute the Work and such Derivative Works in Source or Object form.

FileNet Corporation

26

BPF Performance Tuning Guide


Notices and License Agreements
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as
stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise
transfer the Work, where such license applies only to those patent claims licensable by such
Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their
Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent
litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the
Work or a Contribution incorporated within the Work constitutes direct or contributory patent
infringement, then any patent licenses granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in
any medium, with or without modifications, and in Source or Object form, provided that You meet the
following conditions:
a. You must give any other recipients of the Work or Derivative Works a copy of this License; and
b. You must cause any modified files to carry prominent notices stating that You changed the files;
and
c.

You must retain, in the Source form of any Derivative Works that You distribute, all copyright,
patent, trademark, and attribution notices from the Source form of the Work, excluding those
notices that do not pertain to any part of the Derivative Works; and

d. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that
You distribute must include a readable copy of the attribution notices contained within such
NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at
least one of the following places: within a NOTICE text file distributed as part of the Derivative
Works; within the Source form or documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and wherever such third-party notices
normally appear. The contents of the NOTICE file are for informational purposes only and do not
modify the License. You may add Your own attribution notices within Derivative Works that You
distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such
additional attribution notices cannot be construed as modifying the License. You may add Your
own copyright statement to Your modifications and may provide additional or different license
terms and conditions for use, reproduction, or distribution of Your modifications, or for any such
Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work
otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally
submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions. Notwithstanding the above, nothing herein
shall supersede or modify the terms of any separate license agreement you may have executed with
Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service
marks, or product names of the Licensor, except as required for reasonable and customary use in
describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides
the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without
limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks associated with Your
exercise of permissions under this License.

FileNet Corporation

27

BPF Performance Tuning Guide


Notices and License Agreements
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent
acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct,
indirect, special, incidental, or consequential damages of any character arising as a result of this
License or out of the use or inability to use the Work (including but not limited to damages for loss of
goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages
or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof,
You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other
liability obligations and/or rights consistent with this License. However, in accepting such obligations,
You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other
Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any
liability incurred by, or claims asserted against, such Contributor by reason of your accepting any
such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields
enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)
The text should be enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on the same "printed
page" as the copyright notice for easier identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the specific language governing permissions and limitations under
the License.

Centera License Agreement


Copyright 2003 EMC Corporation. All rights reserved.
EMC believes the information in this publication is accurate as of its publication date. The information is
subject to change without notice.
THE INFORMATION IN THIS PUBLICATION IS PROVIDED "AS IS." EMC CORPORATION MAKES NO
REPRESENTATIONS OR WARRANTIES OF ANY KIND WITH RESPECT TO THE INFORMATION IN
THIS PUBLICATION, AND SPECIFICALLY DISCLAIMS IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Use, copying, and distribution of any EMC software described in this publication requires an applicable
software license.
Copyright 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved.
License to copy and use this software is granted provided that it is identified as the "RSA Data Security,
Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this
function. RSA Data Security, Inc. makes no representations concerning either the merchantability of this
software or the suitability of this software for any particular purpose. It is provided "as is" without express
or implied warranty of any kind.

FileNet Corporation

28

BPF Performance Tuning Guide


Notices and License Agreements
These notices must be retained in any copies of any part of this documentation and/or software.
Copyright (c) 1995-2002 International Business Machines Corporation and others. All rights
reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so, provided that the above
copyright notice(s) and this permission notice appear in all copies of the Software and that both the above
copyright notice(s) and this permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO
EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

PDFBox License Agreement


Copyright (c) 2003, www.pdfbox.org.
All rights reserved.
1. Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
2. Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
3. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution.
4. Neither the name of pdfbox; nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

FileNet Corporation

29

BPF Performance Tuning Guide


Notices and License Agreements

Jaxen License Agreement


Jaxen LICENSE,v 1.3 2002/04/22 11:38:45 jstrachan
Copyright (C) 2000-2002 bob mcwhirter & James Strachan.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the
following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and
the disclaimer that follows these conditions in the documentation and/or other materials provided with
the distribution.
3. The name "Jaxen" must not be used to endorse or promote products derived from this software
without prior written permission. For written permission, please contact [email protected].
4. Products derived from this software may not be called "Jaxen", nor may "Jaxen" appear in their name,
without prior written permission from the Jaxen Project Management ([email protected]).
In addition, we request (but do not require) that you include in the end-user documentation provided with
the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This
product includes software developed by the Jaxen Project http://www.jaxen.org/)." Alternatively, the
acknowledgment may be graphical using the logos available at http://www.jaxen.org/.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE Jaxen
AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals on behalf of the Jaxen Project
and was originally created by bob mcwhirter <[email protected]> and James Strachan
<[email protected]>. For more information on the Jaxen Project, please see
<http://www.jaxen.org/>.

FileNet Corporation

30

You might also like