@@ -130,7 +130,7 @@ Below is the configuration for the pull request state machine.
130
130
</framework : marking-store >
131
131
132
132
<framework : support >App\Entity\PullRequest</framework : support >
133
-
133
+
134
134
<framework : initial_marking >start</framework : initial_marking >
135
135
136
136
<framework : place >start</framework : place >
@@ -302,4 +302,33 @@ to access the proper service::
302
302
// ...
303
303
}
304
304
305
+ Automatic and Manual Validation
306
+ -------------------------------
307
+
308
+ During cache warmup, Symfony validates the workflows and state machines that are
309
+ defined in configuration files. If your workflows or state machines are defined
310
+ programmatically instead of in a configuration file, you can validate them with
311
+ the :class: `Symfony\\ Component\\ Workflow\\ Validator\\ WorkflowValidator ` and
312
+ :class: `Symfony\\ Component\\ Workflow\\ Validator\\ StateMachineValidator `::
313
+
314
+ // ...
315
+ use Symfony\Component\Workflow\Definition;
316
+ use Symfony\Component\Workflow\StateMachine;
317
+ use Symfony\Component\Workflow\Validator\StateMachineValidator;
318
+
319
+ $states = ['created', 'activated', 'deleted'];
320
+ $stateTransitions = [
321
+ new Transition('activate', 'created', 'activated'),
322
+ // This duplicate event "from" the "created" state is invalid
323
+ new Transition('activate', 'created', 'deleted'),
324
+ new Transition('delete', 'activated', 'deleted'),
325
+ ];
326
+
327
+ // No validation is done upon initialization
328
+ $definition = new Definition($states, $stateTransitions);
329
+
330
+ $validator = new StateMachineValidator();
331
+ // Throws InvalidDefinitionException in case of an invalid definition
332
+ $validator->validate($definition, 'My First StateMachine');
333
+
305
334
.. _`Petri nets` : https://en.wikipedia.org/wiki/Petri_net
0 commit comments