@@ -54,5 +54,230 @@ 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+ 'merged',
241+ 'closed',
242+ ],
243+ 'transitions' => [
244+ 'submit'=> [
245+ 'from' => 'start',
246+ 'to' => 'test',
247+ ],
248+ 'update'=> [
249+ 'from' => ['coding', 'test', 'review'],
250+ 'to' => 'test',
251+ ],
252+ 'wait_for_review'=> [
253+ 'from' => 'test',
254+ 'to' => 'review',
255+ ],
256+ 'request_change'=> [
257+ 'from' => 'review',
258+ 'to' => 'coding',
259+ ],
260+ 'accept'=> [
261+ 'from' => 'review',
262+ 'to' => 'merged',
263+ ],
264+ 'reject'=> [
265+ 'from' => 'review',
266+ 'to' => 'closed',
267+ ],
268+ 'reopen'=> [
269+ 'from' => 'start',
270+ 'to' => 'review',
271+ ],
272+ ],
273+ ],
274+ ],
275+ ]);
276+
277+ The PlantUML image will look like this:
278+
279+ ..image ::/_images/components/workflow/pull_request_puml_styled.png
280+
57281.. _`Graphviz` :http://www.graphviz.org
58282.. _`PlantUML` :http://plantuml.com/
283+ .. _`PlantUML's color list` :http://plantuml.com/en/color