Publish Subscribe Content Notifications
From AlfrescoWiki
NOTE: This page relates to general design discussions and extension ideas. These have not been targeted for any specific release.
Contents |
[edit] Project Description
Provide the basics of a notification system which can in turn support advanced functionality like publish subscribe content deployment.
Note: I will refactoring the subscription component for sure.
[Alfresco Notification Service Proposal]
[Alfresco Subscription Manager Proposal]
Also need to line this up with the the proposal for Notification Service and Subscription Service
[edit] Project Requirements/Objectives
<discuss the project requirements and objectives>
[edit] Initial Project Scope
[edit] Discussion of Design/Implementation Approach
The following section is a discussion of the basic interfaces that could be used to form the basis of a notification mechanism. Please feel free to comment, suggest and point out issues. Feel free to post these comments in-line.
[edit] Basic M2 Interfaces
[edit] cm:observable
cm:observable is a marker interface applied as an aspect to repository nodes which can cause a notification. "cm" may not be the appropriate name space for this aspect. "sys" may be a better place for this aspect.
[edit] API
[edit] Notification Services
Notification Services is the basic interface through which components outside of the notification internals interact with "Notification."
Notification Services should provide at least:
- createNotification(...)
- sendNotification(...)
- subscribeForNotification(....)
- unsubscribeForNotification(....)
[edit] Notification
Notification is the base class for notifications. Concrete notifications implement this interface or abstract class.
Possible Implementations are:
- Content Notifications
- User Notifications
- Task / Workflow Notifications
[edit] Notification Factory
Depending on which internals are used to satisfy the Notification Services interface different Concrete Notification implementations may be appropriate. Notification Services may delegate the responsibility of creating Notification(s) to a implementation that meets this interface.
[edit] Notification Queue
Notification Queue (Topic) may be used by the notification services as a mechanism to delegate / deliver notifications. The basic implementation might have on Notification Queue which acts as a system wide sink (seen in illustration) We may want to require that queue notification does not block.
- enqueueNotification(...)
Implementation may wish to address
- Persistence of Notifications
- Duplicate notifications
[edit] Subscription Manager
Subscription Manager is an interface which is implemented by implementations which handle subscriptions. Notification Service can delegate the responsibility of managing notification subscriptions to this interface.
- subscribeForNotification(...)
- unsubscribeForNotification(...)
- sendNotification(...)
Implementations may wish to address:
- durable subscriptions
[edit] Subscription
A Notification Subscription.
[edit] Applications
The following section details a number of use cases and technical details that apply to each case
[edit] Push Based Content Publishing
Pushing content to a destination has some drawbacks. It means the repository has to know "who" the destination is and "where" to drop off the payload. Publish / Subscribe is a much less cohesive, more scalable solution. However, there are scenarios where it is prudent to push content.

