generated from MITLibraries/python-cli-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create sequence diagram describing PERS workflow
- Loading branch information
1 parent
ef342c8
commit bf7b0d7
Showing
1 changed file
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# Publication Email Request Service (PERS) | ||
|
||
The following are sequence diagrams describing the workflow for sending publication email requests with this service. At high-level the steps involved are: | ||
|
||
1. Import citations for authors | ||
2. Create publication email requests | ||
3. Review and (optionally) update emails | ||
4. Send emails to Liaisons | ||
|
||
## Import citations for authors | ||
|
||
```mermaid | ||
sequenceDiagram | ||
autonumber | ||
participant user as User | ||
participant pers as Publication Email Request Service <br> (PERS) | ||
participant elements as Symplectic Elements | ||
participant pers_db as PERS Database | ||
user ->> pers: Select option to import citations | ||
pers ->> user: Request user input for author's Element's ID | ||
user -->> pers: Respond with selected author's Element's ID | ||
pers ->> elements: Send GET request to Elements API <br>to retrieve author data <br> "<ELEMENTS_ENDPOINT>users/{author_id} | ||
elements -->> pers: Author data XML string <br> ("Email", "First Name", "Last Name", "MIT ID", "DLC", "Start Date", "End Date") | ||
pers ->> pers: Parse XML string to AuthorRecord | ||
pers ->> pers_db: Upsert record to 'Author' table | ||
pers ->> elements: Send GET request to Elements API <br> to retrieve author's publications <br> <ELEMENTS_ENDPOINT>users/{author_id}/publications?&detail=full | ||
elements -->> pers: Author publications XML string | ||
pers ->> pers: Parse XML string to list of key-value pairs <br> for *qualifying* publications <br>(publication IDs and titles) | ||
Note over pers, elements: As PERS parses through the author publications XML string, <br> it runs a series of preliminary checks to determine if the publication meets the criteria <br> for an email request. If checks pass, the publication is added to a list. | ||
loop For every publication | ||
pers ->> elements: Send GET request to Elements API <br> to retrieve publication data <br> <ELEMENTS_ENDPOINT>publications/{publication_id} | ||
elements -->> pers: Publication citation data XML string | ||
pers ->> pers: Parse XML string to PublicationRecord | ||
pers -->> pers: Run checks on publication <br> 1.PublicationRecord is citable <br> 2. PublicationRecord has required identifiers <br> (MIT ID, Publication ID) | ||
pers ->> pers_db: Check if any records in the 'Email' table linked to Publication have been sent <br> (i.e., `PublicationRecord.id in Email.publications and Email.date_sent is not None`) | ||
pers ->> pers_db: Check if a record exists in 'Publication' where `Publication.id == PublicationRecord.id`. | ||
pers ->> pers_db: Upsert record to 'Publication' table | ||
end | ||
``` |