Publish Subscribe Content Notifications

From AlfrescoWiki

Jump to: navigation, search

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.

[edit] Destination

[edit] Queued Destination

[edit] Destination Manager

[edit] Integration with Workflow

[edit] Integration with Notification

[edit] FTP Specialization

[edit] Publish Subscribe Based Content Publishing

[edit] JMS Notification of Update / Web Service Pull Specialization

[edit] Additional Notes

old notes: publish subscribe and Notification Service