Workflows#

Work in progress

swh-coarnotify is a new project, some parts of its documentation have not been written yet.

General workflow for sending and replying to a Notification#

        sequenceDiagram
   autonumber
   participant Partner as Partner
   participant Inbox as SWH Inbox
   participant DB as Database
   participant Scheduler as Scheduler
   participant Worker as Worker
   participant REMD as Raw Extrinsic<br> Metadata Storage

   Partner->>Inbox: Send a Notification 123

   Inbox->>Inbox: Validate (auth, format, etc.)
   alt invalid notification / auth
      Inbox->>Partner: Reply with a HTTP 4xx code
   else notification is valid
      Inbox->>DB: Store the inbound<br> notification 123
      Inbox->>Scheduler: Create a coarnotify-process-inbound<br>task for 123
      Inbox->>Partner: Reply with a HTTP 201 code
   end

   Worker-->Scheduler: picks up cn-process-inbound<br>task for 123
   Worker->>Worker: Process the notification 123
   alt origin URL or SWHID is unknown
      Worker->>DB: Create a Reject outbound notification 456
   else origin is archived
      Worker->>REMD: Store the raw notification 123
      Worker->>DB: Create a Accept outbound notification 456
   end
   Worker->>DB: Update notification 123 status
   Worker->>Scheduler: Creates a coarnotify-send-outbound<br>task for 456
   Worker-->>Scheduler: picks up coarnotify-send-outbound<br>task for 456
   Worker->>Partner: Send notification 456
   Worker->>DB: Updates notification 456 status
    

The Inbox always replies with an HTTP 201 if the Notification is structurally valid. Then a background task is created to process the content of the Notification.

If the software mentioned in the Notification is in the archive we store the whole raw Notification in the Raw Extrinsic Metadata Storage so it can be later processed by the Indexer.