Document Concepts
Fundamentally, a document can be thought of as two things:
- The document that the user creates. This document (for example, a word processing file, graphic, spreadsheet, or HTML file) is stored either in the object store's content store or stored externally (for example, a Web page that is referenced by its URL address). In either case, it will become known as the document object's content element.
- The object that describes the user's document. This object, which the Content Engine will use to identify and find that particular version of the user's document, is called a Document object.
A Document object represents a single version of a document stored in a Content Engine object store.
Document Object Characteristics
Document objects include the following characteristics:
- A document can have zero or more annotations associated with it. See Annotation Concepts.
- Operations on a document can be audited. See Auditing Concepts.
- A document can be classified automatically when the document is checked in. See Document Classification Concepts.
- You can modify the properties of, create a subclass from, and add property definitions to a document class definition. See Class Concepts.
- A collection of documents (files) can be assembled together to form a single complete document. See Compound Document Concepts.
- A document can be filed in a folder, and can participate in dynamic and static referential containment relationships. See Containment Concepts.
- A document can have zero or more content elements associated with it. See Document Content.
- A document can subscribe to server-side events that are triggered when an action (such as deleting or checking in the document) occurs. See Event Concepts and Subscription Concepts.
- As with most other Content Engine objects, you instantiate a document using a Factory class. See Instantiating Objects.
- An administrator can define discrete stages through which a document will pass (lifecycles), and assign these custom lifecycles to individual documents or document classes. See Lifecycle Policy Concepts.
- A document can participate in cooperative locking to prevent concurrent updates to an object by two or more Content Engine API-based applications. Cooperating applications can lock the Document object, test for locks, and decide which action to take based on the document's lock state. See Cooperative Locking Concepts.
- Documents have properties that expose and allow manipulation of their state. See Property Concepts.
- A document can be published. The process of publishing allows a document to be optionally transformed to another format and made available to a different audience. See Publishing Concepts.
- A document can be searched for and retrieved from an ad hoc query or from a stored search. The search can be based on document properties, content, or both. See Query Concepts.
- A document is independently securable. Its initial security comes from its class. A document can optionally inherit security from a security parent, have a security policy assigned to it, or both. See Object Security, Security Inheritance, and Security Policies.
- A storage area can be explicitly assigned to a document. You can also use a storage policy to control storage area assignment. See Document Storage.
- A document can be versioned. See Versioning Concepts.
- A document can be the target for a workflow subscription, which means that the document can have a workflow attached to it that can be either manually launched or automatically launched when a subscription event (such as a checkout of the document) occurs. See Workflow Subscriptions.
Document Content
A document's content data is represented by a ContentElement object. A document can have zero, one, or more content elements. The content data represented by the content element can be local to an object store or external to it and, therefore, outside the control of the Content Engine server. Local content elements are represented by a ContentTransfer object, while external ones are represented by a ContentReference object.
Each content element has an ElementSequenceNumber property that contains a server-generated, unique, and unchanging identity for the content element. In other words, even though a content element's relative position within the list of content elements for a document version might change, its ElementSequenceNumber would not. For a given document version, element sequence numbers are not reused.
Document Storage
An object store consists of one or more physical locations called storage areas for storing both metadata and content. When creating a document, you can explicitly assign a storage area to the document. You can also use a storage policy to control storage area assignment. A storage policy is user-specified criteria that can be applied to a document for determining a candidate pool of storage areas. For more information on storage areas and policies, see Content storage in the Content Engine Administration Help.
Document Federated Ownership
Federated content is document content stored on another system (for example, FileNet Image Services) that can be accessed from a FileNet P8 object store, and vice-versa. The intent of federation is to provide uniform access to all content and thereby remove the need for migrating data. By default, a federated system restricts access to content independently of where the content might be stored. For example, an Image Services system imposes restrictions on accessing a document based on Image Services security, regardless of whether the content for the document resides in a FileNet P8 object store or within the Image Services system. You can override this default behavior for specific documents via the takeFederatedOwnership method and cause document content to become read-only when accessed from systems other than FileNet P8 (including content stored on those system). Such content could be deleted only when accessed from a FileNet P8 object store.