The following table lists the types derived from IRepositoryObject .

Derived Types

Type Description
IAddOnInstallationRecord Represents a record that contains information pertaining to the installation of an add-on. An AddOnInstallationRecord object is created whenever an AddOn or UpgradeAddOn object is installed on an object store.
IAsyncUpgradeQueueItem For internal use only. Represents a pending (queued) execution of an asynchronous upgrade action.
IAuditDefinition Represents a definition that specifies audit-event parameters. Audit events are set on a per-class basis: use this interface to configure a ISubscribableClassDefinition object or subobject for auditing. Create an IAuditDefinition object for each event that you want to audit for the class.

To create a IAuditDefinition object, call the createInstance method on the Factory.AuditDefinition class. Once created, set its properties, which define the event to be audited and other parameters.

For each IAuditDefinition object that you create, add it to a IAuditDefinitionList collection, then set the collection on the ISubscribableClassDefinition object.

To retrieve IAuditDefinition objects, get the IAuditDefinitionList collection and iterate it.

IChoice Represents a single choice item in a choice list that can be assigned to a property, or represents a group node for a nested collection of choice items within a choice list. A choice item is a single possible value, or choice, in a choice list. A choice item can be of two possible types: integer or string. An integer-type choice item holds a single integer value and can be assigned only to an integer-valued property. A string-type choice item holds a single string value and can be assigned only to a string-valued property.

A Choice object is a dependently persistable object; it has no Save method and therefore cannot be independently saved. Because any given Choice object is dependent on the independently persistable com.filenet.api.admin.ChoiceList object to which it belongs, its state is not saved until you call the Save method of the ChoiceList object that owns it. For a given Choice object to belong to a com.filenet.api.admin.ChoiceList object, it must be added to the com.filenet.api.collection.ChoiceList collection that is returned by the com.filenet.api.admin.ChoiceList object's ChoiceValues property.

The type of data that a Choice object can represent is determined by the ChoiceType constant value that you specify with its ChoiceType property. This property determines whether a Choice object represents an integer-type choice item, a string-type choice item, a group node for a nested collection of integer-type choice items, or a group node for a nested collection of string-type choice items.

Localization is provided by the DisplayNames property, using the same mechanism that ClassDefinition and PropertyTemplate objects use. However, unlike those objects, the Choice object does not have a DescriptiveTexts property. To localize a Choice object, set its DisplayNames property to a LocalizedStringList object containing a collection of LocalizedString objects. Each object in this collection represents a locale-specific, user-readable display name that can be used for a Choice object; set its LocaleName property to a locale ID and its LocalizedText property to the localized text for the display name. Once you have set the DisplayNames property, the server will automatically set the value of the DisplayName property to the LocalizedText property value of the LocalizedString object in the LocalizedStringList collection that corresponds to the object store's default locale.

A Choice object's display name, or label, identifies it and is stored by its DisplayName property. You can either set the DisplayName property directly or you can set it indirectly by setting the DisplayNames property. Setting the DisplayNames property is the preferred method. You must set either a Choice object's DisplayName property or its DisplayNames property; you cannot set both. If you set the DisplayName property, the server will automatically create a LocalizedString object with its LocaleName property set to the object store's default locale and add it as a single item in the DisplayNames property's LocalizedStringList collection. If you set the DisplayName property directly, localization will be bypassed and the language of its text may not match the specified locale. For example, if you store English text (en-us) in the DisplayName property and the default locale is French (fr-fr), the DisplayNames property will return a collection containing a single LocalizedString object that specifies a French locale with English text. Note that this behavior is unique to Choice objects.

A Choice object's display name, which is always a string value, should not be confused with its value, which can be a string, an integer, or a collection of Choice objects (when a Choice object acts as a group node). A Choice object's display name is assigned with the DisplayName property, while its value is assigned using the appropriate property, depending on its type: ChoiceIntegerValue for integer-type choice items, ChoiceStringValue for string-type choice items, or ChoiceValues for group nodes. Although the server does not check the display names and values of the choice items within a given choice list for uniqueness, it is recommended that they be unique to avoid ambiguity.

To create a Choice object, call the Factory.Choice.CreateInstance method. In order to save the state of a new Choice object (when you save the com.filenet.api.collection.ChoiceList object to which it belongs), you must, at a minimum, set its ChoiceType and DisplayNames properties. The DisplayNames property can be either set directly, by setting it to a LocalizedStringList object; or set indirectly, by setting the DisplayName property. To create a list collection of Choice objects (com.filenet.api.collection.ChoiceList object), call the Factory.Choice.CreateList method.

IChoiceList Represents a choice list in an object store. Each choice list contains a list collection of Choice objects that, when associated with a property, provides a discrete set of possible values that the property can hold. By using a choice list, you can enforce restrictions on property values.

There are two types of choice lists: integer and string. A choice list's type is specified by the following TypeID constant values, which are stored in a ChoiceList object's DataType property:

  • LONG: A ChoiceList object that represents a choice list that holds integer-type Choice objects. Each Choice object in such a choice list must represent either an integer-type choice item or a group node that holds a nested collection of integer-type Choice objects. An integer-type choice list cannot contain any string-type Choice objects.
  • STRING: A ChoiceList object that represents a choice list that holds string-type Choice objects. Each Choice object in such a choice list must represent either a string-type choice item or a group node that holds a nested collection of string-type Choice objects. A string-type choice list cannot contain any integer-type Choice objects.
Note that although there are eight TypeID constants, only LONG and STRING are valid constants for a ChoiceList object's DataType property.

A ChoiceList object is independently persistable (that is, it can be saved directly using its Save method) and controls the state of any dependently persistable Choice objects that belong to it. You can access each Choice object that belong to a ChoiceList object in the com.filenet.api.collection.ChoiceList collection that is specified by its ChoiceValues property. Each Choice object in this collection represents either an individual choice item or a group node for a nested collection of Choice objects.

A choice list's display name is stored in its DisplayName property and must be unique within an object store. Unlike a Choice object, a ChoiceList object does not have a mechanism for localizing its display name.

Choice list hierarchy is specified by its HasHierarchy property. This read-only property indicates whether a given choice list has a hierarchical structure or not. If the choice list contains at least one Choice object that represents a group node, the server automatically sets this property to true.

For a choice list to be useful, it must be associated with a property. You can either associate a choice list with a property template, therefore causing it to be automatically associated with every property definition created from that property template, or you can associate a choice list with an individual property definition. To associate a choice list with a property template or a property definition, set its ChoiceList property to the com.filenet.api.admin.ChoiceList object representing the choice list.

To create a new ChoiceList object, call the Factory.ChoiceList.CreateInstance method. Set the appropriate properties and add any Choice objects to the com.filenet.api.collection.ChoiceList collection specified by its ChoiceValues property. Call the Save method to save the new object to the persistent store. For the save to be successful you must, at a minimum, set the new ChoiceList object's DisplayName and DataType properties.

IClassDefinition Represents the class definition (mutable class metadata) of non-versionable, non-subscribable classes. Subclasses of the Subscribable class are defined in SubscribableClassDefinition objects, except for the Document class and its subclasses, which are defined in DocumentClassDefinition objects, and the Event class and its subclasses, which are defined in EventClassDefinition objects. You can modify class definition metadata via its properties and property definitions throughout the life of an instantiated object. Note, however, that you cannot modify a class definition's ClassDescription property.
ICodeModule Represents a user-implemented Java event handler that's executed when a IAction-based object's events are raised. The event handler can be a Java class or JAR file, and must reside on the Content Engine.

To create a ICodeModule object, call the CreateInstance method on the Factory.CodeModule class, and then set the content elements of the Java module with the ContentElements property. Each content element must have the correct mime type property. For content elements containing a Java class, acceptable mime types are "application/java", "application/java-byte-code", and "application/x-java-class". For content elements containing a JAR, acceptable mime types are "application/java-archive", "application/x-compressed", "application/x-zip-compressed", "application/zip", and "multipart/x-zip".

Note:

      The content elements that you set on a ICodeModule object must be of type IContentTransfer, not IContentReference. If you attempt to save a ICodeModule object with a IContentReference type in the content element list, the object will throw an EVENT_CM_CONTENTREFERENCE_NOT_ALLOWED exception.
      If you create a new version of a ICodeModule, such as by updating the event handler content, then you must set the new version to the CodeModule property of any IAction-based object for which the new ICodeModule version is intended.

To instantiate a ICodeModule object, call the GetInstance or FetchInstance method on the Factory.CodeModule class.

As an alternative to representing a Java event handler as a ICodeModule object, you could specify the Java event handler in the classpath of your application server. However, in an enterprise environment, we recommend that you check in an event handler and any supporting libraries as a code module. Code modules are automatically available when deploying the Content Engine to multiple application server instances, or moving your content metadata from one system to another. If you reference event handlers in the classpath of an application server, you must manually distribute them to new systems.

For cache configuration considerations, see the applicable code module-related properties in IServerCacheConfiguration interface.

See also the Javadocs for the following interfaces: DocumentClassifier, DocumentLifecycleActionHandler, EventActionHandler

IColumnDefinition Represents the description of a column in a Content Engine database table. A ColumnDefinition object describes a column used by a TableDefinition object. By reading the properties of these objects, you can query the values contained in a table.
IDatabaseStorageArea Represents a storage area for content elements stored in the database.
IDocumentClassDefinition Represents the class definition (mutable class metadata) of the Document class and its subclasses. You can modify class definition metadata via its properties and property definitions throughout the life of an instantiated object. Note, however, that you cannot modify a class definition's ClassDescription property.
IDocumentClassificationQueueItem Represents a pending (queued) document auto-classification request. The QueuedObject property specifies the document that is the subject of the queued request.
IEventClassDefinition Represents the class definition (mutable class metadata) of event classes whose instances can be subscribed to or audited. To instantiate a IEventClassDefinition object, call the getInstance or fetchInstance method on the Factory.EventClassDefinition class. To use IEventClassDefinition in a subscription or for auditing, set the EventClass property on a ISubscribedEvent or IAuditDefinition object, respectively.

You can modify class definition metadata via its properties and property definitions throughout the life of an instantiated object. Note, however, that you cannot modify a class definition's ClassDescription property.

IEventQueueItem Represents a pending (queued) execution of an asynchronous event action, or an asynchronous event queue item that remains unprocessed because its retry count is zero. The IEventQueueItem interface includes properties for setting and retrieving the source object and event of the pending event action.

To instantiate a IEventQueueItem object, call the getInstance or fetchInstance method on the Factory.EventQueueItem class.

IFileStorageArea Represents a storage area for content elements stored in the file system.
IFixedStorageArea Represents a storage area for content elements stored in a fixed content device.
IIndexArea Represents the disk storage location and data necessary to perform full-text indexing for content-based retrieval.

A single index area holds data for only one object store, using one file system directory. Spreading the indexing information across multiple file systems requires the use of multiple index areas.

The ResourceStatus property is set to "full" by the server when the number of collections is equal to VerityIndexArea.MaxCollections (no more VerityCollections can be created in this IndexArea). A replacement IndexArea (having a status of "standby" will be set to "open". If the status of an IndexArea is not "open", no new Verity collections will be created in the IndexArea. However, Verity collections in the IndexArea will be searched during queries, regardless of status.

IIndexJob Initiates and tracks the status of a full text indexing operation. IndexJob is used to rebuild the full text index in the event that it becomes corrupted, or a configuration change requires that the full text index be rebuilt. The following types of indexing scenarios are supported:

All currently indexed data is available while indexing is in progress, but some queries will get duplicate matches from full text searches, due to matches in both the old and the new index data. When the IndexJob operation completes, old copies of the data are removed (duplicate matches will no longer occur).

Most index jobs require sweeping the database looking for collections or classes to be indexed. This sweep requires a table scan on the database (taking a considerable length of time on a large table), even if the amount of data to be indexed is minimal. The database table scans are performed once for all classes to be indexed in a table, and once for all collections to be indexed in a table. To minimize the number of table scans required, we recommend you put all classes or collections to be indexed for the same table into a single IndexJob operation.

IIndexJobClassItem Identifies the class to be full text indexed. When a property or class is enabled or disabled for indexing, objects with newly enabled properties/classes need to be indexed, and objects with newly disabled properties/classes need to be removed from the index. The specified class can be any base class (such as, Document or Folder), or any of its subclasses, that support indexing. All instances of the specified class are indexed.

Warning: Do not change the CBREnabled status of a class or property while an IndexJob operation is running on that class. Doing so will cause unpredictable results. Instead, abort any index job running on a class before changing the configuration, then resubmit the index job for that class.

If the class selected to index is a base class (Versionable, Document, Annotation, Folder, or CustomObject), new VerityCollection objects are created to hold the new indexing information. When this index operation completes, the old collections that previously held the indexing information are deleted. Because deleting the indexing information is not done on an individual object basis, and is instead done by deleting all relevant Verity collections, indexing a base class is somewhat faster than indexing a subclass of the base class.

Note: For indexing purposes, the Document class is also considered to be a base class, because the Document class is the only subclass of the Versionable class, and no instances of the Versionable class can be created.

For Document or Annotation objects created using a FileNet P8 3.5.x installation: If the CBREnabled status is changed to disabled for a class that had either Document or Annotation objects that were indexed, the index job to remove the indexing information should be run before any documents or annotations are deleted or modified (the content elements removed). If this cannot be accomplished, the Document and/or Annotation class and all subclasses of these classes should be reindexed.

IIndexJobCollectionItem Identifies a Verity collection to be full text indexed. When the indexing data for one or more Verity collections becomes corrupted or lost (due to a storage device failure), the collection needs to be reindexed. This operation deletes the current indexing data, and creates new full text index data to replace it.

Warning: Do not use collection indexing to address a change in the CBREnabled status on a class or property. Only the existing data in the collection will be submitted to be indexed (even if all collections of an object store are selected). Any classes newly enabled/disabled for indexing will not be reindexed because instances of these classes may not be in the existing collections.

IIndexJobItem Indicates a particular item that is being full text indexed.
IIndexJobSingleItem Identifies an object to be full text indexed. When the original index attempt results in an indexing failure for a single object (such as a Document or Annotation object), or some aspect of the configuration (such as a Verity style file) needs to be changed, the affected object can be reindexed. Performing this operation on an object whose class is CBR enabled attempts to reindex the object. Performing this operation on an object whose class is not CBR enabled attempts to delete the object from any existing indexes.
ILocalizedString Provides a means of support for locale-specific display names and descriptive text used by a class definition or property template.

You can create an instance of a LocalizedString object by calling the CreateInstance method on the Factory.LocalizedString class.

IPropertyDefinition Represents the base class for all property definition classes. A property definition is created from a property template and holds mutable property metadata. Each property definition class corresponds to a specific property data type (for example, PropertyDefinitionBinary defines a property that returns a binary value, PropertyDefinitionBoolean defines a property that returns a Boolean value, and so on). When a property definition is added to a class definition's PropertyDefinitions collection, a user-defined property is added to that class.
IPropertyDefinitionBinary Represents the definition of a property that holds a binary value. A PropertyDefinitionBinary object is created from a PropertyTemplateBinary object and contains mutable property metadata that you can customize. When a PropertyDefinitionBinary object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionBoolean Represents the definition of a property that holds a Boolean value. A PropertyDefinitionBoolean object is created from a PropertyTemplateBoolean object and contains mutable property metadata that you can customize. When a PropertyDefinitionBoolean object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionDateTime Represents the definition of a property that holds a DateTime value. A PropertyDefinitionDateTime object is created from a PropertyTemplateDateTime object and contains mutable property metadata that you can customize. When a PropertyDefinitionDateTime object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionFloat64 Represents the definition of a property that holds a Double (Float64) value. A PropertyDefinitionFloat64 object is created from a PropertyTemplateFloat64 object and contains mutable property metadata that you can customize. When a PropertyDefinitionFloat64 object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionId Represents the definition of a property that holds a GUID string value. A PropertyDefinitionId object is created from a PropertyTemplateId object and contains mutable property metadata that you can customize. When a PropertyDefinitionId object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionInteger32 Represents the definition of a property that holds an integer value. A PropertyDefinitionInteger32 object is created from a PropertyTemplateInteger32 object and contains mutable property metadata that you can customize. When a PropertyDefinitionInteger32 object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionObject Represents the definition of a property that holds a Content Engine object value. A PropertyDefinitionObject object is created from a PropertyTemplateObject object and contains mutable metadata that you can customize. When a PropertyDefinitionObject object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyDefinitionString Represents the definition of a property that holds a string value. A PropertyDefinitionString object is created from a PropertyTemplateString object and contains mutable property metadata that you can customize. When a PropertyDefinitionString object is added to a class definition's PropertyDefinitions collection, a user-defined property is created in that class.
IPropertyTemplate Represents the base class for all property template classes. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateBinary Represents a property template for creating PropertyDefinitionBinary objects, which you can add to class definitions to create user-defined properties for holding binary values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateBoolean Represents a property template for creating PropertyDefinitionBoolean objects, which you can add to class definitions to create user-defined properties for holding Boolean values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateDateTime Represents a property template for creating PropertyDefinitionDateTime objects, which you can add to class definitions to create user-defined properties for holding DateTime values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateFloat64 Represents a property template for creating PropertyDefinitionFloat64 objects, which you can add to class definitions to create user-defined properties for holding Double (Float64) values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateId Represents a property template for creating PropertyDefinitionId objects, which you can add to class definitions to create user-defined properties for holding GUID string values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateInteger32 Represents a property template for creating PropertyDefinitionInteger32 objects, which you can add to class definitions to create user-defined properties for holding integer values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateObject Represents a property template for creating PropertyDefinitionObject objects, which you can add to class definitions to create user-defined properties for holding Content Engine object values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IPropertyTemplateString Represents a property template for creating PropertyDefinitionString objects, which you can add to class definitions to create user-defined properties for holding string values. A property template is a global template that enables you to create one or more property definitions for a given data type with the same set of property values.
IQueueItem Is the base class for all queue-related classes. Queue-related classes represent a pending (queued) execution of an asynchronous action on a target object. For example, a document may have a pending document classification action.

You cannot create a new instance of IQueueItem, but you can call GetInstance or FetchInstance on Factory.QueueItem to retrieve an instance of this subclassable class.

IReplicableClassDefinition Represents the class definition (mutable class metadata) of classes of which an object instance can be replicated.
ISecurityPropagationQueueItem Represents a pending (queued) execution of an asynchronous security propagation action on a target object. Security propagation means the security assigned to a parent object will be inherited by its child objects.

You cannot create a new instance of ISecurityPropagationQueueItem, but you can retrieve a persisted object by calling FetchInstance or GetInstance on Factory.SecurityPropagationQueueItem.

IStorageArea Represents the physical storage location where content will be stored. This base, abstract class has three concrete subclasses: DatabaseStorageArea, FileStorageArea, and FixedStorageArea. A FixedStorageArea object is associated with a FixedContentDevice object when it is created.

The concrete classes are customizable. This means that you can add custom properties to them (and to the base class) and create custom subclasses. By customizing the concrete classes, you can add custom criteria for selecting storage areas via a StoragePolicy.

IStoragePolicy Represents a subset of available storage areas that are deemed equivalent based on common, user-specified criteria. If a Document or Annotation object is set to use this StoragePolicy, the Content Engine will assign a storage area from this subset (pseudo-randomly, to balance load).
ISubscribableClassDefinition Represents the class definition (mutable class metadata) of classes whose instances can be the target of a subscription and can be audited. SubscribableClassDefinition objects hold the class definitions for all subclasses of the Subscribable class except for the Document class and its subclasses, whose class definitions are held by DocumentClassDefinition objects. You can modify class definition metadata via its properties and property definitions throughout the life of an instantiated object. Note, however, that you cannot modify a class definition's ClassDescription property.
ITableDefinition Represents the description of a Content Engine database table. All the tables used by the Content Engine database have corresponding TableDefinition objects that are accessible using the TableDefinitions property of an ObjectStore object.

You can also access a TableDefinition object as follows:

  • Through the TableDefinition property of a ClassDefinition, DocumentClassDefinition, SubscribableClassDefinition, or VersionableClassDefinition object. This type of TableDefinition object maps to a database table that contains information about a specific class.
  • Through the TableDefinition property of a property definition object (such as, PropertyDefinitionBinary or PropertyDefinitionBoolean). This type of TableDefinition object maps to a Content Engine database table that contains information about a specific queryable property.
IVerityCollection Identifies the full text indexing information used for a particular base class and all of its subclasses. A VerityCollection is associated with only one IndexArea, and the full text information is stored in a file system directory identified by the VerityIndexArea.RootDirectoryPath property.

For each VerityCollection object in the Content Engine database, there is a corresponding collection maintained by the Verity software that actually holds the full text index data. The name of this collection is identified in the VerityCollection.CollectionName property.

VerityCollection objects are automatically created by the server when needed, and do not need to be created by a client application. When full text indexing is available, and the first instance of a class is created or modified, the server looks for an existing VerityCollection associated with the appropriate base class, and will use this VerityCollection. If a VerityCollection is not found, a new VerityCollection is created, along with the corresponding collection maintained by the Verity software.

An application can set the ResourceStatus property to "closed" if a problem occurs with writing data to a particular VerityCollection, or to "unavailable" if the collection is expected to be made available again eventually.

The ResourceStatus property is set to "full" by the server when the number of rows in the collection is greater than VerityServerConfiguration.MaxRowsPerCollection (no new data will be written to the collection). Whenever a collection is needed for writing full text information, the collection is selected from the list of eligible "open" collections. If no open collection exists, then a collection with a status of "standby" is selected, and that collection’s status is changed to "open".

New indexing information is written only to collections having a status of "open". However, all collections, regardless of their status, are searched when queries are performed. To prevent a collection from being searched, the associated VerityCollection object must be deleted.

IVerityIndexArea Contains information about an index area that is specific to the Verity content-based retrieval engine. The ObjectStore.CBRLocale property must be set before creating an instance of this class.

The RootDirectoryPath property identifies the directory used to store full text indexing information.

IVersionableClassDefinition Represents the parent of the DocumentClassDefinition class, which holds the class definition of a Document class and its subclasses.
IXMLPropertyMappingScript Represents the definition of a Document subclass for defining XML property mapping scripts. The Content Engine XML Classifier uses XML property mapping scripts to populate document object properties with values based on data extracted from an XML document’s content. Administrators build mapping scripts that associate XML tags in the incoming document to properties, thus enabling the automatic classification of any XML document. An XMLPropertyMappingScript object, in addition to having all of the capabilities of a Document object, provides a container for user-authored XSL scripts for transforming XML documents of a specified type. The script contains instructions for extracting content from source XML documents of the type identified by the XMLDocumentType property in order to map it onto property values for the properties associated with the target document class identified by the TargetClass property.
IAnnotation Represents an annotation that can be applied to a document, folder, or custom object. An Annotation object allows you to link additional information to a containable object. You can modify and delete annotations independently of their annotated object. However, you cannot create versions of an annotation separately from the object with which it is associated. Document annotations are uniquely associated with a single document version; they are not versioned or carried forward when their document version is updated and a new version created. By design, an annotation is deleted whenever its associated parent object is deleted. Although an annotation receives its default security from both the annotation's class and parent object, you can apply security to an annotation that is different from the security applied to its parent.

To create a new Annotation object and associate it with a document, use the document object's CreateAnnotation method. To create a new Annotation object and associate it with a folder or custom object, first use the Factory.Annotation.CreateInstance() method to create a new Annotation object, then set its AnnotatedObject property to reference the object to which you want it associated. An annotation's content data can be specified via its ContentElements collection.

IComponentRelationship Defines a hierarchical relationship between two documents as components in a compound document.

One document is the designated parent component (ParentComponent property) and the other is the designated child component. The child component document can be either a P8 Content Engine document (ChildComponent property) or a URI document (URIValue property). A document can be referenced by more than one instance of this class and consequently can be designated as a component in more than one relationship; this capability allows documents to be networked together to form compound documents with numerous components.

The two documents in a component relationship might be bound to each other as a result of that relationship. Document binding means the child component document exists in the child documents collection (ChildDocuments property) for the parent component, and the parent component document exists in the parent documents collection (ParentDocuments property) for the child component. This binding can be conditional; for example, it can be conditional on the value for one of the properties on the child document matching an expected value. Also, the child component can be a URI document instead of a Document object. Consequently, not every component relationship results in a document binding. For more information on component relationship types and which properties you are required to set when you create a new ComponentRelationship object, see the ComponentRelationshipType property.

The two documents in a component relationship do not have to belong to the same object store. Also, these documents can continue to be used and referenced as individual documents, just as if they had never entered into a component relationship with each other.

The parent component document determines security for each instance of this class. Users with write permission (AccessRight.WRITE) to the parent component have the same rights to that component relationship instance. Permission to delete a component relationship instance requires AccessRight.DELETE or AccessRight.UNLINK rights on the parent component document.

IContainmentRelationship Models containment relationships. These can be either ReferentialContainmentRelationship or DynamicReferentialContainmentRelationship objects.
IContentElement Represents the superclass for classes used to access document or annotation content data. Each content element represents content data, which can either be local to an object store (represented by an ContentTransfer object) or external to an object store and therefore outside the control of the Content Engine server (represented by a ContentReference object).
IContentReference Represents external content data that exists outside of an object store (and therefore outside the control of the Content Engine server), but to which an object store maintains a reference. The URL of the resource that contains the content data is stored in the ContentLocation property.
IContentTransfer Represents content data that is local to an object store and directly managed by the Content Engine server.
ICustomObject Represents a general interface that can be subclassed. A CustomObject object has no inherent semantics, but is independently securable and can be persisted to an object store. A CustomObject does not carry content, is not versionable, and does not support lifecycle functionality.

The ICustomObject base interface provides a minimal set of properties (such as Creator, DateCreated, and Name). Unlike most Content Engine objects, the ICustomObject base interface does not have a specific property defined as the name property in order that subclassed objects can define it in an appropriate way. Because a CustomObject object does not have a defined name property, the value of its Name property reverts to the default value, which is the same as its ID property.

IDocument Represents a single version of a document stored in an object store. In addition to being versionable, a Document object can be subclassed and can carry content, which is stored in one or more content elements. Each content element represents content data, which can either be local to an object store (represented by a ContentTransfer object) or external to an object store and therefore outside the control of the Content Engine server (represented by a ContentReference object). In addition, a Document object can be associated with a document lifecycle policy. A document lifecycle policy defines a set of valid lifecycle states for a document, controls the transition of those states, and specifies the actions to be taken when a document's lifecycle state changes.
IDynamicReferentialContainmentRelationship Represents a dynamic relationship between two Containable subclasses: a container and the current version of a Document. The object-valued Head and Tail properties express the relationship. The tail always references a Folder (the container), while the head references the current version of a Document.
IFolder Represents a container that can hold other Containable subclasses, but cannot have content data of its own. Although Folder objects and their subclasses can be referentially contained, they are the only Containable subclass that can be directly contained (in a Folder). All other Containable subclasses are referentially contained using the ReferentialContainmentRelationship or DynamicReferentialContainmentRelationship classes.

Note: Folders that are referentially contained cannot participate in hierarchy index searches.

The container hierarchy is a one-to-many relationship: a folder can have many child folders, but a child folder can have only one parent folder. At the top of the container hierarchy is an automatically-created root folder. Use ObjectStore.RootFolder to get a reference to the root folder.

Folders are not versionable.

ReferentialContainmentRelationshipDynamicReferentialContainmentRelationship
ILink Represents a relationship between two objects. The object-valued Head and Tail properties express the relationship. Use a Link object for many-to-many relationships between any objects, or for referential containment relationships between objects that are not instances of Containable subclasses.

Note: This is a weak link relationship: both the Head and Tail properties have their DeletionAction metadata properties set to None. If you delete the object referenced by the head or tail, the Link object itself is not deleted.

IReferentialContainmentRelationship Represents a static relationship between two Containable subclasses: a container and a containee. The object-valued Head and Tail properties express the relationship. The tail always references a Folder (the container), while the head references the containee: another Containable subclass (such as another Folder, a CustomObject, or a Document). When the head is a Document object, it represents a specific document version.
IRelationship Represents the base class for binary relationships between independently persistable objects of an object store.
IVersionSeries Represents the complete set of versions for a versionable object, or document (that is, an object instantiated from a subinterface of the IVersionable interface). Because a VersionSeries object is constructed by the server from versionable objects and does not have its state stored in a database, it is read-only, and thus you cannot modify any of its properties. In addition, a VersionSeries object has no security attached to it; it is secured by the current document version associated with it. You can access a specific document version by navigating through the collection returned by the Versions property. Use extreme caution when deleting a VersionSeries object; if you delete it, all of its associated document versions will also be deleted.
IWorkflowDefinition Represents a workflow definition, an XML document of class "WorkflowDefinition" that is stored in a Content Engine object store. A workflow definition describes the instructions, paths, and queues available to a workflow, and acts as a processing template that the Process Engine uses each time the workflow runs. Workflow definition documents are versionable, containable, and can have a lifecycle associated with them.

The IWorkflowDefinition interface extends the IDocument interface, and can, therefore, be treated as a Document object. For example, a WorkflowDefinition object can have workflows linked to it. Therefore, a user selecting a workflow definition can either launch it, or launch a linked workflow.

To create a new WorkflowDefinition object and persist it to a Content Engine object store, call the CreateInstance method on the Factory.WorkflowDefinition class.

After you create a workflow definition, you link it to an object that implements the Subscribable interface by setting the SubscriptionTarget and WorkflowDefinition properties on a workflow subscription object (InstanceWorkflowSubscription or ClassWorkflowSubscription object). Note that you cannot delete a WorkflowDefinition object if a workflow subscription object refers to it in its WorkflowDefinition property.

To return all of the workflow subscription objects associated with this WorkflowDefinition object, retrieve the WorkflowSourceSubscriptions property.

You can instantiate a WorkflowDefinition object in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.WorkflowDefinition class.
  • By retrieving the WorkflowDefinition property on a workflow subscription object.
  • By instantiating a WorkflowDefinitionSet collection, then returning a WorkflowDefinition object from the collection.
IAction Represents an extensible, user-implemented action in response to an event triggered on a source object. This interface is the base for subinterfaces representing implemented actions to be taken for specific events, such as changing a document's lifecycle or deleting an object. The Content Engine Java API provides event handling interfaces that you must implement with the actions to be taken, coded as a Java module. You link an IAction-based object to an implemented event handler by setting the ProdId property. If you check in the Java module to a Content Engine object store, you must set the CodeModule property as well (see ICodeModule). Instead of checking in the Java module, you can set its location in the class path of the application server.

See also the Javadocs for the following interfaces: DocumentClassifier, DocumentLifecycleActionHandler, EventActionHandler

IActionConsumer Represents the consumer of Action-based objects. This interface is the base for subinterfaces representing specific consumers, namely, ISubscription-based interfaces and IDocumentLifecyclePolicy. Generally speaking, IActionConsumer objects enable user-implemented actions to execute when specified events fire on a specified Content Engine object.

You can instantiate a persisted IActionConsumer object by calling the getInstance or fetchInstance method on the Factory.ActionConsumer class.

See also the help for the following interfaces: DocumentClassifier, DocumentLifecycleActionHandler, EventActionHandler.

IAuditConfigurationEvent Represents an event that occurs when the auditing configuration of an object store is changed. Auditing is either enabled or disabled by setting the AuditLevel property on IObjectStore, and the IAuditConfigurationEvent object is saved.

You can instantiate a IAuditConfigurationEvent object in the following ways:

ICancelCheckoutEvent Represents an event that occurs when a reservation on a versionable object is canceled.

You can instantiate a ICancelCheckoutEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.CancelCheckoutEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of ICancelCheckoutEvent objects.
  • Retrieve a ICancelCheckoutEvent object from a ICancelCheckoutEventSet collection.
IChangeClassEvent Represents an event that occurs when the class of an object is changed.

You can instantiate a IChangeClassEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.ChangeClassEvent class.
  • Retrieve the AuditedEvents property on a IDocument, IFolder, or ICustomObject object, and iterate the IEventSet collection for instances of IChangeClassEvent objects.
  • Retrieve a IChangeClassEvent object from a IChangeClassEventSet collection.
IChangeStateEvent Represents an event that occurs when the lifecycle state of a Document object changes.

You can instantiate a IChangeStateEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.ChangeStateEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of IChangeStateEvent objects.
  • Retrieve a IChangeStateEvent object from a IChangeStateEventSet collection.
ICheckinEvent Represents an event that occurs when a versionable object is checked in.

You can instantiate a ICheckinEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.CheckinEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of ICheckinEvent objects.
  • Retrieve a ICheckinEvent object from a ICheckinEventSet collection.
ICheckoutEvent Represents an event that occurs when a versionable object is checked out.

You can instantiate a ICheckoutEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.CheckoutEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of ICheckoutEvent objects.
  • Retrieve a ICheckoutEvent object from a ICheckoutEventSet collection.
IClassifyCompleteEvent Represents an event that occurs when a document has been auto-classified, that is, assigned a document class automatically during checkin.

You can instantiate a IClassifyCompleteEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.ClassifyCompleteEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of IClassifyCompleteEvent objects.
  • Retrieve a IClassifyCompleteEvent object from a IClassifyCompleteEventSet collection.
Concepts: automatic document classifications
IClassSubscription Represents a subscription for events generated by all objects of a particular class. The target for these subscriptions must be a class definition.

To create a IClassSubscription object, call the CreateInstance method on the Factory.ClassSubscription class.

You can instantiate a persisted IClassSubscription object in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.ClassSubscription class.
  • By instantiating a ISubscriptionSet collection, then returning a IClassSubscription object from the collection.
IClassWorkflowSubscription Represents a subscription that initiates a workflow in response to events generated by all objects of a particular class. A IClassWorkflowSubscription object provides object properties to link a workflow (IWorkflowDefinition), a target object, and one or more events (ISubscribedEvent) that can be triggered on the target object. These objects must exist before you can create a IClassWorkflowSubscription object and persist it.

To create a IClassWorkflowSubscription object, call the createInstance method on the Factory.ClassWorkflowSubscription class.

You can instantiate a persisted IClassWorkflowSubscription object in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.ClassWorkflowSubscription class.
  • By instantiating a ISubscriptionSet collection, then returning a IClassWorkflowSubscription object from the collection.
  • By getting the WorkflowSubscriptions property on an IClassDefinition object, then iterating the IClassWorkflowSubscriptionSet collection.
ICreationEvent Represents an event that occurs when an object instance of a class is created and saved.

You can instantiate a ICreationEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.CreationEvent class.
  • Retrieve the AuditedEvents property on a IDocument, IFolder, or ICustomObject object, and iterate the IEventSet collection for instances of ICreationEvent objects.
  • Retrieve a ICreationEvent object from a ICreationEventSet collection.
ICustomEvent Represents a user-defined custom event. A custom event is raised whenever an object to which it is subscribed calls its RaiseEvent method.

To create a CustomEvent object, and persist it to a Content Engine object store, call the CreateInstance method on the Factory.CustomEvent class.

You can instantiate a CustomEvent object in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.CustomEvent class.
  • By retrieving the AuditedEvents property on the source object of the custom event, and iterating the EventSet collection for instances of CustomEvent objects.
  • By retrieving a CustomEvent object from a CustomEventSet collection.
IDeletionEvent Represents an event that occurs when an object is deleted from the object store.

You can instantiate a IDeletionEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.DeletionEvent class.
  • Retrieve the AuditedEvents property on a IDocument, IFolder, or ICustomObject object, and iterate the IEventSet collection for instances of IDeletionEvent objects.
  • Retrieve a IDeletionEvent object from a IDeletionEventSet collection.
IDemoteVersionEvent Represents an event that occurs when a versionable object is demoted to a minor version.

You can instantiate a IDemoteVersionEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.DemoteVersionEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of IDemoteVersionEvent objects.
  • Retrieve a IDemoteVersionEvent object from a IDemoteVersionEventSet collection.
IDocumentClassificationAction Defines the content type and the server-side Java implementation that automatically classifies a document of the defined content type. You must create the Java classifier by implementing the DocumentClassifier interface. To specify the content type of the documents for which a IDocumentClassificationAction object will apply, set the MimeType property. To specify the implemented Java classifier, set the ProgId property. Each IDocumentClassificationAction object that you create and save in a given object store is automatically added to the object store's collection of IDocumentClassificationAction objects.
IDocumentLifecycleAction Represents the actions to be taken when a document's lifecycle state is changed. A document's lifecycle states are defined in the DocumentStates collection of its associated DocumentLifecyclePolicy object. A document lifecycle policy defines a set of valid lifecycle states for a document, controls the transition of those states, and specifies the actions to be taken when a document's lifecycle state changes. To change the lifecycle state of a document, call its ChangeState method; you can change a document's current lifecycle state to another predefined state, set it to an exception state, or clear it from an exception state by specifying the appropriate LifecycleChangeFlags constant in the flags parameter.

To define the actions to take when a document’s lifecycle state is changed, write a Java handler class that implements the DocumentLifecycleActionHandler interface and code the actions to be taken for each type of lifecycle state change in the appropriate method. After you have finished writing the Java handler, you have two choices:

  • Check in the Java handler as a document and create a CodeModule object (using its CreateInstance factory method). Set the CodeModule property of the DocumentLifecycleAction object to the document that you checked in, and cast it as a CodeModule object.
  • Specify the Java handler in the classpath of your application server (it is not necessary to create a CodeModule object).

Lastly, set the ProgId property of the DocumentLifecycleAction object to the fully qualified package and class name of the Java handler.

IDocumentLifecyclePolicy Represents the lifecycle policy for a document. A document lifecycle policy defines a set of valid lifecycle states for a document, controls the transition of those states, and specifies the actions to be taken and which access permissions to be applied when a document's lifecycle state changes.

To define the lifecycle states in a document lifecycle policy, create a DocumentState object for each lifecycle state that you want to define and add it to the DocumentStateList collection referenced by the DocumentState property. You can set the ResetLifecycleOnCheckin property to define whether a document, when it is checked in, is reset to the initial lifecycle state in its document lifecycle policy or not. To define the actions to be taken when a document's lifecycle state changes, create a DocumentLifecycleAction object and set the DocumentLifecycleAction property to reference it. With the PreseveDirectPermissions property, you can elect to either preserve a document's direct (non-inherited) access permissions or replace them with the document lifecycle policy's access permissions.

IDocumentState Represents a valid lifecycle state of a document lifecycle policy. A document lifecycle policy defines a set of valid lifecycle states for a document, controls the transition of those states, and specifies the actions to be taken and which access permissions to be applied when a document's lifecycle state changes. To define the lifecycle states in a document lifecycle policy, create a DocumentState object for each lifecycle state that you want to define and add it to a DocumentLifecyclePolicy object's DocumentStates collection.

Each lifecycle state must have a name, which is set by the StateName property. Each lifecycle state name must be unique within the lifecycle policy in which it is defined. To specify whether a given lifecycle state can be demoted or not, set its CanBeDemoted property.

The order of the lifecycle states in a document lifecycle policy's DocumentStates collection is important and determines the succession of lifecycle states. When a document that is associated with a document lifecycle policy is created, its initial lifecycle state is the first DocumentState object in the document lifecycle policy's DocumentStates collection. To move a document into the next lifecycle state defined in the document lifecycle policy's DocumentStates collection, call the document's ChangeState method and set its flags parameter to the LifecycleChangeFlags.PROMOTE constant. To move a document into the previous lifecycle state (unless the document's current lifecycle state's CanBeDemoted property is set to false), set the method's flags parameter to DEMOTE.

The template permissions specified by the TemplatePermissions property will be applied during a lifecycle state change if you set the ApplyTemplatePermissions property to true; otherwise the permissions will not be applied. If the ApplyTemplatePermissions property to set to true and you reset a document's lifecycle state, either by calling its ChangeState method and specifying RESET or by calling its Checkin method while the ResetLifecycleOnCheckin property on its document lifecycle policy is set to true, the access permissions will be reset to the access permissions of the initial lifecycle state.

IEvent Represents a system or custom event that can be triggered on an Content Engine object or class of objects. This is the base event interface from which several subinterfaces derive, used primarily for auditing and subscriptions. You can audit all event types, and you can subscribe to all events with the exception of those that derive from the RetrievalEvent interface.

Through an event object, you can retrieve information about the object on which the event was fired, such as its permissions and the date the object was last modified. You can set some properties as well, if you have been granted privileged write access.

IEventAction Represents the actions taken when a subscribed event fires. You associate an event action with a Subscription-based object by setting the object's EventAction property.

To create an EventAction object and persist it to a Content Engine object store, call the CreateInstance method on the Factory.EventAction class.

You can instantiate an EventAction object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.EventAction class.
  • Get the EventActions property on an ObjectStore, and iterate the EventActionSet collection.
  • Call the get_ReferencingActions method on a CodeModule, and iterate the ActionSet collection for instances of EventAction objects.
  • Get the EventAction property on a Subscription object or subobject.
IFileEvent Represents an event that occurs when a folder has its File method called to file a Containable object, for example, a Document or CustomObject, or when the File method is called to create a subfolder.

You can instantiate a FileEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.FileEvent class.
  • Retrieve the AuditedEvents property on a Folder object, and iterate the EventSet collection for instances of FileEvent objects.
  • Retrieve a FileEvent object from a FileEventSet collection.
IFreezeEvent Represents an event that occurs when the Freeze method of a Versionable object is successfully called.

You can instantiate a IFreezeEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.FreezeEvent class.
  • Retrieve the AuditedEvents property on a IDocument object, and iterate the IEventSet collection for instances of IFreezeEvent objects.
  • Retrieve a IFreezeEvent object from a IFreezeEventSet collection.
IGetContentEvent Represents an event that occurs when the content of a content-carrying object is retrieved. This event can only be audited; you cannot subscribe to it.

You can instantiate a GetContentEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.GetContentEvent class.
  • Retrieve the AuditedEvents property on a Document object, and iterate the EventSet collection for instances of GetContentEvent objects.
  • Retrieve a GetContentEvent object from a GetContentEventSet collection.
IGetObjectEvent Represents an event that occurs when an object is retrieved from the object store. This event can only be audited; you cannot subscribe to it.

You can instantiate a GetObjectEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.GetObjectEvent class.
  • Retrieve the AuditedEvents property on a RepositoryObject subclass, and iterate the EventSet collection for instances of GetObjectEvent objects.
  • Retrieve a GetObjectEvent object from a GetObjectEventSet collection.
IInstanceSubscription Represents a subscription for events generated by a single object instance of a particular class.

To create a IInstanceSubscription object, call the CreateInstance method on the Factory.InstanceSubscription class.

You can instantiate a persisted IInstanceSubscription object in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.InstanceSubscription class.
  • By instantiating a ISubscriptionSet collection, then returning a IInstanceSubscription object from the collection.
IInstanceWorkflowSubscription Represents a subscription that initiates a workflow in response to events generated by a single object instance. A InstanceWorkflowSubscription object provides object properties to link a workflow (WorkflowDefinition), a target object, and one or more events (SubscribedEvent) that can be triggered on the target object. These objects must exist before you can create a InstanceWorkflowSubscription object and persist it.

To create a InstanceWorkflowSubscription object, call the CreateInstance method on the Factory.InstanceWorkflowSubscription class.

You can instantiate a persisted InstanceWorkflowSubscription object in the following ways:

ILockEvent Represents an event that occurs when the Lock method is called to lock or update an existing lock on a Document, CustomObject, or Folder object.

You can instantiate a LockEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.LockEvent class.
  • Retrieve the AuditedEvents property on a Document, Folder, or CustomObject object, and iterate the EventSet collection for instances of LockEvent objects.
  • Retrieve a LockEvent object from a LockEventSet collection.
IObjectChangeEvent Represents an event that occurs when the state of an object is changed. This interface is the base for several event interfaces.

You can instantiate a IObjectChangeEvent object in the following ways:

IPromoteVersionEvent Represents an event that occurs when a document is promoted or checked in as a major version.

You can instantiate a PromoteVersionEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the PromoteVersionEvent class.
  • Retrieve the AuditedEvents property on a Document object, and iterate the EventSet collection for instances of PromoteVersionEvent objects.
  • Retrieve a PromoteVersionEvent object from a PromoteVersionEventSet collection.
IPublishCompleteEvent Represents an event that occurs when a document-publishing request has completed.

You can instantiate a PublishCompleteEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.PublishCompleteEvent class.
  • Retrieve the AuditedEvents property on a Document object, and iterate the EventSet collection for instances of PublishCompleteEvent objects.
  • Retrieve a PublishCompleteEvent object from a PublishCompleteEventSet collection.
IPublishRequestEvent interface.
IPublishRequestEvent Represents an event that occurs when a request has been made to publish or republish a document. A publish request is represented by a PublishRequest object.

You can instantiate a PublishRequestEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.PublishRequestEvent class.
  • Retrieve the AuditedEvents property on a Document object, and iterate the EventSet collection for instances of PublishRequestEvent objects.
  • Retrieve a PublishRequestEvent object from a PublishRequestEventSet collection.
IQueryEvent Repesents an event that occurs whenever a database query is performed. This event can only be audited; you cannot subscribe to it.

You can instantiate a QueryEvent object in the following ways:

IRetrievalEvent Represents an event that occurs when a Content Engine object or its content is retrieved or queried. This interface is the base for other event interfaces. These events cannot be subscribed to; they can only be audited.

You can instantiate a RetrievalEvent object in the following ways:

ISubscribedEvent A ISubscribedEvent object represents a system or custom event that applies to a ISubscription object. You add a ISubscribedEvent object to a subscription via the ISubscriptionobject's SubscribedEvents property. You set this property to a ISubscribedEventList collection.

To create a ISubscribedEvent object, call the CreateInstance method on the Factory.SubscribedEvent class. You then set the object's EventClass property to a IEventClassDefinition object.

You can get a reference to a SubscribedEvent object by iterating a ISubscribedEventList collection.

ISubscription Represents a request to execute an event action when an event is triggered on a target Content Engine object. For example, you can have a subscription that notifies you by email when documents of a certain class are created and saved in the object store. The specified EventAction and Subscribable objects, which represent the event action and target object, must exist before you can create a Subscription object and persist it.

Subscription is the base class for subclasses defined with specialized behavior. You can create objects for the subclasses, but you cannot create a base Subscription object. You can, however, instantiate one in the following ways:

  • By calling the GetInstance or FetchInstance method on the Factory.Subscription class.
  • By getting the Subscriptions property on an ObjectStore object or an EventAction object, then iterating the SubscriptionSet collection.
  • By getting the WorkflowSourceSubscriptions property on a WorkflowDefinition object, then iterating the SubscriptionSet collection.
ITakeFederatedOwnershipEvent Event reported when the TakeFederatedOwnership method is applied to a Document object.

You can instantiate a TakeFederatedOwnershipEvent object in the following ways:

IUnfileEvent Represents an event that occurs when a folder has its Unfile method called to remove (unfile) a Containable object, for example, a Document or CustomObject, or when the Unfile method is called to delete a subfolder.

You can instantiate an UnfileEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.UnfileEvent class.
  • Retrieve the AuditedEvents property on a Folder object, and iterate the EventSet collection for instances of UnfileEvent objects.
  • Retrieve an UnfileEvent object from an UnfileEventSet collection.
IUnlockEvent Represents an event that occurs when the Unlock method is called on a Document, CustomObject, or Folder object.

You can instantiate a UnlockEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.UnlockEvent class.
  • Retrieve the AuditedEvents property on a Document, Folder, or CustomObject object, and iterate the EventSet collection for instances of UnlockEvent objects.
  • Retrieve a UnlockEvent object from a UnlockEventSet collection.
IUpdateEvent Represents an event that occurs when changes are made to an object's properties.

You can instantiate a UpdateEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.UpdateEvent class.
  • Retrieve the AuditedEvents property on a Document, Folder, or CustomObject object, and iterate the EventSet collection for instances of UpdateEvent objects.
  • Retrieve an UpdateEvent object from an UpdateEventSet collection.
IUpdateSecurityEvent Represents an event that occurs when the security of an object is changed.

Note that the dynamic inheritance feature of the Content Engine security model impacts

 Copy Code
UpdateSecurityEvent
as follows. First, modifying the security of a folder will not automatically propogate to the documents contained in the folder; that is, the security of the documents in the folder will not change. Therefore, the system will generate an UpdateSecurityEvent object for the folder, but it will not generate an UpdateSecurityEvent object for each contained document. Second, an update to any object-valued property designated as inheritable in the metadata will generate an UpdateSecurityEvent object .

You can instantiate a UpdateSecurityEvent object in the following ways:

  • Call the GetInstance or FetchInstance method on the Factory.UpdateSecurityEvent class.
  • Retrieve the AuditedEvents property on a Document, Folder, or CustomObject object, and iterate the EventSet collection for instances of UpdateSecurityEvent objects.
  • Retrieve a UpdateSecurityEvent object from a UpdateSecurityEventSet collection.
IWorkflowEventAction Represents a definition of the actions taken when a workflow is initiated via an event that is subscribed to by a workflow subscription.

To create a WorkflowEventAction object and persist it to a Content Engine object store, call the CreateInstance method on the Factory.WorkflowEventAction class.

You can instantiate a WorkflowEventAction object in the following ways:

IPublishRequest Represents a queued request to publish a document using a specified PublishTemplate object. All publish requests are processed asynchronously, including copy operations, which do not transform the document. Once a PublishRequest object is saved, it is always enqueued.

A publish request can be for a publish or republish operation, as determined by the PublishTemplate and PublicationDocument properties. If the PublishTemplate property is set and the PublicationDocument property is null, the request is for a publish operation. Otherwise, if the PublicationDocument property is set, the publish request is for a republish operation.

A PublishRequest object can be created by calling the Publish or Republish methods on a Document object. Alternatively, a PublishRequest can be created by calling Factory.IPublishRequest.CreateInstance and filling in the desired properties prior to saving. In either case, when the object is saved, it goes into the publish request queue, where it will be processed asynchronously by a publishing event handler.

Once a PublishRequest object has been successfully processed, it is deleted from the server.

IPublishStyleTemplate Represents the style template that defines how a source document will be transformed. A style template serves as a template for a particular kind of transformation and is tied to a specific publishing event handler on a specific object store. (Note that a publishing event handler can have more than one style template associated with it.)

Information in the style template can be whatever is meaningful to the publishing event handler. For example, the style template might include an XML-based description of the transformation to be done for this style template, an ID of another document that contains a more detailed template, or a URL for publishing to an external location. A style template also specifies a list of input formats (MIME types) supported for the style template, the output format (MIME type) generated when the style template is applied, and, optionally, passwords used by PDF renditions.

A publish style template associated with the HTML publishing event handler does not specify any additional transformation options beyond the basic ones (title, description, input formats, output format, and provider ID). In addition to the basic transformation options (as mentioned above for the HTML publishing event handler), a publish style template associated with the PDF publishing event handler optionally specifies the user and master PDF passwords, as well as other PDF security and watermark settings (stored as XML in the TransformationOptions property).

IPublishTemplate Represents a template for publishing a document. A publish template is an XML document that contains information used to automate the selection of options for a publishing request. For example, it contains the properties and security to apply to the destination document, and instructions for republishing a document, such as whether to version the existing destination document or replace it. Also, a publish template's StyleTemplate property might reference a PublishStyleTemplate object, which describes how the document is to be transformed.

Because IPublishTemplate extends the IDocument interface, you can work with a publish template in the same way you work with a document. For example, you can version a publish template, file it into a folder, and delete it. Publish templates are usually authored in the Publishing Designer application. However, you can override certain publish options when you call the Publish or Republish method. See Publish Options XML for more information.

IExternalAlias Represents the mechanism for mapping an external class or property to a corresponding Content Engine class or property. This interface is the base for subinterfaces representing external class and property aliases.
IExternalClassAlias Represents the mechanism for mapping an external class to a corresponding Content Engine class.
IExternalIdentity Represents the identity of a replicated object in an external repository.
IExternalPropertyAlias Represents the mechanism for mapping an external class property to a corresponding Content Engine class property.
IReplicationJournalEntry Represents the journal record of an operation on a replicated object for outbound replication.
IActiveMarking Represents a marking that is currently applied to a given object.

Any object that can have a marking can be assigned one or more markings. A marking that is assigned to an object is called an active marking. An ActiveMarkingList collection contains all markings assigned to a single object.

From the properties on this interface, you can retrieve the value of the associated Marking property, and the display name of the property to which the active marking applies. (See the PropertyDisplayName property.)

You cannot create a new ActiveMarking object. However, you can get a reference to one by retrieving an object's ActiveMarkings property, the value of which is an ActiveMarkingList, and then retrieving an item from the returned collection using an approach of your choice.

IApplicationSecurityTemplate Represents a template through which an application can apply permissions (access rights) to a Document, CustomObject, or Folder object, and to their subclasses. Security templates are not independently persistable to the Content Engine; they are contained in a SecurityPolicy object. The template contains the permissions that will be applied to an object by the application program. An ApplicationSecurityTemplate object also has associated AccessPermissionDescription objects, each of which provide descriptive information for an access right or level.

You can enable or disable a template within its security policy container. An enabled template can be applied to an object; a disabled template remains an item in the security policy container but cannot be applied to an object.

A SecurityTemplate object can represent either an application security template or a versioning security template, and both types can exist simultaneously in a single SecurityPolicy object. The two template types have the same object type, but are differentiated by their use and by their class IDs (GUIDs), which are available as constants defined in the ClassDescription interface. A versioning security template is automatically applied when the state of a document version changes, and may also be explicitly applied at any time by a user or group with permission to modify the object's security (AccessRight.WRITE_ACL). However, an application security template is never automatically applied. It must be explicitly applied by an application calling the ApplySecurityTemplate method. For more information, see the ApplySecurityTemplate method on the Document, CustomObject, and Folder interfaces.

To create an instance of ApplicationSecurityTemplate, call CreateInstance on the Factory.ApplicationSecurityTemplate class. To retrieve an ApplicationSecurityTemplate object from a SecurityPolicy object, first retrieve the SecurityPolicy object's SecurityTemplates property then retrieve a SecurityTemplate object of the desired type from the returned SecurityTemplates collection.

ISecurityPolicy Represents an independently persistable, subclassable container for a list of security templates. Through an object's SecurityPolicy property, a SecurityPolicy object is associated with a Document, CustomObject, or Folder object, and subclasses of those objects. When you create an object of one of these types, you can optionally assign a SecurityPolicy object to it. If not explicitly assigned, the object's SecurityPolicy property is assigned a value provided by the class's default.

The security policy defines the set of security templates that can be applied to the objects with which the policy is associated. The templates contained within a security policy can be one of two types: versioning or application templates. (For more information on security template types, see SecurityTemplate.)

You can create an instance of a SecurityPolicy object by calling CreateInstance methods on the Factory.SecurityPolicy class. A SecurityPolicy object can be retrieved from the object-valued SecurityPolicy property on a Containable object. (You cannot create a SecurityPolicy instance by retrieving it from the SecurityPolicy property.)

ISecurityTemplate Represents the base class for security template classes. The templates are contained within a security policy and can be one of two types: versioning or application templates. For more information on each of these types, refer to the interface descriptions for IVersioningSecurityTemplate and IApplicationSecurityTemplate interface descriptions.
IVersioningSecurityTemplate Represents a template for automatically applying permissions (access rights) to a Document object during versioning state changes. Security templates are not independently persistable to the Content Engine; they are contained in a SecurityPolicy object. The template contains the permissions that will be applied to an object as its version state changes. A VersioningSecurityTemplate object also has associated AccessPermissionDescription objects, each of which provide descriptive information for an access right or level.

You can enable or disable a template within its security policy container. An enabled template can be applied to an object; a disabled template remains an item in the security policy container but cannot be applied to an object.

A SecurityTemplate object can represent either an application security template or a versioning security template, and both types can exist simultaneously in a single SecurityPolicy object. The two template types have the same object type, but are differentiated by their use and by their class IDs (GUIDs), which are available as constants defined in the VersionStatusId class. An application security template must be explicitly applied by calling an object's ApplySecurityTemplate method; it is never automatically applied. A versioning security template is automatically applied when the state of a document version changes, and may also be explicitly applied at any time by a user or group with permission to modify the object's security (AccessRight.WRITE_ACL).

If an object has no associated security policy, its permissions remain unchanged when it undergoes a versioning change. However, if the object has an associated SecurityPolicy object, its permissions are modified according to the non-disabled, applicable security templates of its SecurityPolicy when:

  • The object undergoes a versioning change (for example, a document's version status moves from in-process to released).
  • The object's class changes (as the result of a call to the object's ChangeClass method).

To create a new VersioningSecurityTemplate object, call CreateInstance on the Factory.VersioningSecurityTemplate class. To retrieve a VersioningSecurityTemplate object from a SecurityPolicy object, first retrieve the SecurityPolicy object's SecurityTemplates property then retrieve a SecurityTemplate object of the desired type from the returned SecurityTemplates collection.

See Also