IBM FileNet P8, Version 5.2.1            

What's new for developers

Content Platform Engine V5.2.1 introduces new features and other enhancements for developing custom applications.

Content Engine object model changes

This release includes new classes and properties. In addition, a property and a class have been deprecated and will be removed in a future release.

New classes

Deprecated class

The com.filenet.api.jdbc.Driver class has been deprecated in the Content Engine Java™ API.

New properties on existing classes
Property Class
AdvancedStorageDeletionDelay ObjectStore
AuthenticationRealmName Domain
BackgroundSearches ObjectStore
BackgroundSearchLeaseDuration CmSweepConfiguration
CmContentIntegrityOptions DatabaseStorageArea
FileStorageArea
FixedStorageArea
StorageArea
ContentSignature ContentTransfer
ContentUploadTimeout ContentConfiguration
CopyRetainedContent CmBulkMoveContentJob
CurrentDeferredObjectCount CmCustomQueueSweep
CmQueueSweep
CmThumbnailRequestSweep
DeferralCount CmAbstractQueueEntry
CmThumbnailRequest
DeferralData CmAbstractQueueEntry
CmThumbnailRequest
DeferredObjectCount CmCustomQueueSweep
CmQueueSweep
CmThumbnailRequestSweep
DomainType Domain
EventExporterAccountingInterval CmProcessEngineConfiguration
EventExporterSleepDuration CmProcessEngineConfiguration
IndexDefinitions TableDefinition
IsDateOnly PropertyDefinitionDateTime
PropertyDescriptionDateTime
PropertyTemplateDateTime
IsReadProtected PropertyDefinitionBinary
PropertyDescriptionBinary
PropertyTemplateBinary
MaximumUploadBufferSize ContentConfiguration
MaxRequestQueueSize IndexJob
SecurityIdMappingCacheMaxEntries ObjectStore
ServerCommunicationCertificateValidationEnabled VirtualServer
ServerCommunicationTraceFlags TraceLoggingConfiguration
ServerCommunicationURL VirtualServer
SourceContentRetained McMoveContentEvent
UseSequentialIds ObjectStore

Deprecated property

The IsSingleIndexed property on the ColumnDefinition class has been deprecated.

Content Engine Java and .NET API developers

The Content Engine Java and .NET APIs introduce support for new features and other enhancements to the product.

Enhanced input stream for content retrieval

A new class, ExtendedInputStream, in the Content Engine Java API provides support for retrieving content at arbitrary positions within the stream, including being able to seek forward and backward within the stream. The Content Engine .NET API provides the same support via the new ExtendedStream class.

In previous releases, retrieval of content was limited to reading sequentially over the content. Using the new extended stream support, your application can more efficiently retrieve very large file content—such as video and audio content—from any point in the file. No changes are needed to existing applications that do not need this capability. For applications that do require this capability, you can cast the input stream returned from the current accessContentStream method (on the ContentTransfer, Document, and Annotation classes) to the new extended class to invoke the new operations.

Note that, although the new extended input stream supports all types of storage devices, the ability to efficiently seek within a content stream is limited to the capabilities of the underlying media and might not be appropriate for some types of storage devices. For example, the file storage area and advanced storage area file system storage devices are optimized to do native re-positioning of the input stream and, therefore, can efficiently seek within a content stream. Also, any files that have been cached in the content cache from any type of storage area are also optimized to do native re-positioning of the input stream.

Support for sequential IDs

In releases prior to 5.2.1, the unique identifiers assigned to objects were generated using an algorithm that produces completely random values. In the 5.2.1 release, a new algorithm is available that produces sequential IDs. Sequential IDs have a time- and counter-based portion that is combined with a random portion in such a way that consecutively created IDs are sequential (monotonic) per the natural ordering applied by the underlying database.

The new UseSequentialIds property on the ObjectStore interface specifies whether an object store should assign random or sequential IDs when a new object is created in that object store. An indexed database column or a table with a clustered index on the primary key containing sequential IDs might be stored more compactly and managed more efficiently than completely random IDs, hence potentially providing a performance benefit and space savings.

The default value for this property is true (assign sequential IDs). If you do not want new objects in an object store to have sequential IDs, set the value of the UseSequentialIds property to false.

Define password properties via metadata

A new metadata property, IsReadProtected, is available on binary-valued properties to specify that the binary-valued property is unavailable to be read by applications executing outside the server. You can use the IsReadProtected property to store passwords or other sensitive information that is only available to trusted handler code executing inside the server. Use the new getReadProtectedProperty method on the Content Engine Java API's HandlerCallContext class to return the Property object representing the value of the binary-valued, read-protected property. Note that when you upgrade to the 5.2.1 release, the value of the IsReadProtected metadata property on any existing custom binary-valued properties is set to false.

Advanced storage areas

Support for a new storage area has been added that provides high availability content storage and disaster recovery through use of replication and automatic replica repair. Advanced storage areas are typically managed with the Administration Console for Content Platform Engine, but advanced storage area-related classes are exposed in the Content Engine APIs. These classes include CmAdvancedStorageArea, CmStorageDeviceConnection, CmStorageDevice, and CmReplicaSynchronizationSiteSettings.

In addition, the following queue sweep-related classes have been added in support of advanced storage areas: CmContentBackoutQueueSweep, CmContentDeletionQueueSweep, and CmContentReplicationQueueSweep.

Content Platform Engine server communication

Support for Content Platform Engine (CPE) server communication has been added, enabling cross-site replication for an advanced storage area without the requirement to mount any file system directories across the WAN between sites. CPE server communication is typically configured with the Administration Console for Content Platform Engine, but this feature can also be configured with the Content Engine APIs. Two new properties have been added to the VirtualServer class, ServerCommunicationURL and ServerCommunicationCertificateValidationEnabled.

New fixed content devices

Support has been added for new EMC fixed content devices: Atmos and Isilon. Fixed content devices are typically configured with the Administration Console for Content Platform Engine, but these devices can also be configured with the Content Engine APIs. Two new classes have been added: CmAtmosFixedContentDevice and CmIsilonFixedContentDevice.

Custom sweeps

Support for custom sweeps, a new type of server extension, has been added. Like a system sweep, a custom sweep operates as a background task on the server, retrieving instances of a target class and processing them. However, a custom sweep processes instances with an action handler that is implemented by the user, in either Java or JavaScript.

CmQueueSweep.MaximumFailures: New default value

The default value of the MaximumFailures property has been changed to zero, meaning that a queue sweep implementation will attempt to reprocess failed queue entries for an unlimited number of times. The default value can be changed. This impacts system queue sweeps and user-implemented custom queue sweeps. An exception is CmThumbnalRequestSweep, where the default value of MaximumFailures has been changed from seven to three.

Restart processing of failed queue entries

Before the 5.2.1 release, when a queue entry (represented by a CmAbstractQueueEntry subclass) reached its maximum failure count, it was no longer selected for processing, but the QueueEntryStatus property didn't change. To restart processing of queue entries that reached the maximum failure count, you had to increase the MaximumFailures property on the queue sweep (represented by CmQueueSweep). As a result, the sweep service resumed processing of those queue entries, until they reached the new maximum.

In the 5.2.1 release, when a queue entry reaches the maximum failure count, the QueueEntryStatus property is set to FAILED, preventing the queue entry from being selected for processing. You can no longer restart processing of queue entries by increasing the maximum failure count on the queue sweep. Instead, you must reset the FailureCount property to zero on each individual queue entry in order for the sweep service to resume processing of those queue entries. See Resetting failed queue sweep entries for more information.

Cross-release class loading

In the Content Engine Java API, support for cross-release class loading (CRCL) capability has been added, allowing a single instance of a Java application to connect to multiple Content Platform Engine server releases simultaneously.

Note: CRCL is not supported on client applications using the JBoss EJB transport.
Social collaboration

Support for social content features has been added, allowing you to implement document-collaboration operations in client applications.

HandlerCallContext class

The HandlerCallContext class has been expanded with the following methods:

  • isShuttingDown
  • getContentConversionServices
  • getReadProtectedProperty
  • getTemporaryFilesDirectory
New MaxRequestQueueSize property for controlling the number of index requests

A new property, MaxRequestQueueSize, has been added to the IndexJob class. You can use this property to control the maximum number of outstanding index requests that are allowed for an index job.

Case-insensitive searches

This release supports case-insensitive searches on indexes via the new ForCaseInsensitiveSearch property on the CmIndexDefinition class. In addition, to provide support for case-insensitive searches with Process Engine clients, the existing ForceCaseInsensitiveSearch property has been added to the IsolatedRegion class.

Background search

Background search is a new feature that enables you to run a search query as a background search process, which is similar to a sweep process. The results of a background search query are stored in persistable Content Platform Engine objects, which can be examined later or used in a client application. In support of this new feature, two new classes have been added: CmBackgroundSearch and CmAbstractSearchResult. When you create a background search, you create subclasses that are based on these classes. The CmBackgroundSearch class is a subclass of CmSweep and has the following new properties: AllowStringTruncation, EffectiveSQL, MaximumExaminedRowCount, OrderByGroupProperties, SearchExpression, SearchObjectStore, and SearchResults. CmAbstractSearchResult has a new property, BackgroundSearch. A new BackgroundSearches property on ObjectStore specifies the background searches that are running in an object store. A new BackgroundSearchLeaseDuration property on CmSweepConfiguration specifies the amount of time that a background search request can run before another thread can attempt to reissue the request.

Background search parameters

Background search parameters are introduced in this release, which provide the ability to substitute parameters into a background search SQL query. Each parameter is associated with a custom property of a CmBackgroundSearch object whose symbolic name matches that of the parameter. When you start a background search and set the value of a custom property that defines a parameter, the server substitutes that value for the parameter in the SQL query.

Aggregate function and GROUP BY clause

For background searches only, Content Platform Engine supports SQL aggregate functions and the GROUP BY clause. A SQL aggregate function performs a calculation on a set of values and returns a single value that is a result of the calculation. The GROUP BY clause is used with one or more aggregate functions to group, by column, a set of rows that are returned in a query. The following SQL aggregate functions are supported:

  • COUNT(): Returns the number of items in the expression.
  • MAX(): Returns the largest value in the expression.
  • MIN(): Returns the smallest value in the expression.
  • SUM(): Returns the sum of the values in the expression
Custom search functions

Custom search functions are introduced in this release. Custom search functions are created in an object store and can be used in the SELECT list of a SQL statement for both ad hoc and background searches. Each custom search function receives one or more input parameters and outputs a return value. For this feature, the CmSearchFunctionDefinition class and the CmFunctionName property have been added. This class defines a custom SQL search function that can be invoked during a search. In addition, the SearchFunctionHandler class has been added, which allows you to implement a custom search function handler. This class has the following new methods: evaluate, getFunctionName, requiresTransaction, and validate.

Security principal-valued properties

Starting with this release, an object-valued custom property can hold a security principal value (SID), which references a user or group object. As a result, the RequiredClassId property of a PropertyDefinitionObject object can now be set to the SecurityPrincipal class or one of its subclasses, User or Group. In previous releases, the RequiredClassId property was limited to GCD and RepositoryObject classes. In support of this feature, the SecurityIdMappingCacheMaxEntries property has been added to the ObjectStore class.

New SQL functions

To provide support for security principal-valued properties in SQL queries, the following SQL functions have been added to the Content Engine SQL query syntax:

  • SecurityPrincipal: This function is used in a search query to allow comparisons with a user or group security principal ID.
  • CurrentUser: This function is used in a search query to allow user comparisons with the current logged in user.
Multiple domains

Beginning with this release, logically separate multiple domains can be set up that share the same physical infrastructure and resources. You can set up multiple domains, called tenant domains, that are managed by a master domain. For this feature, the DomainType class constant and the following new Domain properties have been added: AuthenticationRealmName and DomainType.

Support for creating multi-column database indexes

In previous releases, a database administrator could manually create a multi-column index using the native database tools. The 5.2.1 release includes a new class, CmIndexDefinition, that provides support for creating multi-column indexes programmatically (as well as via the Administration Console for Content Platform Engine). For more information, see CmIndexDefinition. For information on how to incorporate manually created indexes into the Content Platform Engine metadata, see Upgrade custom applications.

Other API changes in support of this feature include:

  • A new interface, CmIndexedColumn, which defines a column for an index.
  • A new property on the TableDefinition class, IndexDefinitions, which specifies the set of index definitions that correspond to a table definition.
  • The ColumnDefinition property, IsSingleIndexed, is deprecated.
New IsDateOnly property for presentation or rendering

A new property, IsDateOnly, has been added to the PropertyDescriptionDateTime, PropertyDefinitionDateTime, and PropertyTemplateDateTime classes. You can use this property as a hint that your application should treat this DateTime property as a date-only property for presentation or rendering. Note that there is no Content Engine server behavior associated with this property.

Content Platform Engine Client Download Service API developers

Components from the following features can now be downloaded from the Content Platform Engine Client Download Service:

  • Client Download Java API
  • Deployment Manager Integration
  • .Net API DLL
  • .Net API Installer

Process Java API developers

The Process Java API includes new classes and methods.

New classes
VWXLIFFDefinition

Use this class to create, read, delete, or modify XLIFF definitions for different locales within a region.

VWXLIFFList

Use this class to create, read, delete, or modify XLIFF definition items. This is similar to the other region metadata list classes (VWRegionFieldList, VWSLAList and VWWorkScheduleList).

New field constant and methods on existing classes
VWAttachmentType
/**
 * Value of 7: indicating the attachment type is a Task object.
 * @since CPE 5.2.0.3 IF003
 */
public static final int ATTACHMENT_TYPE_TASK = 7;
VWLogElement
/**
 * Gets the simple sequence number of the record, beginning the
 * count at 1 and increasing by one with each new record.
 * @return The sequence number of the log record.
 * @exception VWException Thrown for various reasons, including when
 * the sequence number is not found.
 * @since CPE 5.2.1.0
 */
public double getSequenceNumberAsDouble() throws VWException
VWNotificationSettings
/**
 * Gets the 'allow local SMTP settings' flag.
 * 
 * @return The 'allow local SMTP settings' flag value.
 * @throws VWException Thrown for various causes.
 * @since CPE 5.2.1.0
 */
public boolean getAllowLocalSMTPSettings() throws VWException
/**
 * Sets the 'allow local SMTP settings' flag.
 * 
 * @param bAllowLocalSmtpSettings Specify <code>true</code> to allow   
 * specification of 'local' notification settings.  If <code>false</code>,  
 * the GCD settings will be used.  
 * @throws VWException Thrown for various causes. 
 * @since CPE 5.2.1.0 
 */ 
public void setAllowLocalSMTPSettings(boolean bAllowLocalSmtpSettings)
  throws VWException
VWParameter
/**
 * Gets a VWAttribute object containing attributes for this object,
 * as paired labels (keywords) and values in String format.
 * 
 * @return A VWAttribute object containing attributes for this object,
 * as paired labels (keywords) and values in String format.
 * @throws VWException
 * @since CPE 5.2.0.3 IF003
 */
public VWAttributeInfo getAttributeInfo() throws VWException
VWParameterDefinition
/**
 * Gets a VWAttribute object containing attributes for this object,
 * as paired labels (keywords) and values in String format.
 * Note: Attributes can not be retrieved from an operation's parameter.
 * 
 * @return A VWAttribute object containing attributes for this object,
 * as paired labels (keywords) and values in String format.
 * @throws VWException
 * @since CPE 5.2.0.3 IF003
 * @see #setAttributeInfo
 */
public VWAttributeInfo getAttributeInfo() throws VWException
/** 
 * Sets a VWAttribute object containing attributes for this object. 
 * Note: Attributes can not be set on an operation's parameter.   
 * 
 * @param theAttributeInfo A VWAttribute object containing
 * attributes for this object, as paired labels (keywords) and
 * values in String format.
 * @throws VWException * @since CPE 5.2.0.3 IF003
 * @see #getAttributeInfo 
 */
public void setAttributeInfo(VWAttributeInfo theAttributeInfo) throws VWException
VWSession
/**
 * Fetches XLIFF definitions for the region associated with the connection point.
 * 
 * @param startLocale Returns the XLIFF definitions starting from the locale 
 * specified.  If all XLIFF definitions are required, specify <code>null</code>.   
 * This method must be issued again to return subsequent items from the list. 
 * @param count - max number of objects to return. 
 * @param greaterThan - if true, will query for all fields greater than the  
 * startLocale value.  If false, will query for items equal and greater than the 
 * startLocale. 
 * @throws VWException 
 * @since CPE 5.2.1.0 
 */ 
public VWXLIFFList fetchXliffList(Locale startLocale, int count, boolean greaterThan)
      throws VWException
/**
 * @fnexclude
 * Updates all the work objects of the given task object.  May only be called local
 * to the PE server.
 * @param taskObject - the task object to update
 * @param modifiedProperties a list of modified property symbolic names
 * @throws VWException
 * @since PE 5.2.0.3 IF003
 */
public void updateTaskWorkObjects(CmTask taskObject, StringList modifiedProperties) 
  throws VWException


Last updated: October 2015
wn_cpe_dev.htm

© Copyright IBM Corporation 2015.