The Content Engine Web Service (CEWS) is an industry standards-conformant SOAP interface to the IBM® FileNet® P8 Content Engine. It allows applications to access most of the functionality available through the Content Engine Java and .NET APIs.
CEWS provides general-purpose SOAP operations (methods) and elements that expose all of the Content Engine objects and most of their properties and methods. Its methods have been designed with performance and scalability in mind, by virtue of:
CEWS complies with the following web services specifications:
For an introduction to web services, see the following web site: Understanding Web Services.
CEWS uses the following Web Services Description Language (WSDL) format XML files:
Port/binding pairs are defined in CEWS according to the supported mechanisms for content transfer and are bound to the following endpoint URLs through which the associated WSDL can be accessed at runtime. The Content Engine server determines the content transfer method based on the endpoint used:
The elements and types defined in the CEWS schema are assigned to the following namespaces:
The WithObjectIdentityType
element provides the basis for identifying Content Engine objects, in which information describing an object (its class ID, object ID, and object store) are returned.
The Content Engine has two primary object types: independent and dependent:
IndependentObject
class. It is addressable and has a unique identity by which it
can be referenced for retrieval or update, and which is returned as part of
its object information in an operation response. An independent object is represented by an ObjectReference
element.DependentObject
class. It is non-addressable, does not possess a unique identifier by which it can be referenced, and can be identified only by value. A dependent object exists only within the scope of an independent object (via an object-valued property) and can be persisted only by persisting the independent object
to which it belongs. It is represented by a DependentObjectType
element.During object retrieval of objects that have object-valued properties, it is possible to reach the same object more than once if a property filter forces a recursion. (For example, retrieving a folder and forcing deep recursion through the Parent
and SubFolders
properties.) This can lead to runaway recursion and excessive memory usage on the server. To prevent this, the server uses a mechanism to suppress recursion into duplicate objects. This duplicate object suppression mechanism overrides the true recursion level and operates as if the maximum recursion level has already been reached for the duplicate object, therefore terminating recursion at a duplicate object. When a duplicate object is detected, an object reference (represented by an ObjectReference
element) is placed into the response instead of an object value (represented by an ObjectValue
element) and the serializationDuplicate
attribute of the object reference is set to true
. Duplicate object suppression has the following effects on returned objects:
ObjectReference
object (instead of an ObjectValue
object).Properties
collection is present).The scope of duplicate object detection encompasses each individual top-level component of a response (for example, an individual ObjectResponseType
within a GetObjects
response). Therefore, if an object appears beneath one top-level response element, and also appears beneath a different top-level response element, the second occurrence of the object is not treated as a duplicate.
Occasionally, an object value is returned for an object that occurs at a high recursion level while other copies of the same object occurring at a lower recursion level are suppressed. Because fewer properties will typically be returned for objects at higher recursion levels, the client might have a copy of the object that has a much smaller subset of properties than was desired. This can result in either additional network round trips to retrieve the missing properties, or errors if the client application does not realize that it is missing properties. When an object reference is returned instead of an object value, it might not be clear to the client application whether this is because of a normal property filter evaluation or duplicate object suppression.
A Content Engine object store server can provide access to multiple object stores, and multiple object store servers can provide access to each object store. Each object store server can host a single CEWS server, which can access any object store server in the P8 domain. CEWS clients can access any of the object stores through either of the object store servers. The following diagram shows a configuration with two object store servers and three object stores: