Because the Content Engine Web Service (CEWS) interacts with Content Engine objects, it is important to understand the Content Engine object model.
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:
IndependentObject
: Objects instantiated from subclasses of this class are independent objects, which are addressable and have a unique identity by which they
can be referenced. In addition, objects instantiated from the IndependentPersistableObject
subclass can be persisted independently in the object store database by calling their save
method. Examples: Document
, ChoiceList
, Folder
. DependentObject
: Objects instantiated from subclasses of this class are dependent objects, which are non-addressable. They do not possess a unique identifier by which they can be referenced and therefore can be identified only by value. These type of objects exist only within the scope of an independent object. In addition, objects instantiated from the DependentPersistableObject
subclass can be persisted only when the independently persistable object
to which they belong (via an object-valued property) is persisted. They do not have a save
method of their own. Examples: DocumentState
, Choice
.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:
DescriptiveText
, DisplayName
, Id
, Ids
, Name
, SymbolicName
.AllowsInstances
, ClassDescription
, HasIncludeSubclasses
, HasProperSubclassProperties
, IsHidden
, IsPersistent
, IsSecurable
. ImmediateSubclassDescriptions
, ProperSubclassPropertyDescriptions
.SuperclassDescription
, SuperclassPropertyCount
.NamePropertyIndex
, Properties
.DefaultInstancePermissions
, PermissionDescriptions
. PropertyDescriptions
. These PropertyDescription
objects have properties that describe the metadata for each object property.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:
DescriptiveText
, DisplayName
, Id
, Ids
, Name
, SymbolicName
.Cardinality
, ChoiceList
, ClassDescription
, DataType
, IsHidden
, IsOrderable
, IsReadOnly
, IsSearchable
, IsSelectable
, IsSystemGenerated
, IsSystemOwned
, IsValueRequired
, RequiresUniqueElements
, Settability
.In addition, each property description object has properties that are specific to the data type of the property it describes.
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 |
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 |
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
element 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.