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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177 | @startuml
skinparam component {
backgroundcolor<<module>> white
}
skinparam queue {
backgroundcolor<<service>> white
}
skinparam package {
backgroundcolor<<core>> lightgreen
}
skinparam database {
backgroundcolor<<drupal>> lightblue
}
skinparam cloud {
backgroundcolor<<plugins>> #F4676B
}
database Content <<drupal>> {
card content [
Each and every content entity
on a Drupal site can be
published to digital signage.
]
}
package "Digital Signage Core" <<core>> as core {
component "DS Content Settings" <<module>> {
database contentsettings [
**Content Entity**
Automatically embedded into each
other content entity on the site
using entity inline form.
Stores properties for each entity
to determine **where** and **how**
they should be published on
platform devices.
]
agent contentevents [
**Event Subscriber**
Reacts on each create, update and delete
event of each entity and if it's published
on any platform device, marks all those
devices due for a schedule update.
]
}
frame "Integration Framework" {
component Device <<module>> {
database devices [
**Content Entity**
**Bundles**: one for each platform
**Create and delete**: only by sync
**Edit**: extra fields can be added
]
}
component Platform <<module>> {
agent platform [
**Plugin Manager**
Provides the interface for each
specific platform and allows
generic implemenation of all
the processes in DS Core.
]
}
component Schedule <<module>> {
database schedules [
**Content Entity**
Represents a sequence of content
entities and is assigned to one or
many devices.
]
agent schedulegenerator [
**Schedule Generator Framework**
Schedules are generated automatically
driven by the content properties.
The generator is implemented as a plugin
so that custom plugins can be installed
to implement custom rules.
]
agent defaultgenerator [
**Default Generator**
--
This is delivered with the
Digital Signage Core.
The documentation for this
generator can be found [[schedules here]].
]
}
}
queue Crons <<service>> {
agent devicesynccron [
**Synchronize Devices**
]
agent scheduleupdatecron [
**Update Schedules**
]
agent publishschedulecron [
**Publish Schedules**
]
}
}
cloud "Digital Signage Platforms" as platforms <<plugins>> {
component signageos [
**signageOS**
--
[[https://www.signageos.io]]: Web Site
[[https://docs.signageos.io]]: API
[[https://box.signageos.io]]: Dashboard
]
component screenfood [
**Screenfood**
--
[[https://www.screenfoodnet.com]]: Web Site
]
component others [
**More platforms**
--
Each new platform is very simple to integrate
]
}
Platform --(0 signageos
Platform --(0 screenfood
Platform --(0 others
Content --> contentevents
contentevents --> devices
platform --> devicesynccron
devicesynccron --> devices
devices --> scheduleupdatecron
scheduleupdatecron --> schedules
schedules --> publishschedulecron
publishschedulecron --> platform
signageos --[hidden] screenfood
screenfood --[hidden] others
@enduml
|