Teamspace members can elect to automatically receive email notifications whenever specified events occur, such as changes to a specific document, or the creation or modification of meetings, polls, or discussion forums. This feature is modeled on the Content Engine's event subscription capabilities.
The Collaboration API contains elements that developers can use to create, modify, and manage user subscriptions from within FileNet P8 applications. Key user subscription elements are:
A subscription comprises the following elements:
A UserSubscription object is created when items from the list above are added to a SubscribeInfo object and passed to the SubscriptionManager's updateSubscriptions method, as described below. The same method may be used to update or remove subscriptions.
In a standard teamspace structure, user subscriptions are created and maintained within the _subscriptions folder, a subfolder of the teamspace's _internal folder.
The following code describes how a UserSubscription object might be created in a known object store and teamspace. For information on teamspace objects, see Teamspaces; for information on creating and managing object stores, see the Content Java API topic, Working With Object Stores.
// create a new SubscribeInfo object
SubscribeInfo subscribeInfo = new SubscribeInfo(
//int
SubscriptionType,
//java.lang.String
containerDefID,
//java.lang.String
subscribedObjID,
//java.lang.Integer
subscribedObjType);
UserSubscriptionManager subscriptionManager = teamSpace.getSubscriptionManager();
subscriptionManager.updateSubscriptions(subscribeInfo, null);
Subscription definitions are contained in the Collaboration Store file, Subscription Definitions.xml, which is accessed through the SubscriptionsStore and SubscriptionDefinition interfaces. New subscriptions may be created or existing definitions modified through the updateSubscription method of the UserSubscriptionManager interface.
The following examples illustrate how to create subscriptions for a number of events defined in the default Subscription Definitions.xml file:
For the subscription Discussion Topic Added to Forum
:
SubscriptionsStore.TOPIC_ADDED_TO_FORUM_SUBTYPE
as the subscriptionType
. containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_TOPIC_ADDED_TO_FORUM_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.TOPIC_ADDED_TO_FORUM_SUBTYPE);
String containerDefID_TOPIC_ADDED_TO_FORUM_SUBTYPE =
subDefinition_TOPIC_ADDED_TO_FORUM_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and subscribeObjType
.For the subscription Reply Posted to Discussion Topic
:
SubscriptionsStore.REPLY_POSTED_TO_TOPIC_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_REPLY_POSTED_TO_TOPIC_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.REPLY_POSTED_TO_TOPIC_SUBTYPE);
String containerDefID_REPLY_POSTED_TO_TOPIC_SUBTYPE =
subDefinition_REPLY_POSTED_TO_TOPIC_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and an object type of TYPE_DOCUMENT
for subscribeObjType
.For the subscription Any Change To Document
:
SubscriptionsStore.CHANGE_TO_DOCUMENT_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_CHANGE_TO_DOCUMENT_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.CHANGE_TO_DOCUMENT_SUBTYPE);
String containerDefID_CHANGE_TO_DOCUMENT_SUBTYPE =
subDefinition_CHANGE_TO_DOCUMENT_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_DOCUMENT)
for subscribeObjType
.For the subscription Change To Folder
:
SubscriptionsStore.CHANGE_TO_FOLDER_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_CHANGE_TO_FOLDER_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.CHANGE_TO_FOLDER_SUBTYPE);
String containerDefID_CHANGE_TO_FOLDER_SUBTYPE =
subDefinition_CHANGE_TO_FOLDER_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_FOLDER)
for
subscribeObjType
.For the subscription Document Added To Folder
:
SubscriptionsStore.DOCUMENT_ADDED_TO_FOLDER_SUBTYPE
as the subscriptionType
and
containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_DOCUMENT_ADDED_TO_FOLDER_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.DOCUMENT_ADDED_TO_FOLDER_SUBTYPE);
String containerDefID_DOCUMENT_ADDED_TO_FOLDER_SUBTYPE =
subDefinition_DOCUMENT_ADDED_TO_FOLDER_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_FOLDER)
for
subscribeObjType
.For the subscription Folder Added To Folder
:
SubscriptionsStore.FOLDER_ADDED_TO_FOLDER_SUBTYPE
as the subscriptionType
and
containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_FOLDER_ADDED_TO_FOLDER_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.FOLDER_ADDED_TO_FOLDER_SUBTYPE);
String containerDefID_FOLDER_ADDED_TO_FOLDER_SUBTYPE =
subDefinition_FOLDER_ADDED_TO_FOLDER_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_FOLDER)
for
subscribeObjType
.
For the subscription Change in Task Completion Status
:
SubscriptionsStore.CHANGE_IN_TASK_COMPLETION_STATUS_SUBTYPE
as the subscriptionType
andcontainerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_CHANGE_IN_TASK_COMPLETION_STATUS_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.CHANGE_IN_TASK_COMPLETION_STATUS_SUBTYPE);
String containerDefID_CHANGE_IN_TASK_COMPLETION_STATUS_SUBTYPE =
subDefinition_CHANGE_IN_TASK_COMPLETION_STATUS_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_DOCUMENT)
for subscribeObjType
.For the subscription Task Completed
:
SubscriptionsStore.TASK_COMPLETED_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_TASK_COMPLETED_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.TASK_COMPLETED_SUBTYPE);
String containerDefID_TASK_COMPLETED_SUBTYPE =
subDefinition_TASK_COMPLETED_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_DOCUMENT)
for subscribeObjType
.For the subscription Task Reopened
:
SubscriptionsStore.TASK_REOPENED_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_TASK_REOPENED_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.TASK_REOPENED_SUBTYPE);
String containerDefID_TASK_REOPENED_SUBTYPE =
subDefinition_TASK_REOPENED_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_DOCUMENT)
for subscribeObjType
.For the subscription Task Expired
:
SubscriptionsStore.TASK_EXPIRED_SUBTYPE
as the subscriptionType
and containerDefID
(null) data from the SubscriptionDefinition object.containerDefID
data from the SubscriptionDefinition
object:
SubscriptionsStore subscriptionsStore = CollaborationStore.getSubscriptionsStore(objectStore);
SubscriptionDefinition subDefinition_TASK_EXPIRED_SUBTYPE =
subscriptionsStore.getSubscriptionDefinitionByType(SubscriptionsStore.TASK_EXPIRED_SUBTYPE);
String containerDefID_TASK_EXPIRED_SUBTYPE =
subDefinition_TASK_EXPIRED_SUBTYPE.getContainerDefinitionID();
subscribedObjID
and a new Integer(BaseObject.TYPE_DOCUMENT)
for subscribeObjType
.For information on how subscriptions are created and managed within the FileNet P8 TCM application, see Overview of Subscriptions.