-
Notifications
You must be signed in to change notification settings - Fork 502
/
Copy pathmake-data-count.uml
64 lines (49 loc) · 1.76 KB
/
make-data-count.uml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@startuml
skinparam BoxPadding 30
title Make Data Count components in Dataverse
autonumber "<font color=blue>"
actor user
box "Dataverse" #DDD
participant datasetPage as "dataset\npage"
participant downloadApi as "download\nAPI"
participant metricsApi as "metrics\nAPI"
participant datasetMetrics as "datasetmetrics\ntable"
participant sushiParser as "SUSHI\nparser"
participant citationParser as "citation\nparser"
end box
box "filesystem or S3" #DDD
participant log as "activity-yyyy-mm.log"
participant sushi as "sushi-yyyy-mm.json"
endbox
box "counter-processor" #DDD
participant main.py
database sqlite as "yyyy-mm.sqlite3"
end box
box "DataCite hub" #DDD
participant reports as "reports\nendpoint"
participant events as "events\nendpoint"
end box
box "Crossref" #DDD
participant crossrefApi as "Crossref\nAPI"
end box
== Activity Logging ==
user --> datasetPage : GET /dataset.xhtml
datasetPage --> log : investigation/view
user --> downloadApi : GET /api/access/datafile
downloadApi --> log : request/download
== Log Processing ==
main.py --> log : read log nightly
main.py --> sqlite : write to SQLite
main.py --> reports : send SUSHI report to DataCite hub "reports" endpoint
main.py --> sushi : write SUSHI to filesystem or S3
sushiParser --> sushi : parse SUSHI file
sushiParser --> datasetMetrics : write metrics to datasetmetrics table
== Citation Retrieval ==
events --> crossrefApi : retrieve citations periodically
citationParser --> events : retrieve citations nightly
citationParser --> datasetMetrics : write citations to datasetmetrics table
== Retrieving Usage Metrics ==
user --> metricsApi: request number of views, downloads, and citations
metricsApi --> datasetMetrics: get data from table
metricsApi --> user: return data
@enduml