# Notification specifications


SCRATCHPAD IDEAS
=-=-=-=-=-=-=-=-=-
Hypothetical sequence of operations for designing raven notification and tie into jobs and processor

WidgetStatusChange notification
	- OnChange event triggered in [WIDGETBIZ] with before and after state of widget in question (immediately after save or delete or whatever is of interest)	
		- OnChange processor See if any users are subscribed to this event [CENTRAL_NOTIFICATION_CLASS THIS MUST BE SUPER EFFICIENT AS IT WILL BE HAMMERED] (events of interest / core central event bus handler of some kind??)
			- CENTRAL_NOTIFICATION_CLASS event of interest should cache in memory events of interest and trigger cache invalidation by [EVENT_OF_INTEREST_CLASS] subscription change
		- If no then bail out early
		- If yes then compares the before and after state of the widget and the given list of events of interest and processes notifications in turn
			- Create a notification event in a table of pending notification events [CENTRAL_NOTIFICATION_CLASS]
				- See v7 schema for ideas

Deliver notifications
	- Job triggers and HandleJob is called on [CENTRAL_NOTIFICATION_CLASS] which in turn checks if any events ready to Deliver
		- Hands off NOTIFY_EVENT to deliver one at a time to a [NOTIFICATION_DELIVERY_CLASS] which in turn calls each [NOTIFICATION_DELIVERY_DELIVERY_TYPE-SMPT/POPUP/WHATEVER]


Maintenance
	- [CoreJobNotificationSweeper class] maintains the notifications tables see generator spec for thoughts









MISC
=-=-

- NOTIFICATION SUBSCRIPTIONS
- NOTIFICATION DELIVERIES (user or all if manager account)

- What is "Slack"?
	- should we tie into it for notifications?