Overview of the Content Engine Object Model

Because the Content Engine Web Service (CEWS) interacts with Content Engine objects, it is important to understand the Content Engine object model.

Classes

Each class in the Content Engine represents a definition for a set of objects that have the same properties and methods. A class is identified by a symbolic name and one or more unique globally unique identifiers (GUIDs). In addition to its original GUID, a class ca have one or more alias IDs assigned to it for purposes of identification across object stores.

Content Engine classes can be classified into two main types:

Content Engine classes exist in a hierarchical structure, in which a class inherits its properties and methods from a parent class and can have properties and methods of its own. Example: Document -> WorkflowDefinition. In addition, certain classes allow you to subclass them, enabling you to create your own custom class based on a given Content Engine class, to which you can add custom (non-system) properties.

Most Content Engine objects describe the class to which they belong by means of the ClassDescription object-valued property. This property returns a ClassDescription metadata object, which has properties that define the class from which the object was instantiated. These properties describe the following:

Properties

Properties are the principal means by which objects expose and allow manipulation of their object state. Similar to a class, a property is identified by a symbolic name and one or more GUIDs. A property's value must be one of eight permitted data types and can be of single or multiple cardinality. Multi-valued properties have special methods to retrieve their data.

A multi-valued property can have a cardinality of list or enumeration:

List cardinality

Enumeration cardinality

The concrete properties of an instantiated object of a class are described by a list of PropertyDescription-inherited metadata objects. The actual object type of the property description is determined by the data type of the property it describes (PropertyDescriptionBinary, PropertyDescriptionBoolean, and so on). Each property description object has properties that describe the following:

In addition, each property description object has properties that are specific to the data type of the property it describes.

Property Data Types

Each Content Engine property must be one of eight permitted data types, which are specified in the Content Engine Java™ API by TypeID constants.

Data type Description XML schema .NET client (C# and VB)
Binary

Binary data type. Represents binary data by using an array of bytes (unsigned 8-bit integers).

xsd:base64Binary System.Byte[]
Boolean

Boolean data type. Represents Boolean data having a value of true or false.

xsd:boolean System.Boolean
Date

DateTime data type. Represents an instance in time as a date and time of day in accordance with ISO 8601.

xsd:dateTime System.DateTime
Double

Double (Float64) data type. Represents an IEEE-standard 64-bit floating-point number, which has a value ranging from -1.79769313486232e308 to +1.79769313486232e308.

xsd:double System.Double
GUID

GUID (ID) data type. Represents a Globally Unique Identifier (GUID) or DCE Universally Unique Identifier (UUID), which is a 128-bit unique identification string enclosed by brackets in the following format: {3F2504E0-4F89-11D3-9A0C-0305E82C3301}.

GuidType System.String
Long

Long (Integer32) data type. Represents a signed 32-bit integer, which has a value ranging from -2,147, 483,648 to +2,147,483,647.

xsd:int System.Int32
Object

Object data type. Represents a Content Engine object.

ObjectEntryType WebReference.ObjectEntryType
String

String data type. Represents text consisting of a sequential collection of 16-bit Unicode characters.

xsd:string System.String

Modifying Class and Property Metadata

Because ClassDescription and PropertyDescription objects must maintain a fixed metadata "snapshot" in order to avoid the potential for unstable metadata when the relationships and hierarchies of objects change, a parallel set of objects exist for the purpose of allowing the modification of class and property metadata: the ClassDefinition and PropertyDefinition objects. Only classes and properties that can be subclassed or modified have a corresponding class or property definition that you can modify. Once the metadata for a given class or property has been changed and persisted in its ClassDefinition and PropertyDefinition objects and a stable metadata state has been obtained by the Content Engine server, its ClassDescription and PropertyDescription objects in the object store are updated with the new metadata state.

To create a new class using the Content Engine Java API, call the createSubclass method of a particular ClassDefinition object and modify or add PropertyDefinition objects to its PropertyDefinitions collection. With CEWS, instead of using the createSubclass method, use the ExecuteChanges operation with CreateAction to create a new ClassDefinition object and specify its superclass as its creation scope (in the TargetSpecification subelement of ChangeRequestType).

To create a new property definition and add it to a new or existing class definition, you must first create a PropertyTemplate object corresponding to the data type of the property you wish to create (PropertyTemplateBinary, PropertyTemplateBoolean, and so on). Once you have instantiated a property template object and populated its properties, you can use its createClassProperty method to create a property definition object.