@@ -54,5 +54,245 @@ files and ``PlantUmlDumper`` to create the PlantUML files::
54
54
$ php dump-graph.php | dot -Tsvg -o graph.svg
55
55
$ php dump-graph.php | java -jar plantuml.jar -p > graph.png
56
56
57
+ Styling
58
+ -------
59
+
60
+ You can use ``metadata `` with the following keys to style the workflow:
61
+
62
+ * for places:
63
+ * ``bg_color ``: a color;
64
+ * ``description ``: a string that describes the state.
65
+ * for transitions:
66
+ * ``label ``: a string that replaces the name of the transition;
67
+ * ``color ``: a color;
68
+ * ``arrow_color ``: a color.
69
+
70
+ Strings can include ``\n `` characters to display the contents in multiple lines.
71
+ Colors can be defined as:
72
+
73
+ * a color name from `PlantUML's color list `_;
74
+ * an hexadecimal color (both ``#AABBCC `` and ``#ABC `` formats are supported).
75
+
76
+ Below is the configuration for the pull request state machine with styling added.
77
+
78
+ .. configuration-block ::
79
+
80
+ .. code-block :: yaml
81
+
82
+ # config/packages/workflow.yaml
83
+ framework :
84
+ workflows :
85
+ pull_request :
86
+ type : ' state_machine'
87
+ supports :
88
+ - App\Entity\PullRequest
89
+ initial_place : start
90
+ places :
91
+ start : ~
92
+ coding : ~
93
+ test : ~
94
+ review :
95
+ metadata :
96
+ description : Human review
97
+ merged : ~
98
+ closed :
99
+ metadata :
100
+ bg_color : DeepSkyBlue
101
+ transitions :
102
+ submit :
103
+ from : start
104
+ to : test
105
+ update :
106
+ from : [coding, test, review]
107
+ to : test
108
+ metadata :
109
+ arrow_color : Turquoise
110
+ wait_for_review :
111
+ from : test
112
+ to : review
113
+ metadata :
114
+ color : Orange
115
+ request_change :
116
+ from : review
117
+ to : coding
118
+ accept :
119
+ from : review
120
+ to : merged
121
+ metadata :
122
+ label : Accept PR
123
+ reject :
124
+ from : review
125
+ to : closed
126
+ reopen :
127
+ from : closed
128
+ to : review
129
+
130
+ .. code-block :: xml
131
+
132
+ <!-- config/packages/workflow.xml -->
133
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
134
+ <container xmlns =" http://symfony.com/schema/dic/services"
135
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
136
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
137
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
138
+ http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
139
+ >
140
+
141
+ <framework : config >
142
+ <framework : workflow name =" pull_request" type =" state_machine" >
143
+ <framework : marking-store type =" single_state" />
144
+
145
+ <framework : support >App\Entity\PullRequest</framework : support >
146
+
147
+ <framework : place >start</framework : place >
148
+ <framework : place >coding</framework : place >
149
+ <framework : place >test</framework : place >
150
+ <framework : place name =" review" >
151
+ <framework : metadata >
152
+ <framework : description >Human review</framework : description >
153
+ </framework : metadata >
154
+ </framework : place >
155
+ <framework : place >merged</framework : place >
156
+ <framework : place name =" closed" >
157
+ <framework : metadata >
158
+ <framework : bg_color >DeepSkyBlue</framework : bg_color >
159
+ </framework : metadata >
160
+ </framework : place >
161
+ </framework : place >
162
+
163
+ <framework : transition name =" submit" >
164
+ <framework : from >start</framework : from >
165
+
166
+ <framework : to >test</framework : to >
167
+ </framework : transition >
168
+
169
+ <framework : transition name =" update" >
170
+ <framework : from >coding</framework : from >
171
+ <framework : from >test</framework : from >
172
+ <framework : from >review</framework : from >
173
+
174
+ <framework : to >test</framework : to >
175
+
176
+ <framework : metadata >
177
+ <framework : arrow_color >Turquoise</framework : arrow_color >
178
+ </framework : metadata >
179
+ </framework : transition >
180
+
181
+ <framework : transition name =" wait_for_review" >
182
+ <framework : from >test</framework : from >
183
+
184
+ <framework : to >review</framework : to >
185
+
186
+ <framework : metadata >
187
+ <framework : color >Orange</framework : color >
188
+ </framework : metadata >
189
+ </framework : transition >
190
+
191
+ <framework : transition name =" request_change" >
192
+ <framework : from >review</framework : from >
193
+
194
+ <framework : to >coding</framework : to >
195
+ </framework : transition >
196
+
197
+ <framework : transition name =" accept" >
198
+ <framework : from >review</framework : from >
199
+
200
+ <framework : to >merged</framework : to >
201
+
202
+ <framework : metadata >
203
+ <framework : label >Accept PR</framework : label >
204
+ </framework : metadata >
205
+ </framework : transition >
206
+
207
+ <framework : transition name =" reject" >
208
+ <framework : from >review</framework : from >
209
+
210
+ <framework : to >closed</framework : to >
211
+ </framework : transition >
212
+
213
+ <framework : transition name =" reopen" >
214
+ <framework : from >closed</framework : from >
215
+
216
+ <framework : to >review</framework : to >
217
+ </framework : transition >
218
+
219
+ </framework : workflow >
220
+
221
+ </framework : config >
222
+ </container >
223
+
224
+ .. code-block :: php
225
+
226
+ // config/packages/workflow.php
227
+ $container->loadFromExtension('framework', [
228
+ // ...
229
+ 'workflows' => [
230
+ 'pull_request' => [
231
+ 'type' => 'state_machine',
232
+ 'supports' => ['App\Entity\PullRequest'],
233
+ 'places' => [
234
+ 'start',
235
+ 'coding',
236
+ 'test',
237
+ 'review' => [
238
+ 'metadata' => [
239
+ 'description' => 'Human review',
240
+ ],
241
+ ],
242
+ 'merged',
243
+ 'closed' => [
244
+ 'metadata' => [
245
+ 'bg_color' => 'DeepSkyBlue',
246
+ ],
247
+ ],
248
+ ],
249
+ 'transitions' => [
250
+ 'submit'=> [
251
+ 'from' => 'start',
252
+ 'to' => 'test',
253
+ ],
254
+ 'update'=> [
255
+ 'from' => ['coding', 'test', 'review'],
256
+ 'to' => 'test',
257
+ 'metadata' => [
258
+ 'arrow_color' => 'Turquoise',
259
+ ],
260
+ ],
261
+ 'wait_for_review'=> [
262
+ 'from' => 'test',
263
+ 'to' => 'review',
264
+ 'metadata' => [
265
+ 'color' => 'Orange',
266
+ ],
267
+ ],
268
+ 'request_change'=> [
269
+ 'from' => 'review',
270
+ 'to' => 'coding',
271
+ ],
272
+ 'accept'=> [
273
+ 'from' => 'review',
274
+ 'to' => 'merged',
275
+ 'metadata' => [
276
+ 'label' => 'Accept PR',
277
+ ],
278
+ ],
279
+ 'reject'=> [
280
+ 'from' => 'review',
281
+ 'to' => 'closed',
282
+ ],
283
+ 'reopen'=> [
284
+ 'from' => 'start',
285
+ 'to' => 'review',
286
+ ],
287
+ ],
288
+ ],
289
+ ],
290
+ ]);
291
+
292
+ The PlantUML image will look like this:
293
+
294
+ .. image :: /_images/components/workflow/pull_request_puml_styled.png
295
+
57
296
.. _`Graphviz` : http://www.graphviz.org
58
297
.. _`PlantUML` : http://plantuml.com/
298
+ .. _`PlantUML's color list` : http://plantuml.com/en/color
0 commit comments