@@ -54,5 +54,247 @@ files and ``PlantUmlDumper`` to create the PlantUML files::
5454 $ php dump-graph.php | dot -Tsvg -o graph.svg
5555 $ php dump-graph.php | java -jar plantuml.jar -p > graph.png
5656
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+
57298.. _`Graphviz` : http://www.graphviz.org
58299.. _`PlantUML` : http://plantuml.com/
300+ .. _`PlantUML's color list` : http://plantuml.com/en/color
0 commit comments