PASS Notification Model
The Notification
class is the central object in the model. It is used to capture the type of notification for a given
submission and to provide the data to the notification template.
Let's review the important attributes of Notification
:
Notification.resouceId
: The PASS entity ID for the Notification
.
Notification.eventId
: The SubmissionEvent ID for the Notification
.
The SubmissionEvent is the object that captures the submission workflow event, which generates the Notification
. The
table below describes a submission workflow action, the submission event type created, and who receives the notification.
Submission State
What happened to the Submission | SubmissionEvent Type | Notification Recipient List |
---|---|---|
AS Cancelled | CANCELLED | Preparer |
AS Submitted | SUBMITTED | Preparer |
AS Request Changes | CHANGES_REQUESTED | Preparer |
Preparer Cancelled | CANCELLED | AS |
Preparer Request Approval | APPROVAL_REQUESTED, APPROVAL_REQUESTED_NEWUSER | AS |
- AS = Authorized Submitter
- Preparer = Proxy who has prepared the submitter on behalf of the AS
Notification.type
: The type of the Notification
. In this case, there is a 1:1 correspondence between the SubmissionEvent
type and the Notification
type.
Notification Type | Description |
---|---|
SUBMISSION_APPROVAL_REQUESTED | Preparer has requested approval of a Submission by an Authorized Submitter |
SUBMISSION_APPROVAL_INVITE | Preparer has requested approval of a Submission by an Authorized Submitter who does not have a User in PASS. |
SUBMISSION_CHANGES_REQUESTED | Authorized Submitter has requested changes to the submission by the Preparer. |
SUBMISSION_SUBMISSION_SUCCESS | Submission was successfully submitted by the Authorized Submitter |
SUBMISSION_SUBMISSION_CANCELLED | Submission was cancelled by either the Authorized Submitter or Preparer |
Notification.parameters
: The model that is injected into the templating engine. The parameters
map carries simple
strings or serialized JSON structures.
TO
,CC
,BCC
,FROM
, andSUBJECT
are all simple strings.RESOURCE_METADATA
,EVENT_METADATA
, andLINKS
all contain serialized JSON structures.- Handlebars, the Mustache-based template engine, can navigate the JSON structures to pull out the desired information for email templates.
Templates are parameterized by the NS model. This allows for simple variable substitution when rendering the content of
an email notification. The template language supported by NS is Mustache, specifically
the Handlebars Java implementation. For details on Mustache and Handlebars, check out the Handlebars blog
and the Mustache(5) man page. Sample templates are available in the templates/
folder of thenotification-services
container in pass-docker or in the HandlebarsParameterizerTest
class.
The model provided for template parameterization will depend on the version of NS used, because NS composes and parameterizes the model at compile time. Initially NS provides the following model to the Handlebars templating engine:
to
: a string containing the email address of the recipient of the notification.cc
: a string containing comma delimited email addresses of any carbon copy recipients.from
: a string containing the email address of the sender of the notification.resource_metadata
: a JSON object containing metadata about theSubmission
:title
: the title of theSubmission
.journal-title
: the name of the journal that the author accepted manuscript is being published to.volume
: the volume of the journal that the author accepted manuscript is being published to.issue
: the issue of the journal that the author accepted manuscript is being published to.abstract
: the abstract of theSubmission
.doi
: the DOI assigned by the publisher to the author accepted manuscript.publisher
: the name of the publisher.authors
: a JSON array of author objects.
event_metadata
: a JSON object containing metadata about theSubmissionEvent
:id
: the identifier of the event, a URI to theSubmissionEvent
resource.comment
: the comment provided by the preparer or authorized submitter associated with theSubmissionEvent
.performedDate
: the DateTime the action precipitating the event was performed.performedBy
: the URI of theUser
resource responsible for precipitating the event.performerRole
: the role theperformedBy
user held at the time the event was precipitated.
link_metadata
: a JSON array of link objects associated with theSubmissionEvent
.- Each link object has an
href
attribute containing the URL, and arel
attribute describing its relationship to theSubmissionEvent
. - Supported
rel
values are:submission-view
: a link to view theSubmission
resource in the Ember User Interface.submission-review
: a link to review and approve aSubmission
in the Ember User Interface.submission-review-invite
: a link which invites the recipient of the notification to the Ember User Interface, and subsequently presents the review and approve workflow in the Ember User Interface.
- Each link object has an