BPF System Overview
BPF System Overview
System Overview
Table of contents
High-level architecture ............................................................................................ 5
Overview .......................................................................................................................................... 5
Case management........................................................................................................................... 6
Domain object model ....................................................................................................................... 6
Physical model ................................................................................................................................. 6
Content Engine object ............................................................................................................... 7
Workflow object ......................................................................................................................... 8
Abstraction model ............................................................................................................................ 8
BPF Case management concepts............................................................................................. 8
BPF tools and components ..................................................................................................... 11
Added benefits......................................................................................................................... 12
Data integration ....................................................................................................................... 12
Architecture .................................................................................................................................... 15
Data Tier .................................................................................................................................. 16
BPF Business Tier................................................................................................................... 16
Client Tier ................................................................................................................................ 19
Security model ...............................................................................................................................19
Authentication .......................................................................................................................... 19
Authorization............................................................................................................................ 19
Extensibility .................................................................................................................................... 20
FileNet Corporation 3
BPF System Overview
Table of contents
Tools........................................................................................................................................ 40
Object Viewer.......................................................................................................................... 42
BPF Search............................................................................................................................. 43
User preferences..................................................................................................................... 44
Bulk processing....................................................................................................................... 44
Sign Out .................................................................................................................................. 45
Localization ............................................................................................................................. 45
BPF Business and Client Tiers extensibility .................................................................................. 45
BPF Web Application tools ..................................................................................................... 45
BPF Web Application tabs ...................................................................................................... 45
BPF lookup handler................................................................................................................. 46
BPF Web Client JavaScript API.............................................................................................. 46
BPF Business Services Java adaptor interfaces .................................................................... 46
BPF Web Application user preferences .................................................................................. 47
BPF Web Client user interface customizations....................................................................... 48
BPF configuration.................................................................................................................... 49
Case User Interface....................................................................................................................... 51
Case fields .............................................................................................................................. 51
Tabs ........................................................................................................................................ 51
BPF Search ................................................................................................................................... 52
Globalization and localization ........................................................................................................ 52
Globalization ........................................................................................................................... 52
Localization ............................................................................................................................. 52
BPF Explorer ................................................................................................................................. 54
Architecture ............................................................................................................................. 54
Features and functionality ....................................................................................................... 56
BPF Operations - Component Integrator Component ................................................................... 60
Architecture ............................................................................................................................. 60
Logging ................................................................................................................................... 60
Create object........................................................................................................................... 60
Flow of events ......................................................................................................................... 60
Create Case ............................................................................................................................ 61
Update Case ........................................................................................................................... 63
Attach document ..................................................................................................................... 64
Log event ................................................................................................................................ 65
Deployment.................................................................................................................................... 66
Packaging ............................................................................................................................... 66
Deployment types ................................................................................................................... 68
Versioning ............................................................................................................................... 68
Error and trace logging .................................................................................................................. 69
Error logging via Log4j ............................................................................................................ 69
Trace logging via AspectJ ....................................................................................................... 71
Action dispatcher logging ........................................................................................................ 72
Utilities ........................................................................................................................................... 73
Workflow Region Maintenance tool ........................................................................................ 73
Workflow Map Import tool ....................................................................................................... 73
4 FileNet Corporation
BPF System Overview
High-level architecture
High-level architecture
Overview
Business Process Framework (BPF) is a case management framework. It operates with complex
business objects as opposed to BPM, which operates with workflow objects, or ECM that operates
with documents, when manipulated with Workplace. A BPF business object (referred to as a Case), is
a collection of custom objects in a Content Engine (CE) repository, which include the Case object
itself, attachment objects (documents, folders, etc), audit log event objects, etc. A BPF Case may or
may not be related to one or more workflow objects. BPF is always operating with a Case, although it
could be configured to mimic BPM step processor behavior. BPF presents the business object in a
consistent and intuitive manner, hiding the complexity of the different components stored and
managed in distinctly different repositories, allowing for synchronization of the Case, its documents,
and workflow. BPF transactions are significantly more complex than the typical BPM or ECM
transactions, as one BPF transaction initiates multiple CE and Process Engine (PE) object
transactions.
BPF is also a FileNet Professional Services delivery approach that employs consistent, reusable code
and tools that FileNet Professional Services use to create custom case management applications.
BPF includes:
• Consistent and configurable web user interface for both private and public Inbaskets
• Configurable case user Interface for work presentation
• Case search capabilities
• Configurable plug-in architecture for extendibility
• BPF Explorer – A comprehensive configuration tool
• Complete CE/PE integration to fully leverage all FileNet P8 Platform functionality
FileNet Professional Services originally designed BPF during the later part of 2000, utilizing the
Panagon IDM Web Services API. BPF was ported to the FileNet P8 Platform during the later part of
2003. The internal BPF design concepts were migrated to BPF (internally known as Bp8) and further
enhanced to take advantage of the features offered by the FileNet P8 Platform. The major
architectural changes made were the J2EE platform support and using CE as a repository for
business objects.
This document describes the BPF architecture in detail.
FileNet Corporation 5
BPF System Overview
High-level architecture
Case management
BPF as a case management solution provides a framework for the development and deployment of
business solutions based on the integration of content and workflow management. The central
concept behind a case management solution is the Case. CE provides content management
services, the PE provides business process services; the Case file provides integration between the
two.
BPF Case management:
• Is based on J2EE platform
• Is CE/PE centric
• Stores the Case data in the CE object store
• Leverages the object management capabilities of CE to provide more flexible interactions
between CE and workflow
• Leverages the CE API to enforce standardized integration with LDAP
• Leverages the BPM Component Integrator for Case related background processes
The key differences between BPF and the Workplace tasks are:
• Added Case management control
• Entity of a Case (collection of data, documents, and events) is kept intact even after the work
is complete
• Adds new documents or attaches existing documents or folders from CM repository
• Requirement to push work to users
• Role based work distribution and work management requirements
• Complex prioritization and sorting criteria
• Effective and readily available logging of system events
• More flexible user interface functionality (pick lists, validations, response driven events, etc.)
Physical model
The physical model describes where and how the Case object data is stored.
6 FileNet Corporation
BPF System Overview
High-level architecture
Bp8Case Class
Properties :
BP8CaseID
Bp8AuditLog Class
Properties :
?????
Bp8Attachment Class
Properties :
BP8ObjectID
BP8ObjectType
…….
Document object1
Properties :
Association 1 Property 1
Property N
Document object1
Attachment object N Properties :
Properties : Association N Property 1
ObjectID = 654321 Property N
ObjectType = CEProxy
In this release, a single BPF application is supported with a single CE object repository only.
FileNet Corporation 7
BPF System Overview
High-level architecture
Workflow object
A BPF Case can relate to zero or more workflows. A Case object is associated with the workflow
object(s) via the Case ID. Each defined workflow utilized in a BPF case management solution must
have the Bp8CaseID field defined. BPF generates the Case ID when a Case object is created and
synchronizes the field values for the CE and PE objects.
It is possible for a Case to have multiple active work objects associated with it. This could be due to a
workflow object split or a parallel workflow process. Each workflow object should have the same
Bp8CaseID field value to be linked to the Case object.
In this release, a single BPF application supports a single workflow region in a single server
configuration, e.g. all workflow queues must reside in the same PE database.
Abstraction model
The abstraction model describes an enhanced Case object model that serves as a facet for the
external clients utilizing the BPF Business Tier.
The BPF metadata provides this abstraction layer, which allows extending and customizing of the
object model and its visualization based on the business requirements. All BPF metadata is stored in
the BPF Metastore database and is managed via the BPF Explorer tool.
User
Users are defined in an LDAP enterprise directory BPF caches user account in BPF Metastore upon
user logon to extend it with the following attributes:
• Default security profile
• Supervisor's name
• Department level membership
• Company level membership
• PE user ID
• User-defined attributes
8 FileNet Corporation
BPF System Overview
High-level architecture
Case
A BPF Case represents an individual business transaction and is an instance of the Bp8Case custom
object. It is comprised of the following objects:
• Zero or more PE work objects
• Zero or more Bp8Attachment attachment objects in a repository
• One or more Bp8AuditLog objects in a repository
Case field
A BPF Case field represents transactional data stored with the case and is defined by the following:
• Field name – Can be referenced via the BPF Web Application.
• Display label – As displayed in the BPF Web Application.
• Field type – Defines the presentation and format of the field. Field types include:
o String
o Integer
o Money
o Date/time
o Boolean
o Workflow user group
• Pick list (optional) – An associated list of values for the Case field.
• Name of the CE Case custom object property – The Case field value will be written to this
property when the Case is updated.
• Name of the CE document class property (for attachments) – The Case field value will be
written to this property when the Case is updated.
• Name of the PE workflow object property – The Case field value will be written to this
property when the Case is updated.
• Field data source – Defines whether the Case field value is read from the CE or PE property
when the Case is open.
• Visualization parameters – Number of rows, maximum number of characters, etc.
Pick list
A pick list is a collection of predefined property values that present a list of valid choices. A pick list
can be assigned to one or multiple Case fields. A pick list typically is comprised of ID, Code (short
value), Description (longer description), and an Active Flag. A pick list can also contain additional
user defined columns. A pick list can be a static list, or a dynamically generated list defined via a SQL
statement.
Pick list values can be localized (native language support).
FileNet Corporation 9
BPF System Overview
High-level architecture
Case type
A Case type is a collection of attributes and features that uniquely identify a Case object type that
implements a business object for a specific business function. A Case type is comprised of the
following:
• A unique set of Case fields
• Default CE Case object class name
• Default CE attachment document class name
• Default workflow name
Default values for the fields indicated above could be overwritten using the BFP Business Services
interfaces.
A Case type defines the unique user interface layout for the Case object. BPF allows you to modify
the Case object's Case type during runtime, which allows for re-classification of the object without
changing its object class in CE.
Inbasket
An Inbasket is a feature that allows locating and processing BPF Cases in the context of workflow.
Inbaskets in the BPF Web Application provide an interface that delivers a browseable, filtered access
to workflow queue(s) based on the user role. Inbaskets provide access to Case objects rather than
workflow objects. A workflow queue, step, and security profile are always needed to configure an
Inbasket. This means that there are as many Inbasket definitions as combinations of work
queues/steps and roles.
Inbaskets are defined by the following:
• Filtered view of workflow queue contents
o Queue Filters – These configured filters determine what the user can see in the queue.
o Inbasket Filters – These are configurable filter options that the user can invoke to further
limit the Inbasket list.
• Sort order
o Sort order prioritizes work delivery for users and can be based on a single field, a
combination of fields, or a complex SQL custom function.
o User column sorting is configurable, each column supporting complex sorting criteria.
• Case browse list columns
• Case level functions
o Tools that can be exposed to the user depending on the role (Add document, Create New
Case, etc.)
• Case level actions
o Actions map to the responses found on the process map.
o Actions may have required specific fields be filled in.
o Actions may prompt for additional input or reasons.
o Actions can have custom code plugged in for execution.
10 FileNet Corporation
BPF System Overview
High-level architecture
BPF search
BPF search is a function within the BPF Web Application that allows locating and opening of BPF
Cases outside the context of a workflow. BPF search is based on the CE stored search templates.
The user's access to BPF search templates and the Case object instances is controlled via the CE
Access Control List (ACL).
BPF operations
The BPF operations are Component Integrator-based Java adapters that are designed to provide a
number of case management functions, including: Create Case, Log Event, Update Case, etc.
BPF Explorer
BPF Explorer is a configuration tool used to define and manage the BPF abstraction layer.
BPF Metastore
The BPF Metastore is a Microsoft SQL or Oracle database used to store all the configuration
definitions described via BPF Explorer. This data is cached in the Metastore cache during runtime
and is used by the BPF Web Application to control user's access to business objects and process
work.
FileNet Corporation 11
BPF System Overview
High-level architecture
BPF manifest
The BPF manifest is an XML based export of BPF configuration. The BPF manifest allows for backup
and restore of the BPF configuration. This is typically necessary to move the configuration between
systems as well as for version control, to backup a version because new changes are made.
Added benefits
Case ID generation
Each Case object within BPF has a unique Case ID generated by BPF and is an auto-incremented
number.
Localization
The BPF visualization layer (Web Application) is fully localizable in UTF-8 languages.
Data integration
Object relationships
• Each BPF Case always has an instance of the CE Bp8Case custom object class.
• A BPF Case may have zero or more workflow objects. Work objects could be split in workflow
and processed in parallel.
• A BPF Case may have zero or more attachments (documents or folders).
• A BPF Case may have zero or more audit log objects.
Opening a Case
When cases are browsed in the Inbaskets, workflow queues supply the Case ID and the case
information is read from the Case object for display.
When a case is opened, either from the Inbasket or from a BPF search, the Case field data could be
read from one of the following data sources, according to each individual Case field configuration:
• Bp8Case custom object property
When a Case is opened from a BPF search, the values displayed in the Case fields are always from
the work object properties. If there are multiple workflow objects, the data will be read from the first
available work object. The objects and their relationships are shown in the following illustration.
12 FileNet Corporation
BPF System Overview
High-level architecture
Case
Case Field 1
Field 1 = XYZ123
{Value = XYZ123}
...
...
...
...
...
...
...
Field N
Field 1 = XYZ123
...
...
... User
document objects
...
...
Field 1 = XYZ123
... Field
...1 = XYZ123
... ... ...
Field N ... ...
... ...
... ...
... ...
... ...
... Field N
Field N
Completing a Case
When a Case is saved or completed from the Case user interface, Case field data could be saved to
any or all of the following data sources, according to each individual Case field configuration:
• Bp8Case custom object property
FileNet Corporation 13
BPF System Overview
High-level architecture
There could be multiple workflow objects related to the Case. BPF will manipulate the work object
that a user is working with and attempt to update work object property values that have been
configured as PE properties in BPF Explorer. If errors are encountered when trying to update these
workflow object properties, they will be logged in the BPF error log file and operation will continue.
This is to support different versions of the workflow process map. If any errors are encountered during
workflow object dispatch, the entire transaction will be aborted and BPF will attempt to roll the
Bp8Case object data back. The objects and their relationships are shown in the following illustration.
Case
Field 1 = XYZ123
Case Field 1 ...
{Value = XYZ123} ...
...
...
...
...
...
Field N
Field 1 = XYZ123
...
...
document objects
...
User ...
Field 1 = XYZ123
Field ...
... 1 = XYZ123
... ... ...
... ... ...
... ... Field N
... ...
... ...
... ...
... Field N
Field N
14 FileNet Corporation
BPF System Overview
High-level architecture
Architecture
The BPF Architecture is shown in the illustration below.
Web Browser
Web
Client
Tier
P
TT
LH
TP
XM
HT
Business Tier
Action
Dispatcher HTTP
JSP/Servlets
Application
Integration
BPF Web
P8 App Engine
Servlet
CE API PE API
JDBC JDBC
SOAP RMI
Data Tier
Content Process
Database Engine Engine Database BPF
Metastore
Server Server Database
The following sections will discuss each of the tiers of this architecture in detail, moving from the data
tier up through the client tier.
FileNet Corporation 15
BPF System Overview
High-level architecture
Data Tier
The Data Tier refers to the persistence layer, core FileNet P8 Platform services, and the third-party
services that serve as a repository for the BPF domain object model and configuration.
CE
BPF utilizes a CE repository for storing and managing the business object data. The BPF Business
Tier uses the CE Java API for all content related operations.
PE
BPF utilizes a PE repository for storing and managing the business object process state. The BPF
Business Tier uses JDBC to retrieve workflow queue content and the PE Java API for all process
related operations.
BPF Metastore
BPF Web Application settings, domain object model, and data visualization definition are stored in a
dedicated BPF Metastore database. The BPF Metastore database may be collocated with the PE or
CE database server or be installed on a separate database server. The BPF Business Tier uses
JDBC to communicate with the BPF Metastore.
Supported database servers
The following database servers were tested and are supported with Release 3.5.
• Oracle 9.2.0.5.0
• Microsoft SQL Server 2000 SP3
Scalability
The Data Tier can be scaled up using multiple CPU servers. The following constraints will apply:
• The BPF Metastore is scaleable across multiple servers. However, this option is unlikely
since most of the relevant BPF metadata is cached by the BPF Business Tier at runtime,
eliminating traffic to the BPF Metastore.
• The PE scalability is subject to the PE version-specific features and limitations. BPF Release
3.5 requires that all PE queue objects reside within the same database.
• CE scalability is subject to CE version-specific features and limitations. BPF Release 3.5
requires that all Case objects reside within the same CE object store.
16 FileNet Corporation
BPF System Overview
High-level architecture
FileNet Corporation 17
BPF System Overview
High-level architecture
Scalability
The BPF Business Tier can be scaled up using multiple CPU servers or multiple servers using J2EE
clustering. When J2EE clustering is utilized, clients of this tier see a single server, with a virtual IP
address. This IP address is mapped to multiple physical servers via a load balancing (either hardware
or software) solution. The overall system can scale to handle an increased load, by adding additional
servers to the cluster.
The BPF Business Tier is not entirely stateless, requiring a sticky connection to be maintained to a
specific server. The load balancing solution should support the sticky connection feature.
High availability
High availability in the BPF Web Application Tier is achieved by creating a cluster with multiple
servers. If a single server goes down, the load balancer will detect this condition and stop routing
requests to this server. Access to the cluster is routed through the remaining servers automatically.
Although the BPF Web Application is not entirely stateless, it provides a means to address high
availability requirements by storing a snapshot of the session state on the client. When the Web client
determines that the Web session is lost, which is typically due to Web session expiration, the Web
client recreates the session and allows the user to continue working after logging back on to the BPF
Web Application.
18 FileNet Corporation
BPF System Overview
High-level architecture
Client Tier
The two clients of the BPF Business Tier provided with this release are: the browser-based Web
Client and the BPF Operations.
Web client
The BPF Web client provides a nearly thick client feature rich interface to the BPF Web Application
and is comprised of the HTML, JSP, JavaScript pages, and other objects. The BPF Web client utilizes
HTTP and XMLHTTP to access the BPF Web Application services. The Web client contains a set of
client-side JavaScript functions that employ data validation techniques, minimizing unnecessary
round trips to the web server.
Supported Web browsers
The BPF Web client was designed to work with Microsoft Internet Explorer.
The following browsers were tested for the BPF Release 3.5.2:
• Microsoft Internet Explorer 6.0 SP1
BPF operations
BPF operations are a set of functions that are packaged as a Component Integrator-based Java
class. BPF Operations create and manipulate case objects by utilizing BPF Business Services from a
step on the workflow map.
Java applications
Customers may build their own Java applications by leveraging the BPF Business Services methods.
Security model
The security model employed by BPF utilizes users and groups found in the customer's LDAP
enterprise directory as well as Workplace access roles.
Authentication
Each potential user of BPF is expected to have an account defined in the enterprise LDAP. BPF uses
the CE and PE Java API to validate the user credentials through the authentication provider. BPF
does not contain any user authentication services.
Authorization
When an authenticated user interacts with the BPF Web Application server, various authorization
mechanisms are used to determine what level of access, if any, that user has to create, view, or
manipulate objects within the system.
System access
Users are assigned to an application level security group in LDAP that controls access to the BPF
Web Application. If the authenticated user is not part of the application level security group, access to
the BPF Web Application will be denied.
FileNet Corporation 19
BPF System Overview
High-level architecture
Role-based authorization
Users are assigned to a role level security group in LDAP that controls which of the BPF Web
Application features are available to the authenticated user. Each LDAP role level group is associated
with the security profile in BPF, which defines the set of Inbaskets that define the type of work the
user can process and the tools and actions available.
Extensibility
The BPF Business Tier exposes various plug-in Java interfaces allowing the customers to change the
default framework behavior and to seamlessly integrate their unique business logic. These interfaces
are described in further sections.
20 FileNet Corporation
BPF System Overview
Internal architecture
Internal architecture
Overview
The internal BPF Web Application architecture is based on the assumption that it will operate inside
of a J2EE application server. An application server provides containers where the Web components
run. These containers manage services for components such as transactions, multithreading, and
resource pooling. These services are not the responsibility of components running inside of a
container.
J2EE application server vendors provide tools to perform administrative tasks for containers and their
related components. The services provided by the containers are part of this administration. For
example, the configuration (deployment descriptor) for a container component may define
transactional behavior.
Some additional benefits provided by the application server are as follows:
• JDBC connection pooling
• Multithreading
FileNet Corporation 21
BPF System Overview
Internal architecture
The Bp8Case base object is a child of the Bp8Object class and has the following standard properties,
in addition to system properties inherited from the base Custom Object class:
Name Description
Bp8Object Base Bp8 class that all business objects have
to inherit from.
Bp8Case Bp8Active Indicates whether Case object is active in the Boolean
workflow. When the object is created, it is set
to True. It is the responsibility of each
implementation to set it to false upon closing
the Case. The suggested method for setting
the Case as closed is a Component Integrator
step.
Bp8DateClosed Reserved for future use. DateTime
Bp8Comment Reserved for future use. String
Bp8CaseType This field identifies the Case type for the Case Integer
object.
Bp8ObjectID This is the custom object GUID that identifies ID (GUID)
the case.
Bp8CaseID Auto-incrementing Case ID used for easier Integer
identification. PE work items will be linked to
Bp8 Cases using this property. Bp8Settings
object instance is used to keep the last auto
incremented value.
Life cycle
A BPF Case object is typically created via BPF Business Services; however, it could also be created
directly via the CE API. The BPF Case object remains in the CE object repository until deleted. All
linked Case object references will be deleted when a parent object is deleted. That is, all
Bp8AuditLog and Bp8Attachment objects will be deleted when the Bp8Case object is deleted.
Attachments
The BPF object model allows associating other documents and objects with the Case and presenting
those objects to the user as attachments.
22 FileNet Corporation
BPF System Overview
Internal architecture
Attachment types
The BPF object model allows attaching CE folder and document objects to the Case. The visual
representation of folders and documents from within the case is implemented via the Workplace
Integration Servlet.
The folder content is displayed in a web page utilizing the Workplace Integration Servlet, which allows
browsing a subfolder, viewing content, and performing any content-related operations.
The document objects are displayed in a viewer registered in Workplace for the appropriate mime or
object type. BPF utilizes the Workplace Integration Servlet to invoke the Viewer.
Physical links
The default implementation model for attachments links each attachment to a Case via a special
custom object in the CE repository, which associates the content object with the Case. One document
could be attached to multiple Cases.
This model allows for a transparent update of the attachment property fields when the Case is
updated.
The attachment link object is implemented via the Bp8Attachment custom object, which is a child of
the Bp8Object. The following table provides the Bp8Attachment object definition:
Dynamic attachments
In this model, there are no attachment link objects that associate the document with the Case(s). The
Web Application determines the Case attachments, which are based on a SQL search predefined in
BPF Explorer at runtime when the user opens the Case. It is possible to have both physical link object
attachments and a dynamic attachment defined for the case if necessary. This is configurable via the
BPF Explorer configuration tool.
Audit logging
The Case audit log stores the history of all actions performed on the Case object. The audit log is
updated automatically when a Case is opened or updates. The level of logging and action names are
configurable via the BPF Explorer tool.
FileNet Corporation 23
BPF System Overview
Internal architecture
Workflow object
BPF utilizes BPM for all process-related operations on the Case. Each BPF Case may have one or
multiple workflow objects representing the Case state on the workflow map. The Case object is linked
to the workflow object via the Bp8CaseID field. The workflow object has a link to the Case object in
the Bp8Case attachment field.
The following constraints must be considered when designing a Bp8 workflow map:
• Bp8CaseID (Integer) – Must be present on the map and exposed to every step in the
workflow. This field is user to link the work object back to the Bp8Case object. This field
should also be exposed in each workflow queue and workflow roster.
• Bp8Case (Attachment) – When defined on the workflow map, it will contain references to
the Bp8Case object. The FileNet P8 Platform Component Integrator will be used to
manipulate properties of the Bp8Case object to change Bp8Case fields, modify Case status,
mark a Case as closed, etc.
• Bp8Attachment (Attachment array) – When defined on the workflow map, it will contain
references to the Case object attachments.
• BPF uses workflow responses to dispatch workflow objects. Reassign and Return to Queue
functions are not supported in this release of BPF.
24 FileNet Corporation
BPF System Overview
Internal architecture
Object model
BPF Metastore
BPF Metadata constitutes the data that keeps track of security profiles, Inbaskets, Inbasket layout,
system-wide configuration parameters, etc. A dedicated BPF Metastore database is used to store
such data.
In addition to the user interface configuration data, the metadata database will contain user account
extended information. BPF requires storage of some extended user information, such as: user's
manager, security profiles, workflow user ID, companies, departments, customer-defined attributes
for integrating with host systems, etc. Ideally, this data should be kept in LDAP, but it is common for
customers to prefer not to modify their LDAP schema. There is no facility in the FileNet P8 Platform to
store this information either. Short term, user account records are maintained in the USERS table in
the Bp8 Metadata database. This also adds an additional level of security to the solution being
implemented, preventing unauthorized users from accessing the Web Application.
Case type
Case type defines a unique data dictionary and controls the following:
• Inbasket behaviors
o Exposed Case fields and their layout in each Inbasket could be different based on the
Case type.
o Required fields for each Inbasket response could be different for each Case type.
o Data source for each Inbasket Browse list column could be different for each Case type.
o Configurable favorite field value, which is displayed in the BPF Web Application status
bar.
o Case layout for Case objects opened from BPF Search.
• Associated data object types
o Default workflow name
o Default attachment document class name
o Default object class name
Case fields
The following metadata is stored with the BPF Case fields:
• The storage location which, based on the field definition, could be saved to or retrieved from:
o CE field (bi-directional)
o Workflow field (bi-directional)
o Attachment field (save-only). At the Inbasket level, it is possible to define whether the
attachment index fields need to be updated (default is off).
FileNet Corporation 25
BPF System Overview
Internal architecture
• Field type
o Money
o Numeric
o Date/time
o Boolean
o String
o Workflow group
• Display parameters
o Name
o Label
o Number of rows
o Column width
o Maximum number of characters
• Pick list
o Display code, description, or both
• Lookup
o Whether the pick list should be displayed as a lookup
o External source URL
Pick lists
A BPF pick list is a choice list of possible values that allows limiting the Case field value. The BPF
Business Tier enforces the pick list when saving and retrieving object data. A pick list does not
prevent you from using CE choice lists to enforce data integrity on the Case custom object level.
A pick list is typically comprised of the following columns: ID, Code, Description, and Active flag.
However, a pick list could be extended with any number of custom columns. Pick lists can be defined
as static or dynamic.
Static
Static pick list values are defined via the BPF Explorer configuration tool and are stored in the BPF
Metastore. The ID column value is automatically generated. The Active flag allows disabling a specific
value for selection. However, existing Case objects that contain an inactive value would still be able
to display it.
Dynamic
A Dynamic pick list is defined as a SQL statement and the values list is rendered at runtime. The BPF
Metastore is typically the data source for the dynamic pick lists.
Lookup attribute
A Lookup is an attribute to the pick list that tells the BPF Business Tier that only the current value of
the Case field should be retrieved and not the entire list. This attribute is typically used to improve the
retrieval performance of large pick lists.
26 FileNet Corporation
BPF System Overview
Internal architecture
User lists
User lists are dynamic pick lists defined against the USERS table in the BPF Metastore and contain
user names and their attributes. User pick lists are typically used for workflow step assignments. User
pick lists allow limiting the choice list based on certain user properties: Department, Business Unit,
Approval Limit, etc.
Security model
Security profiles
Security profiles implement the role-based work distribution and define what work and functionality
users have access to. Security profiles also keep track of the case-management specific attributes
that could not be stored with LDAP groups or Workplace access roles:
• Inbasket list, their display order, and the set of associated properties:
o Default Case tab
o Whether the Inbasket Case count should be displayed
o LDAP security group name
• All of the display characteristics in the Case user interface:
o Case tab and case fields
o Actions, tools, and tabs
Users can be assigned to one or multiple security profiles.
Concurrency
Pessimistic concurrency
Goal
To allow multiple users access to shared resources in an environment where the possibility of
collision is high, without forcing user to discard work.
Interactions
A client connects to the BPF Business Tier and initiates a Case edit session. The BPF Business Tier
invokes the Lock Manager to request a lock on the specific workflow object the user wants to edit. If
the lock is unavailable, the Business Tier returns a message to the user. If a lock is available, the
business delegate retrieves the data from the workflow and the Case custom objects and submits
them back to the user. The user makes the edits to the Case object and submits the changes back to
the business delegate that saves the data back to the workflow and the Case custom objects and
releases the lock.
FileNet Corporation 27
BPF System Overview
Internal architecture
NOTES
• The BPF Business Tier only implements pessimistic concurrency support for Cases opened
via an Inbasket. BPF Business Services unlocks and releases the workflow object when the
user is closing a Case or executing an Action (workflow response). If locks are not released
properly, the whole system can gradually become unavailable.
• BPF Business Services does not utilize CE object locking. When a Case is opened via an
Inbasket, the CE Case custom object is not locked, enabling optimistic concurrency.
Optimistic concurrency
Goal
To allow multiple users safe access to shared resources in scenarios in which there is minimal risk
that two users will simultaneously edit the same data.
Interactions
A user interacting with the BPF Business Services requests data to view or edit. If the Case is opened
from an Inbasket, a pessimistic concurrency scenario is executed. If the Case is opened from the
BPF search:
• If there is no corresponding workflow object, all data is retrieved from the Case custom
object. The Case custom object is not locked.
o If the Case edit is enabled, updated data will be saved to the Case custom object.
• If there is a corresponding workflow object, the data is retrieved from both the workflow object
and the Case custom object. Case custom object and the workflow objects are not locked.
NOTES
The BPF Business Tier implements optimistic concurrency support via the following means:
• Cases opened via BPF search are typically defined with all fields as read-only. Multiple users
can view the same Case without modifying it.
• BPF search allows exposing different sets of Case fields as read-write for members of
different security profiles, allowing simultaneous read-write access to the Case custom
object.
• BPF supports BPM workflow object splits and multiple step participant assignment to allow
the Case to be work on simultaneously by multiple users. The Case fields that could be
simultaneously edited by the users need to be defined with PE as data source with the data
merge rules configured in the workflow process map.
28 FileNet Corporation
BPF System Overview
Internal architecture
Lock Manager
Goal
Provide a central point for managing lock information.
Interactions
When a business delegate needs to modify a Case object via an Inbasket interface, it calls the Lock
Case method. If a lock cannot be obtained, the Lock Manager passes a message back to the client,
along with the name of the user who holds the lock. Locks are released via the Unlock Case method
or when a user executes an action on the Case.
Open or lock a Case
• When a client makes a request to open or lock a Case, it passes the Inbasket ID, Case ID,
and the workflow object number to the Lock Manager.
• The Lock Manager locates and fetches the workflow object from the queue.
• The Lock Manager locks the workflow object to the requesting user and passes control back
to a business delegate.
Unlock or dispatch a case
• When a client makes a request to dispatch or unlock a Case, it passes the Inbasket ID, Case
ID, and the workflow object number to the Lock Manager.
• The Lock Manager locates and fetches the workflow object from the queue.
• The Lock Manager locks the workflow object to the requesting user and passes control back
to a business delegate.
Implementation
The Lock Manager implements a stateless service. When the workflow object is locked, the PE
VWObject is discarded and a reference to the locked object is released. A workflow object is released
by a user only when executing an unlock method or dispatch. When a Case unlocks or a dispatch is
requested, the workflow object is located in the queue and locked with an Override option.
NOTE Users can always override their lock but cannot override locks from other users.
FileNet Corporation 29
BPF System Overview
Internal architecture
Inbasket Manager
Goal
To provide configurability and flexibility to workflow queue content filtering and sorting.
Interactions
A client connects to the BPF Business Tier and initiates a request for the Inbasket contents. The
request is passed to the business broker, which will determine and build the SQL statement based on
the Inbasket definition. The SQL statement will be executed against the PE database workflow queue
(view) and the list of work objects and their properties exposed in the queue will be retrieved. The
Bp8CaseID field is read from the first n records retrieved from the queue and a search is executed
against the CE object repository to retrieve the Case objects where the Bp8CaseID property value is
equal. A list of those Cases that have a list of corresponding workflow and Case custom objects is
returned to the client.
The workflow queue record set is saved in the context of the client's session to allow page navigation
within the Inbasket. A client can request a first, next, previous, or a last page from the result set.
Implementation
Queue filters
Queue filters are pre-defined SQL statements that are evaluated during runtime and executed against
workflow queue to retrieve content. Queue filters contain macros, which are evaluated and
substituted with runtime values.
Example:
select %PAGESIZE% F_WobNum, F_UniqueId, F_Locked, F_LockUser, F_BoundUser,
Bp8CaseID, %FIELDLIST% from %VIEWNAME% WHERE %FILTERBY% F_BoundUser = %USERID%
order by %ORDERBY%, F_EnqueueTime, F_UniqueId asc
Inbasket filters
Inbasket filters are user interface elements associated with an Inbasket that allow a user to enter a
workflow field value to locate an individual object or a set of objects.
Inbasket columns
Inbasket columns are the workflow and the Case custom object fields that are configured to be
displayed on the Inbasket browse list.
Macros available to queue filters and Inbasket filters
• %PAGESIZE% – This macro contains the Inbasket page size used to retrieve a subset of the
workflow queues content.
• %VIEWNAME% – This macro contains the workflow queue name (view) configured for the
current Inbasket.
• %FILTERBY% – This macro contains the concatenated values from all Inbasket filters and is
populated by a user at runtime.
• %USERID% – This macro contains current user's workflow user id and allows filtering work
assigned to the current user only.
• %ORDERBY% – This macro contains the list of workflow object fields configured for the
Inbasket default sort column or the column selected by the user.
30 FileNet Corporation
BPF System Overview
Internal architecture
Case ID Manager
Goal
To provide a user-friendly Case custom object unique identifier.
The Case ID is a unique numeric identifier that is assigned to each Case in BPF when a new Case is
created.
Interactions
A client connects to the BPF Business Tier and initiates a new Case creation. BPF Business Services
sends a request to the Case ID Manager to obtain the next available Case ID. The Case ID Manager
retains a range of the available Case IDs. If an ID is available, the Case ID Manager removes the ID
from the pool and returns it to the client. If an ID is unavailable, the Case ID Manager retrieves the
range of IDs by performing the following sequence:
• Locates an instance of the Bp8Settings object and locks it.
• Reads the Bp8LastCaseID property value, increments it to the size of the Case ID range,
stores the new value back to the Bp8LastCaseID property, and releases the lock.
Once the ID range is obtained, it is cached in the Case ID Manager and the next available ID is
returned to the client.
Implementation
The Case ID Manager is an instance of the CaseIdManager Java class that is implemented following
the J2EE Singleton design pattern. The Case ID Manager enforces the integrity of the data model
since the business logic is encapsulated in the executor and not in the consumer. The Case ID
Manager captures all errors to a log4j log file.
The last Case ID used is stored in a custom object in CE and is implemented as an instance of the
Bp8Settings class. Although the Bp8Settings object can be made secure by assigning object
security, this makes sense only if the object is accessed via a special user account, and not within a
user context. The BPF Case Manager employs the user context to modify the Bp8LastCaseID
property value of the Bp8Settings object.
NOTE If there are multiple BPF applications installed on the same server, each has an instance of its
own executor class. Once a range of the Case IDs is reserved, it will never be released back if
unused. The unused portion of the IDs from the range could be lost in the event of a server failure,
application shut down, etc. Unused Case ID numbers are never reclaimed. The Case ID reservation
size is configurable as an application setting in the BPF Explorer. Typically, it is set to 1 in a
development or demo type environment, and is set to 100 or higher in a production environment.
FileNet Corporation 31
BPF System Overview
Internal architecture
Goal
To avoid delays created by unnecessary and excessive database access.
All metadata describing the Case object abstraction layer is stored in the BPF Metastore database.
This metadata includes Case fields and types, Inbasket definition and layout, security profiles, etc.
Typically, the metadata is volatile during design and development and fairly static in production. The
BPF Case Manager fetches the necessary abstraction layer components each time a Case or an
Inbasket is accessed to reconstruct the necessary layer. Fetching this data directly from the BPF
Metastore database each time a BPF object is accessed is quite costly and requires extra processing
power from the database server hosting the BPF Metastore.
The BPF Case Manager utilizes a Metadata Cache service, which allows for caching the metadata.
BPF Metadata Cache employs a lazy initialization, on-demand caching schema where each specific
metadata element is cached the first time it is accessed by a user. Certain elements are however
initialized during the BPF Web Application initialization.
Interactions
The client calls methods on a business object, requesting specific metadata. The user request is
passed to the BPF Cache Manager. If the object is already in cache, it is returned to the user. If the
object is not in cache, it is retrieved from the Data Tier, stored in cache, and returned to the user. If
the client needs additional data, the business object performs an additional request to the BPF Cache
Manager.
Implementation
The MetadataStore Java class is a factory for the metadata objects. Typically, the metadata objects
are represented as DOM documents or serialized XML strings. The MetadataStore class has specific
methods for each type of the metadata objects; the purpose of these methods is to access the
database and create a corresponding cache object.
The Metadata Cache meets the following requirements:
1. All repetitive requests to the metadata must be cached.
2. Objects in the cache must be identifiable by a unique key.
3. Cache must be able to store objects of different types.
4. Metadata Cache supports localized data.
• Bp8CacheItemImpl and Bp8CacheImpl classes implement the Metadata Cache.
o Bp8CacheItemImpl is a wrapper for all objects stored in cache.
o Bp8CacheImpl is a universal container for the cacheable objects. Bp8CacheImpl has the
following methods to transfer objects in and out the cache: setCacheItem and
getCacheItem.
o Bp8CacheImpl uses Hash Map to store Bp8CacheImpl objects. getCacheItem and
setCacheItem methods are synchronized to ensure correct behavior in a multi threaded
environment.
o To prevent duplicate items, method setCacheItem calls the getCacheItem before creating
a key for a new item.
• The Metadata Cache is enabled or disabled via the following setting in the BPF Explorer
administrative tool: Enable Metadata Cache (the default setting is True).
NOTE All metadata except for user accounts and dynamic pick lists is cached.
32 FileNet Corporation
BPF System Overview
Internal architecture
Goal
Inbasket Case Count is displayed in the BPF Web Application next to the Inbasket name: Inbox (4).
The BPF Web Application fetches the Case count only upon initial main page load or for an individual
Inbasket upon Inbasket refresh. This functionality is enabled or disabled at the security profile level.
Implementation
The MetadataStore class method getInbasketsDOM0() reads the Case count for each Inbasket. The
Inbasket Case counts are included with the Inbasket Case list XML object. The Case count works on
the work object level only. Counting on the Case level requires successive queries against both CE
and PE with filtering and seems impractical. Getting the Case count when Inbasket is refreshed will
not cause any additional server loading.
An option to enable the Case Count feature is in the security profile settings in BPF Explorer. The
default setting is set to On for all profiles.
The Case Count call is not executed when:
• Opening a Case from BPF search
• The user is working in a GetNext mode where the Inbasket list is hidden
SQL queries
All SQL statements that are executed against the BPF Metastore are pre-defined and stored in the
Bp8sql.xml file, which is distributed and deployed as part of the BPF deployment package (bp8-
resources.jar file).
P8 CE API is used for executing SQL statements against an object store repository.
FileNet Corporation 33
BPF System Overview
Internal architecture
Workplace integration
The BPF Web Application utilizes a number features exposed by Workplace via the Integration
Servlet. These features include:
• Object Viewer (Since FileNet P8 Platform 3.5 Integration Servlet does not expose the Object
Viewer, BPF adds a custom function to the Integration Servlet to allow access to the Viewer
from the external applications [page name].)
• Case search
• Attach document tool
• Browse folder content (When a folder is attached to a Case, the Workplace Integration
Servlet allows browsing of folder content and performs any document-related actions
including check-in, check-out, view, etc.)
The following configuration files are used to configure the Workplace integration:
• Bp8ExtTasks.xml
• Bp8ExtCommands.xml
Session management
The BFP Web Application was designed to allow users to continue working without losing data when
their web session expires. When a user makes a request to the Web server and the user’s session is
expired, the Web client will prompt the user to re-enter their credentials, which will be validated by the
BPF Web Application, and execute the requested action.
34 FileNet Corporation
BPF System Overview
Internal architecture
Action Dispatcher
The Action Dispatcher servlet is an XML-based service that accepts requests from the BPF Web
client, passes them to the BPF Business Services, packages the responses from the BPF Business
Services, and passes them back to the BPF Web client.
IsDirty
Goal
To prevent writing data to the repositories unnecessarily.
When a Case or any associated objects are updated with the changed values, both client and server
can use the information to avoid writing to the database when underlying data has not changed. The
obvious benefit is to eliminate performance overhead that is associated with the write operation in the
first place. There is also a hidden benefit when performing an audit on the field level: the database is
spared the overhead of storing huge quantities of unnecessary change tracking. Since in an active
database the volume of audit trail information can far exceed the actual volume of the data, the
performance and storage benefits of this feature can be significant.
Implementation
The Web client tracks those fields the user, custom script, or a plug-in changed. Only those fields that
have changed are posted to the server as part of the Case XML. A Case field is considered changed
only if a field value changed from the initial value. That is, if a user opens a Case and changes the
Approved Amount field value from 100.00 to 102.12 and changes it back to 100, it is not considered a
change and the field is not considered dirty. The old and the new values are compared only after
formatting. The following values are considered identical:
MONEY: 100 and 100.00
Date: 01/01/01 and 01/01/2001
The Web Client Java script event handler allows resetting of the Dirty flag via programmatic calls from
the custom script. The original value is tracked via the Value attribute of the field; the new value is
tracked via the NewValue attribute of the field element.
Since the Web client keeps track of what fields have changed and posts the data stream with the
changes only, BPF Business Services saves the field values to the corresponding objects (Case
object, attachments, work item, etc) as is. However, the following special circumstances apply:
• Instantiation rule – The objects in the corresponding repository are instantiated and updated
only if there were field updates to this object:
o Document objects (attachments) are not instantiated and updated if there were no field
updates to document objects.
o The workflow (VWObject) object is instantiated anyway since the work object has to be
unlocked, saved, or dispatched, so this rule will not apply.
o The Case object may not need to be instantiated and updated if there were no field
changes.
o Operations associated with the response will always override the data posted by the
client. Note that the operations will override the instantiation rule and update the
corresponding object if need be.
FileNet Corporation 35
BPF System Overview
Internal architecture
• The Refresh or Case Open Java plug-in supports handling the dirty fields. That is, this plug-in
may set the fields as dirty before the Case XML is set to the user browser.
• The Validation or Case Response plug-in may set the fields as dirty after the user uploads
the Case XML.
Lookup field
The Lookup is a special Case field attribute that serves to:
• Provide better performance on pick list fields where the pick list contains a large number of
entries (usually in the hundreds range).
• Allow implementing a type ahead pick list. Allow assigning a custom URL as a data source
for the field.
Implementation
• The design provides a standard interface to a field associated with a pick list to allow the user
to type into a text box instead of downloading the entire list down. For example, on Country
pick list, when the user types "Ca" it should return a list of countries starting with "Ca” and
when the user types in "Canad” the value of Canada should be populated.
• The lookup pick list searches for an exact value match first and performs a secondary
automated wildcard search if lookup for the exact value yields no results.
• There is a generic lookup function working against any Bp8 pick list.
• There is a standard interface to a URL data provider that can call a configured URL with the
configured list of fields and their values and be able to receive an interpreted XML message
with the result set.
36 FileNet Corporation
BPF System Overview
Internal architecture
FileNet Corporation 37
BPF System Overview
Internal architecture
Inbasket List
The following algorithm will be used to allow paging through the list of cases for the end user:
• When the list of cases is returned to the Inbasket, the list of all Case IDs is returned to the
browser together with the first page of data. The list of cases will be packed into a compact
data structure to allow handling of a large number of Cases in the Inbasket (5000-10000).
The structure will be ordered by the current sort order. If the user changes the sort order, the
information is reloaded. The estimated size of this structure, even for a large number of
cases, was estimated to be comparable to the size of HTML that is passed today for the
Inbasket browser by BPF. The maximum number of records to retrieve is configurable. BPF
has a configurable limit of the maximum number of cases in a queue.
• The browser displays paging buttons. Handlers for these buttons determine the proper range
in this structure and pass it back to the server. The server retrieves browse data for the
specified Case IDs and returns it to the client.
38 FileNet Corporation
BPF System Overview
Internal architecture
Concepts
Standard tabs
Case metadata is presented to a user in a tabular interface. Two tabs are provided by default: Case
and Audit, which can be configured to be exposed on any Inbasket via BPF Explorer. Custom tabs
can also be added to extend the Case model, presenting data from CE or other repositories with the
required layout.
Plug-in tabs
The Attachments tab is provided as an example of a plug-in tab. This tab is used to display Case
attachments in an HTML table. See the Advanced Configuration documentation for more information.
The Generic Table tab is also provided as a foundation of a plug-in tab when you need a multi-line
input form. See the Advanced Configuration documentation for more information.
FileNet Corporation 39
BPF System Overview
Internal architecture
Tools
40 FileNet Corporation
BPF System Overview
Internal architecture
Add Document
Purpose
Allows attaching documents from the local disk to Case objects Case fields list is displayed as per
Case fields configured for this tool. If there is more than one Case type configured, user will be
presented with a combo box allowing Case type selection. Document class for attachment is
configured on the Case type level. Document attachment will be indexed upon checking in the
repository according to the Case fields exposed on this tool.
Configuration
Case Type: Applicable
Tool Name: add_document
Display Label: Add Document
Handler URL: Bp8AddDocument.jsp
Window Width: 350
Window Height: 300
Resizeable: Y
Modal: Y
Visibility: Browse mode
FileNet Corporation 41
BPF System Overview
Internal architecture
Queue count
Purpose
Displays number of work items (queue count) for each Inbasket in the current profile.
Configuration
Case Type: Not Applicable
Tool Name: queue_depth
Display Label: Queue Depth
Handler URL: Bp8QueueDepth.jsp
Window Width: 300
Window Height: 500
Resizeable: Y
Modal: Y
Visibility: Browse mode, Case mode
Object Viewer
Document Viewer
The BPF Document Viewer consists of two main areas: the attachments pane and the document
pane. The list of attachments shows all documents attached to the Case. The document page
contains the Viewer appropriate for the content being displayed.
The Document Viewer is invoked via the P8 Workplace IntegrationServlet and is hosted within the
Workplace.
42 FileNet Corporation
BPF System Overview
Internal architecture
BPF Search
Search is executed by clicking the Search button on the Main page tool bar.
FileNet Corporation 43
BPF System Overview
Internal architecture
User preferences
Bulk processing
44 FileNet Corporation
BPF System Overview
Internal architecture
Sign Out
Localization
The BPF Web Application supports the UTF-8 character set and is designed in such a way that all the
metadata can be easy localized via a set of resource file. A single Web Application can support an
unlimited number of languages simultaneously. The localized metadata is cached to achieve better
performance.
The user selects the default language via the Internet Explorer preferences: Tools > Internet Options
> Languages. All metadata content will be delivered in the language based on user preference
assuming this language has the appropriate resource files available. Please see the Localization
Guide for more information.
Certain data elements (dates, monetary fields) are formatted based on the user's desktop local
preferences. The data formatting preferences are controlled via the Regional Options in the Windows
control panel.
FileNet Corporation 45
BPF System Overview
Internal architecture
The Table tab is also provided as an example and foundation of a plug-in tab used specifically when
you have multiple row entry needed. The tab can be used to enter and store any additional
information needed by the case.
Refer to the BPF Developer Guide for more details.
Goal
Provide web client interfaces for developers to extend and control the web client behaviors.
BPF allows extending the BPF Web Application behavior with custom JavaScript functionality
executed when the user opens the Case, manipulates the Case, or completes the Case.
Implementation
The BPF Web Application main page event handler interface is implemented as EventHandler.js
JavaScript include file and is deployed in the plug-ins/custom/ folder. The EventHandler.js file
provided with the base BPF package contains stubs to all supported event handler functions.
Goal
To allow extending domain object model with data from external system and provide an EAI layer.
The BPF Business Services model allows for virtual extensions and custom functionality by
associating custom Java classes (adaptors) to the Get Case and Case Complete events. Java
adapters implement standard interfaces that receive Case object as input, and return Case object
back (presumably after data manipulation).
• The getCase adaptor is associated with the Case Open event and is pluggable in the BPF
Web Application via the Inbasket configuration.
• The doFunction adaptor is associated with the Case Complete and is pluggable in the BPF
Web Application via an Inbasket configuration.
• BPF defines standard interfaces for the getCase and doFunction adaptors.
46 FileNet Corporation
BPF System Overview
Internal architecture
The Case is presented to the getCase adaptor consumer as a Java object that is a collection of
properties; serialization and de-serialization of the Case XML DOM object is a responsibility of the
BPF Business Services.
Interactions
getCase Java Adaptor
If a getCase Java Adaptor is configured for an Inbasket that the Case is being opened from, the
configured Adaptor will receive the Case object properties. The Adaptor will execute the custom
business logic, modify the Case data as necessary, and return the control back to the BPF Business
Services. BPF Business Services will complete the operation. The doFunction Adaptor will return an
indication of success, warning, or failure, with an informational message in case of warning, or an
error message in case of failure. The BPF Web Application processes warning and error level
messages. Warning level raises a user message allowing canceling or continuing the operation, while
error level raises the message and aborts the operation.
doFunction Java Adaptor
If a doFunction Java Adaptor is configured for an Action that was requested by the client, the
configured Adaptor will receive the Case object properties. The Adaptor will execute the custom
business logic, modify the Case data as necessary, and return the control back to the BPF Business
Services. BPF Business Services will complete the operation. The doFunction Adaptor will return an
indication of success, warning, or failure, with an informational message in case of warning, or an
error message in case of failure. The BPF Web Application processes warning and error level
messages. Warning level raises a user message allowing canceling or continuing the operation, while
error level raises the message and aborts the operation.
NOTES
• The doFunction adaptor name, a Java class name, is configurable on the Inbasket Response
level (BPF Explorer > Inbasket Properties > Responses tab > Java class for the selected
response).
• Each Inbasket can have multiple doFunction adaptors, but only one per each Inbasket
Response.
• The getCase adaptor name (Java class name) configurable on the Inbasket level (BPF
Explorer > Inbasket Properties > General tab > Java class).
FileNet Corporation 47
BPF System Overview
Internal architecture
XSL transformation
Most of the BPF Web Application user interface elements are rendered to HTML via an XSL
transformation; the data itself is in the presentation-neutral XML. It is possible to further customize the
user interface by modifying the XSL modules, optionally associating custom JavaScript to customize
the presentation even further. The following list defines the major XSL files:
48 FileNet Corporation
BPF System Overview
Internal architecture
BPF configuration
Inbaskets
• Name
• Security Profile
• Work filtering
• Work delivery mode
• Work list configuration
• Actions
• Attachments list
o Visibility
o SQL statement
• Logging the Case Open event
• Tabs visibility and order
• Tools visibility and order
• Java adapter
Inbasket Filtering
• Inbasket filters visibility and order
• User-initiated Inbasket content filtering
Work Delivery
• Enforced Pull mode
• Enforced Push mode
• Or user selectable
Case List
• Configurable column list
o Column name
o Case field associated with the column
o Default sort order and direction
o Pick list code or description
o Column could be defined as sort-able
• Default sort order
• Paging support
• Bulk processing
FileNet Corporation 49
BPF System Overview
Internal architecture
Responses
• Configurable labels for workflow responses
• List is dynamic and based on the workflow step definition
• Configurable hot keys
• Configurable actions order
• Configurable required fields
Operations
Operations allow assigning a value to the selected Case field while the response is being executed.
Operations will override any field modifications that user has made. There could be multiple
operations associated with a response. Each operation is tied to a single Case field, is based on the
built-in (macro) selected, and operates within the context of the Case and the user.
50 FileNet Corporation
BPF System Overview
Internal architecture
Configurable features
• Label
• Name
• Type
• Pick list
o Combo box field
o Lookup field
• Display width
• Max chars allowed for entry
• Number of rows
Key behaviors
• Data formatting based on the user's desktop regional settings
• Inline data validations based on the field type
o Invalid data error message suggests the valid format for the selected locale
Tabs
• Case tab
o Layout is configurable via a graphical editor
o Collapsible sections (expandos)
• Audit tab
• Attachments tab
• Table tab
Tools
• Add new document
• Attach repository document or folder
• Create new Case with selecting an existing document or folder or browsing for a local file
• Inbasket queue counts
• Configurable reason lists
• Configurable required fields
Misc
• Inline data validations
FileNet Corporation 51
BPF System Overview
Internal architecture
BPF Search
• Utilizes CE Stored search templates
• Case is presented in the user interface matching the Inbasket presentation
o Configurable on the security profile level
o Could be read-write or read-only
o Tools could be exposed
o No work object locking
o Inbasket name and bound user name is displayed
Globalization
The globalization of BPF is implemented by separating localizable messages (translated text) into
resource files. All BPF components utilize the same set of resource files. Each resource file is
separated into core and custom parts. The core resource file implements the generic settings, such
as error messages and BPF Web Application user interface labels, which do not change in the
custom implementations. The custom resource file implements the custom elements, such as
Inbasket names, Case field label names, etc, which vary implementation to implementation.
Each line in the properties file is a key=value pair. The main advantage is that file content can be
easily organized and modified without recompilation.
Localization
Localization is accomplished by translating the text in a resource file to the desired languages.
A single Web Application can support an unlimited number of languages simultaneously.
Users select their default language via the Internet Explorer preferences: Tools > Internet Options >
Languages. All metadata content will be delivered in the language of the user's choice assuming this
language has a resource defined.
All localization resources are stored as text files within the bp8-resources.jar file located in the
lib\ folder in the deployed Web Application. All localization resources for each specific country and
(or) language are located in a separate file. The name of the file contains both language and country
names as follows:
strings.ll_CC.txt
where:
ll - two-letter language code in lowercase, for example:
en, fr, de, ru.
CC - two-letter country code in uppercase, for example:
US, FR, DE, RU.
Example: strings.en_US.txt for US English
Country is optional and can be omitted, for example: strings.en.txt.
52 FileNet Corporation
BPF System Overview
Internal architecture
The resource file is stored in the UTF-8 format and contains the key and value pairs. The key is a
unique string representing an internal name of an application resource in the form of a text string;
value is the localized representation. Everything to the left of the equals sign (=) character is
considered a key; all characters after the equals sign (=) represent the value. Commented lines start
with the pound sign (#) character. The key should always remain in English and the valid character
set is the same as Java identifiers ('a'-'z', 'A'-'Z', 0-9, '_')
Format:
Key=Value
Example:
Bp8.server.calendar.January=January
^Key ^Value
The "en" is used as the default locale.
Metadata localization
The BPF supports localization for the following metadata:
• All static content of the BPF Web Application pages
• Error messages
• Case field definition
o Display name
• Inbasket Definition
o Display name
• Security profile definition
o Display name
• Pick list definition
o Data
FileNet Corporation 53
BPF System Overview
Internal architecture
BPF Explorer
BPF Explorer is a Microsoft Management Console Snap-in that allows configuring the BPF
applications and features.
Architecture
BPF Explorer is built using Microsoft Visual Basic 6.0 and Microsoft MMC ActiveX. BPF Explorer
connects directly to the BPF Metastore database, where the Microsoft SQL Server connection utilizes
an ODBC driver and to the Oracle database, where the connection utilizes an OLEDB driver. Users
are required to enter the logon and password to sign on to BPF Explorer. A database user account
with the permission to modify the BPF Metastore should be used. All changes to the BPF
configuration is immediately reflected in the BPF Metastore database after user confirms the change.
Initial load
The following defines the system registry configuration settings utilized by the BFP Explorer:
[HKEY_LOCAL_MACHINE\SOFTWARE\FileNet Business Process Framework]
"DATABASE_CONNECTION_STRING"="DSN=<database server name>;UID=;PWD="
"DATABASE_TYPE"="mssql"
"DATABASE_SQL_XML"="C:\\Program Files\\FileNet Business Process
Framework\\BPFExplorer\\Bp8sql.xml"
"DEFAULT_OBJECTSTORE_NAME"=""
"LAST_USER_CE"=""
"LAST_USER_METADATA"=""
54 FileNet Corporation
BPF System Overview
Internal architecture
Logon
BPF Explorer will display a combo selection box with Postcorb and Case Management in the choice
list upon start. Postcorb and CaseManagement data source names need to be manually created and
pointed to the appropriate BPF Metastore databases. The BPF Explorer logon window with multiple
repository option is shown below.
FileNet Corporation 55
BPF System Overview
Internal architecture
Main Page
The BPF Explorer main window is shown below.
56 FileNet Corporation
BPF System Overview
Internal architecture
FileNet Corporation 57
BPF System Overview
Internal architecture
58 FileNet Corporation
BPF System Overview
Internal architecture
The command is available also for objects in the right panel of BPF Explorer:
FileNet Corporation 59
BPF System Overview
Internal architecture
Architecture
BPF operations are implemented as P8 Component Integrator Java class and provide the following
functionality:
• Creating Case objects
• Attaching documents or folders to one or many existing Cases
• Creating audit trail records
• Generating Case ID
Logging
BPF Operations adapter provides log4j based logging.
Create object
This method is used to create BPF Case objects
Flow of events
1. This use case begins when the workflow map component step is configured with the createObject
method to be executed.
2. Create a custom case object and populate its property names
3. Attach an instance of the object to the specified Bp8Attachment workflow field.
4. The Component Integrator dispatches the work item to the next step and the use case ends.
Alternative paths
• Invalid object store name
• Required property not populated
Special considerations
Syntax
createObject(
String objectStoreName,
String objectClassName,
String objectAttachmentFieldName,
String[] objectFields)
60 FileNet Corporation
BPF System Overview
Internal architecture
Parameters
Parameters description
• objectStoreName – Name of the CE object store where the instance object should be
created.
• objectClassName – Name of the CE class used to create the object.
• objectAttachmentFieldName – Name of the Bp8Attachment workflow field the newly
created object should be attached to.
• objectFields – Array of field mapping for the object being created. Each entry consists of the
following elements:
o CE object symbolic field name
o Field type. Valid values are: DATETIME, NUMERIC, STRING, BOOLEAN, MONEY
o Value could be static value or workflow field or expression
Examples:
{"LoanNumber", "STRING", "1234567890")
{"LoanAmount", "MONEY", "LoanAmount")
Create Case
This method is used to create an instance of the Bp8Case object.
Flow of events
This use case begins when the workflow map component step is configured with the createCase
method to be executed.
1. Obtains next available Case ID.
2. Creates a Case object and populates the property names.
3. Creates an audit log object indicating that the Case was created.
4. Attaches documents to the Case if applicable.
5. Attaches a Case object to the Bp8Case workflow field.
6. Populates the Bp8CaseID workflow field with the Case ID.
The Component Integrator dispatches work item to the next step, the Case object is created, and the
use case ends.
FileNet Corporation 61
BPF System Overview
Internal architecture
Alternative paths
• Invalid object store Name
• Required property not populated
Special considerations
• Steps 3 - 5 should be executed in batch mode
Syntax
createCase(java.lang.String objectStoreName, java.lang.String caseClassName,
filenet.vw.api.VWAttachment[] attachments, java.lang.String actionName,
java.lang.String actionUserName, java.lang.String[] caseFields)
Parameters
Parameters description
• objectStoreName – Name of the CE object store where the Case will be created.
• caseClassName – Name of the CE class used to create the Case object. The class should
be inherited from the Bp8Case object.
• caseAttachmentFieldName – Name of the Bp8Case workflow field the newly created object
should be attached to.
• attachment – Name of the workflow Bp8Attachment property array containing documents. If
this property is populated, the component will attach all documents to the newly created
Case.
• actionName – Name of the action written to audit log when the Case is created. The default
value is Case Created and can be overwritten by populating this property.
• actionUserName – The user name that will be written to the audit log as part of the event. By
default, the name of the interactive user should be written.
• caseTypeID – The Case type ID of the Case being created.
62 FileNet Corporation
BPF System Overview
Internal architecture
• caseFields – An array of field mapping for the Case being created. Each entry consists of
the following elements:
o Case object symbolic field name
o Field type. Valid values are: DATETIME, NUMERIC, STRING, BOOLEAN, MONEY
o Value could be a static value or a workflow field or expression
Examples:
{"LoanNumber", "STRING", "1234567890")
{"LoanAmount", "MONEY", "LoanAmount")
Update Case
This method is used to update the CE Case object and its mapped process and attachment fields.
Flow of events
1. This use case begins when the workflow map component step is configured with the logEvent
method to be executed.
2. Creates an audit log object for the Case identified via the Bp8Object workflow attachment field.
3. The Component Integrator dispatches the work item to the next step, the audit log object is
created, and the use case ends.
Alternative Paths
• Bp8Object field does not exist on the workflow item
Syntax
updateCase(java.lang.String objectStoreName, java.lang.String[] caseIDs,
java.lang.String[] caseFields)
FileNet Corporation 63
BPF System Overview
Internal architecture
Attach document
This method is used to attach existing repository documents to a Bp8 Case.
Flow of events
1. This use case begins when the workflow map component step is configured with the
attachDocument method to be executed.
2. Executes an adhoc search specified in searchCriteria against the CE repository and locates
documents that satisfy the criteria.
3. For each document object to be attached:
a. For each document attached to the attachment property
i. Create a new Bp8Attachment object
ii. Creates an audit log record:
1. Action = actionName
2. Reason = <empty>
3. Description = name of the document being attached
4. The Component Integrator then dispatches the work item to the next
step, and use case ends.
Alternative Paths
If searchCriteria finds no matching documents, the work item should remain in the queue.
Required property not populated should throw an exception.
Syntax
attachDoc(java.lang.String objectStoreName, filenet.vw.api.VWAttachment[]
attachments, java.lang.String auditAction, java.lang.String userName,
java.lang.String sql)
Parameters
64 FileNet Corporation
BPF System Overview
Internal architecture
Property descriptions
• attachment – Name of the array of workflow VWAttachment properties containing
documents. The documents should be already attached to the work item before references to
the attached documents or folders. If attachment field is an array containing multiple
documents, all documents in the array will be processed.
• actionName – Name of the action written to audit log when the documents are attached. The
default value is document attached and could be overwritten by populating this property.
• actionUserName – Name that will be written to the audit trail as part of the event. By default,
name of the interactive user should be written.
• searchCriteria – Search criteria to identify which Cases should the document be attached to.
Example:
"SELECT Id FROM LoanPackage WHERE LoanNumber='" + LoanNumber + "'"
Log event
This method is used to create new Bp8 Audit Log objects (records) that are associated with an
existing Case. The Case object should already be attached to the workflow object as VWAttachment
named Bp8Object.
Flow of events
1. This use case begins when the workflow map component step is configured with the logEvent
method to be executed.
2. Creates an audit log object for the Case identified via the Bp8Object workflow attachment field.
3. The Component Integrator dispatches the work item to the next step, the audit log object is
created, and use case ends.
Alternative Paths
Bp8Object field does not exist on the workflow item.
Syntax
logEvent(filenet.vw.api.VWAttachment attachment, java.lang.String actionName,
java.lang.String actionReason, java.lang.String actionDescription, java.lang.String
actionUserName, int eventCategory)
FileNet Corporation 65
BPF System Overview
Internal architecture
Parameters
Property descriptions
• caseObject – Case Object reference. Case object is typically attached to the work item as a
Bp8Object VWAttachment type object.
Deployment
All BPF J2EE components are deployed via the same ANT script that is utilized in the compile
procedure.
Packaging
Package contents
A BPF deployment package consists of the following:
• A set of export files to set up a CE and PE for BPF
• A set of export files to set up a CE and PE for the BPF Case Management Starter Solution
• Documentation
• BPF J2EE applications binary deployment package
• BPF COM applications binary deployment package
CE objects
The BPF Case-related classes need to be imported into a CE object store to enable case
management. The BPF package contains two CE XML export files:
• Ce_base.xml – BPF core classes definition
• Ce_cm.xml – Objects and properties for the BPF Case management solution template
66 FileNet Corporation
BPF System Overview
Internal architecture
BPF configuration
The BPF Metadata Manifest needs to be imported to the BPF Metastore via the BPF Explorer. The
manifest contains BPF metadata definition and application settings.
• Bp8_base.xml – BPF core objects definition
• Bp8_cm.xml – BPF Case Management solution template objects definition
FileNet Corporation 67
BPF System Overview
Internal architecture
Documentation
The following set of the documentation is distributed with the build. The documentation is distributed
as a WAR file and could be deployed as a web application.
• Release Notes and Installation Guide (HTML)
• Developer Guide
• BPF Explorer Handbook
Deployment types
Versioning
68 FileNet Corporation
BPF System Overview
Internal architecture
2. To change the logging level of any of the log files, modify the setting in the corresponding group:
<level value="info"/>
NOTE The Web Application does not need to be restarted in order for changes in the log4j.xml file
to take effect.
FileNet Corporation 69
BPF System Overview
Internal architecture
For instance, assuming MaxBackupIndex is set to 4, wombat.log.4 is simply deleted without further
cascading.
Thus, in addition to the FileAppender options, RollingFileAppender has two additional MaxFileSize
and MaxBackupIndex, as summarized below.
The MaxFileSize option takes a string value representing a long integer in the range 0 - 263. You can
specify the value with the suffixes KB, MB, or GB so that the integer is interpreted as being expressed
respectively in kilobytes, megabytes, or gigabytes. For example, the value 10KB will be interpreted as
10240.
Rollover occurs when the log file reaches MaxFile Size. Note that since the last log event is written
entirely before a roll over is triggered, actual files are usually a bit larger than the value of
MaxFileSize. The default value of this option is 10MB.
The appender will look like:
<appender name="R" class="org.apache.log4j.RollingFileAppender">
<param name="File" value=" ${bp8.app_root}/WEB-INF/logs/bp8.log"/>
<param name="MaxFileSize" value="1MB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %C{2} - %m\n"/>
</layout>
</appender>
70 FileNet Corporation
BPF System Overview
Internal architecture
It is possible to specify monthly, weekly, half-daily, daily, hourly, or minutely rollover schedules.
Do not use the colon (:) character anywhere in the DatePattern option. The text before the colon is
interpreted as the protocol specification of a URL, which is probably not what you want.
NOTE For more details on log4j logging, refer to http://logging.apache.org/log4j/docs/.
FileNet Corporation 71
BPF System Overview
Internal architecture
where:
$userName: User logon name
$actionName: Web Application function name
$directon: Response or Request
72 FileNet Corporation
BPF System Overview
Notices and License Agreements
Utilities
Workflow Region Maintenance tool
The BPF Workflow Region Maintenance tool (wfutil) provides a method to import workflow region
configuration from an XML file. This tool allows the following:
• Creates public queues
• Exposes system and user defined properties on the queues, rosters, and event logs
• Creates indices on the queues, rosters, and event logs
Once deployed, the wfutil folder will contain the following content:
• wfutil.jar – wfutil main application
• lib (folder) – Folder for BPM API dependency files (eProcess.jar, mailapi.jar,
xerces.jar)
FileNet Corporation 73
BPF System Overview
Notices and License Agreements
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.
74 FileNet Corporation
BPF System Overview
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.
FileNet Corporation 75
BPF System Overview
Notices and License Agreements
76 FileNet Corporation
BPF System Overview
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 77
BPF System Overview
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.
78 FileNet Corporation
BPF System Overview
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.
FileNet Corporation 79
BPF System Overview
Notices and License Agreements
80 FileNet Corporation