-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrepfishr.puml
More file actions
120 lines (106 loc) · 2.47 KB
/
Copy pathrepfishr.puml
File metadata and controls
120 lines (106 loc) · 2.47 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
@startuml
!theme plain
scale 3200*1000
left to right direction
skinparam classBackgroundColor #FFFFFF
skinparam classBorderColor #333333
skinparam classArrowColor #333333
skinparam classTextAlignment left
skinparam padding 2
skinparam linetype ortho
skinparam arrowThickness 2
skinparam maxMessageSize 80
skinparam noteBackgroundColor #FFFACD
skinparam noteBorderColor #333333
skinparam noteFontSize 9
' ====== ABSTRACT BASE (LEFT) ======
abstract class reporting_actor <<abstract>> {
id: string
name: string
type: string
}
note right of reporting_actor
BASE ACTOR CLASS
==================
• id: identifier
• name: label
• type: entity type
end note
' ====== ACTORS ======
class reporting_sender <<R6>> {
initialize()
}
reporting_sender --|> reporting_actor
class reporting_receiver <<R6>> {
sender: reporting_sender
tasks: list
--
getTasks()
}
reporting_receiver --|> reporting_actor
' ====== MAIN FLOW (CENTER) ======
class reporting_flow <<R6>> {
sender: reporting_sender*
--
getSender()
getReceivers()
}
note right of reporting_flow
REPORTING FLOW
================
• Init sender ID & type
• Load receivers
• Return by ID
end note
' ====== TASK (RIGHT-CENTER) ======
class reporting_task <<R6>> {
id: string*
sender: reporting_sender
formats: list
process_fun: function
--
process()
report()
}
note right of reporting_task
REPORTING TASK
================
PROCESS:
• Validate
• Transform
REPORT:
• Validate
• Output
end note
' ====== FORMAT (RIGHT) ======
class reporting_format <<R6>> {
id: string
name: string
ref: string
spec: format_spec
}
note right of reporting_format
REPORTING FORMAT
=================
Wraps vrule
format_spec
Validates data
using JSON schema
end note
' ====== APPLY COLORS ======
reporting_actor -[#E3F2FD]- reporting_actor
reporting_sender -[#BBDEFB]- reporting_sender
reporting_receiver -[#BBDEFB]- reporting_receiver
reporting_flow -[#FFF9C4]- reporting_flow
reporting_task -[#C8E6C9]- reporting_task
reporting_format -[#F8BBD0]- reporting_format
' ====== RELATIONSHIPS ======
reporting_flow "1" --> "1" reporting_sender : has
reporting_flow "1" --> "*" reporting_receiver : manages
reporting_receiver "1" --> "*" reporting_task : contains
reporting_task "1" --> "*" reporting_format : validates
reporting_task --> "1" reporting_sender : uses
legend bottom
|<#E3F2FD> Base | <#BBDEFB> Actors | <#FFF9C4> Flow | <#C8E6C9> Task | <#F8BBD0> Format |
endlegend
@enduml