Also need to line this up with the the proposal for Notification Service and Subscription Service
<discuss the project requirements and objectives>
Initial Project Scope
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.
cmbservable 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.
Notification Services is the basic interface through which components outside of the notification internals interact with 'Notification.'
Notification Services should provide at least:
Notification is the base class for notifications. Concrete notifications implement this interface or abstract class.
Possible Implementations are:
Task / Workflow Notifications
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.
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.
Implementation may wish to address
Persistence of Notifications
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.
Implementations may wish to address:
A Notification Subscription.
The following section details a number of use cases and technical details that apply to each case
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.