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