Notification lifecycle
Brightspot invokes the following process when processing notifications.
- An event occurs (e.g., a
ToolUser
publishes aContent
). - Create a publisher with all the message context information for the event (content ID, user ID, etc.)
- Invoke the publisher’s
Publisher#publishNotification/Async
method, which performs all of the following steps. - Publisher fetches a list of all possible receivers by invoking
Publisher#getReceivers
. For each receiver:
- Fetch the set of subscriptions with
Receiver#getReceiverSubscriptions
. For each subscription:
Check if the following are true:
- Subscription matches the publisher’s generic type argument
<S>
inPublisher<S, C>
. Subscription#shouldDeliver(Receiver, C)
returns true.
If one of the tests fails, proceed to the next subscription.
- Subscription matches the publisher’s generic type argument
- Build the list of delivery options with
Subscription#getDeliveryOptions
. - For each delivery option:
- Fetch the delivery option’s list of message formatters by calling
DeliveryOption#getMessageFormatters
. - Find the message formatters that match the current subscription and delivery option.
- For each message formatter:
- Attempt to format the
MessageContext
into theDeliveryOption<M>
-specific message type<M>
by callingMessageFormatter#format(MessageContext, D)
. - If there are no valid message formatters, create a message from the subscription’s default HTML or plain text format by calling
Subscription#to[Html/String]Format(Receiver, Context)
, passing the result to the current delivery option, and callingDeliveryOption#messageFrom[Html/String](MessageContext, String result)
. - Take the formatted message and deliver it by calling
DeliveryOption#deliverMessage(M)
. - Capture the receiver ID, subscription ID, and any errors thrown as a
DeliveryException
during delivery of the message, and place into aDeliveryReference
receipt for that message.
- Attempt to format the
- Fetch the delivery option’s list of message formatters by calling
- Fetch the set of subscriptions with
- Compile all delivery references for each receiver, subscription, and delivery option, along with the event message context and original publisher, into a notification object, and save it to the database.
Previous Topic
Notifications
Next Topic
Custom delivery options