8000 [Workflow] Changed initial_places to initial_marking, added property … · symfony/symfony@73708a6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 73708a6

Browse files
HeahDudelyrixx
authored andcommitted
[Workflow] Changed initial_places to initial_marking, added property instead of type
1 parent 5fe3701 commit 73708a6

File tree

38 files changed

+214
-98
lines changed

38 files changed

+214
-98
lines changed

UPGRADE-4.3.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@ Workflow
166166
initial_places: [draft]
167167
```
168168

169-
Yaml
170-
----
171-
172-
* Using a mapping inside a multi-line string is deprecated and will throw a `ParseException` in 5.0.
173-
174169
Workflow
175170
--------
176171

@@ -202,19 +197,22 @@ Workflow
202197
```yaml
203198
framework:
204199
workflows:
200+
type: workflow
205201
article:
206202
marking_store:
207203
type: multiple
204+
arguments: states
208205
```
209206

210207
After:
211208
```yaml
212209
framework:
213210
workflows:
211+
type: workflow
214212
article:
215213
marking_store:
216214
type: method
217-
215+
property: states
218216
```
219217

220218
* `SingleStateMarkingStore` is deprecated. Use `MethodMarkingStore` instead.
@@ -225,16 +223,21 @@ Workflow
225223
workflows:
226224
article:
227225
marking_store:
228-
type: single
226+
arguments: state
229227
```
230228

231229
After:
232230
```yaml
233231
framework:
234232
workflows:
233+
type: state_machine
235234
article:
236235
marking_store:
237236
type: method
238-
arguments:
239-
- true
237+
property: state
240238
```
239+
240+
Yaml
241+
----
242+
243+
* Using a mapping inside a multi-line string is deprecated and will throw a `ParseException` in 5.0.

UPGRADE-5.0.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,8 +388,47 @@ Workflow
388388
* `ClassInstanceSupportStrategy` has been removed, use `InstanceOfSupportStrategy` instead.
389389
* `MarkingStoreInterface::setMarking()` has a third argument: `array $context = []`.
390390
* Removed support of `initial_place`. Use `initial_places` instead.
391-
* `MultipleStateMarkingStore` has been removed.
392-
* `SingleStateMarkingStore` has been removed.
391+
* `MultipleStateMarkingStore` has been removed. Use `MethodMarkingStore` instead.
392+
393+
Before:
394+
```yaml
395+
framework:
396+
workflows:
397+
type: workflow
398+
article:
399+
marking_store:
400+
type: multiple
401+
arguments: states
402+
```
403+
404+
After:
405+
```yaml
406+
framework:
407+
workflows:
408+
type: workflow
409+
article:
410+
marking_store:
411+
4F6 property: states
412+
```
413+
* `SingleStateMarkingStore` has been removed. Use `MethodMarkingStore` instead.
414+
415+
Before:
416+
```yaml
417+
framework:
418+
workflows:
419+
article:
420+
marking_store:
421+
arguments: state
422+
```
423+
424+
After:
425+
```yaml
426+
framework:
427+
workflows:
428+
article:
429+
marking_store:
430+
property: state
431+
```
393432

394433
Yaml
395434
----

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
233233
$workflows = [];
234234
}
235235

236-
if (1 === \count($workflows) && isset($workflows['workflows']) && array_keys($workflows['workflows']) !== range(0, \count($workflows) - 1) && !empty(array_diff(array_keys($workflows['workflows']), ['audit_trail', 'type', 'marking_store', 'supports', 'support_strategy', 'initial_places', 'places', 'transitions']))) {
236+
if (1 === \count($workflows) && isset($workflows['workflows']) && array_keys($workflows['workflows']) !== range(0, \count($workflows) - 1) && !empty(array_diff(array_keys($workflows['workflows']), ['audit_trail', 'type', 'marking_store', 'supports', 'support_strategy', 'initial_marking', 'places', 'transitions']))) {
237237
$workflows = $workflows['workflows'];
238238
}
239239

@@ -258,9 +258,17 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
258258
->arrayNode('workflows')
259259
->useAttributeAsKey('name')
260260
->prototype('array')
261+
->beforeNormalization()
262+
->always(function ($v) {
263+
if (isset($v['initial_place'])) {
264+
$v['initial_marking'] = [$v['initial_place']];
265+
}
266+
267+
return $v;
268+
})
269+
->end()
261270
->fixXmlConfig('support')
262271
->fixXmlConfig('place')
263-
->fixXmlConfig('initial_place')
264272
->fixXmlConfig('transition')
265273
->children()
266274
->arrayNode('audit_trail')
@@ -274,9 +282,11 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
274282
->fixXmlConfig('argument')
275283
->children()
276284
->enumNode('type')
285+
->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3. Use "method" instead as it will be the only option in Symfony 5.0.')
277286
->values(['multiple_state', 'single_state', 'method'])
278287
->end()
279288
->arrayNode('arguments')
289+
->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3. Use "property" instead.')
280290
->beforeNormalization()
281291
->ifString()
282292
->then(function ($v) { return [$v]; })
@@ -285,6 +295,9 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
285295
->prototype('scalar')
286296
->end()
287297
->end()
298+
->scalarNode('property')
299+
->defaultNull()
300+
->end()
288301
->scalarNode('service')
289302
->cannotBeEmpty()
290303
->end()
@@ -297,6 +310,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
297310
->ifTrue(function ($v) { return !empty($v['arguments']) && isset($v['service']); })
298311
->thenInvalid('"arguments" and "service" cannot be used together.')
299312
->end()
313+
->validate()
314+
->ifTrue(function ($v) { return !empty($v['property']) && isset($v['service']); })
315+
->thenInvalid('"property" and "service" cannot be used together.')
316+
->end()
300317
->end()
301318
->arrayNode('supports')
302319
->beforeNormalization()
@@ -315,10 +332,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
315332
->cannotBeEmpty()
316333
->end()
317334
->scalarNode('initial_place')
318-
->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3, use the "initial_places" configuration key instead.')
335+
->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3, use the "initial_marking" configuration key instead.')
319336
->defaultNull()
320337
->end()
321-
->arrayNode('initial_places')
338+
->arrayNode('initial_marking')
322339
->beforeNormalization()
323340
->ifTrue(function ($v) { return !\is_array($v); })
324341
->then(function ($v) { return [$v]; })

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -631,14 +631,14 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
631631

632632
// Create places
633633
$places = array_column($workflow['places'], 'name');
634-
$initialPlaces = $workflow['initial_places'] ?? $workflow['initial_place'] ?? [];
634+
$initialMarking = $workflow['initial_marking'] ?? $workflow['initial_place'] ?? [];
635635

636636
// Create a Definition
637637
$definitionDefinition = new Definition(Workflow\Definition::class);
638638
$definitionDefinition->setPublic(false);
639639
$definitionDefinition->addArgument($places);
640640
$definitionDefinition->addArgument($transitions);
641-
$definitionDefinition->addArgument($initialPlaces);
641+
$definitionDefinition->addArgument($initialMarking);
642642
$definitionDefinition->addArgument($metadataStoreDefinition);
643643

644644
// Create MarkingStore
@@ -647,6 +647,12 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
647647
foreach ($workflow['marking_store']['arguments'] as $argument) {
648648
$markingStoreDefinition->addArgument($argument);
649649
}
650+
if ('method' === $workflow['marking_store']['type']) {
651+
$markingStoreDefinition->setArguments([
652+
'state_machine' === $type, //single state
653+
$workflow['marking_store']['property'] ?? 'marking',
654+
]);
655+
}
650656
} elseif (isset($workflow['marking_store']['service'])) {
651657
$markingStoreDefinition = new Reference($workflow['marking_store']['service']);
652658
}
@@ -686,7 +692,7 @@ private function registerWorkflowConfiguration(array $config, ContainerBuilder $
686692
->addTransitions(array_map(function (Reference $ref) use ($container): Workflow\Transition {
687693
return $container->get((string) $ref);
688694
}, $transitions))
689-
->setInitialPlace($initialPlaces)
695+
->setInitialPlace($initialMarking)
690696
->build()
691697
;
692698
$validator->validate($realDefinition, $name);

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@
279279

280280
<xsd:complexType name="workflow">
281281
<xsd:sequence>
282-
<xsd:element name="initial-place" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
282+
<xsd:element name="initial-marking" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
283283
<xsd:element name="marking-store" type="marking_store" minOccurs="0" maxOccurs="1" />
284284
<xsd:element name="support" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
285285
<xsd:element name="place" type="place" minOccurs="0" maxOccurs="unbounded" />
@@ -289,6 +289,7 @@
289289
<xsd:attribute name="name" type="xsd:string" />
290290
<xsd:attribute name="type" type="workflow_type" />
291291
<xsd:attribute name="initial-place" type="xsd:string" />
292+
<xsd:attribute name="initial-marking" type="xsd:string" />
292293
<xsd:attribute name="support-strategy" type="xsd:string" />
293294
<xsd:attribute name="enabled" type="xsd:boolean" />
294295
</xsd:complexType>
@@ -304,12 +305,14 @@
304305
</xsd:sequence>
305306
<xsd:attribute name="type" type="marking_store_type" />
306307
<xsd:attribute name="service" type="xsd:string" />
308+
<xsd:attribute name="property" type="xsd:string" />
307309
</xsd:complexType>
308310

309311
<xsd:simpleType name="marking_store_type">
310312
<xsd:restriction base="xsd:string">
311313
<xsd:enumeration value="multiple_state" />
312314
<xsd:enumeration value="single_state" />
315+
<xsd:enumeration value="method" />
313316
</xsd:restriction>
314317
</xsd:simpleType>
315318

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow-legacy.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<?php
22

3-
use Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest;
4-
53
$container->loadFromExtension('framework', [
64
'workflows' => [
75
'legacy' => [
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
'workflows' => [
77
'my_workflow' => [
88
'marking_store' => [
9-
'type' => 'multiple_state',
9+
'type' => 'method',
1010
'service' => 'workflow_service',
1111
],
1212
'supports' => [

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_guard_expression.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
'workflows' => [
77
'article' => [
88
'type' => 'workflow',
9-
'marking_store' => [
10-
'type' => 'multiple_state',
11-
],
129
'supports' => [
1310
FrameworkExtensionTest::class,
1411
],
15-
'initial_places' => ['draft'],
12+
'initial_marking' => ['draft'],
1613
'places' => [
1714
'draft',
1815
'wait_for_journalist',

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_multiple_transitions_with_same_name.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
'workflows' => [
77
'article' => [
88
'type' => 'workflow',
9-
'marking_store' => [
10-
'type' => 'multiple_state',
11-
],
129
'supports' => [
1310
FrameworkExtensionTest::class,
1411
],
15-
'initial_places' => ['draft'],
12+
'initial_marking' => ['draft'],
1613
'places' => [
1714
'draft',
1815
'wait_for_journalist',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest;
4+
5+
$container->loadFromExtension('framework', [
6+
'workflows' => [
7+
'my_workflow' => [
8+
'type' => 'workflow',
9+
'marking_store' => [
10+
'property' => 'states',
11+
'service' => 'workflow_service',
12+
],
13+
'supports' => [
14+
FrameworkExtensionTest::class,
15+
],
16+
'places' => [
17+
'first',
18+
'last',
19+
],
20+
'transitions' => [
21+
'go' => [
22+
'from' => [
23+
'first',
24+
],
25+
'to' => [
26+
'last',
27+
],
28+
],
29+
],
30+
],
31+
],
32+
]);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_support_and_support_strategy.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
$container->loadFromExtension('framework', [
66
'workflows' => [
77
'my_workflow' => [
8-
'marking_store' => [
9-
'type' => 'multiple_state',
10-
],
8+
'type' => 'workflow',
119
'supports' => [
1210
FrameworkExtensionTest::class,
1311
],

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_without_support_and_support_strategy.php

Lines changed: 1 addition & 5 deletions
< 10000 /div>
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
<?php
22

3-
use Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest;
4-
53
$container->loadFromExtension('framework', [
64
'workflows' => [
75
'my_workflow' => [
8-
'marking_store' => [
9-
'type' => 'multiple_state',
10-
],
6+
'type' => 'workflow',
117
'places' => [
128
'first',
139
'last',

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
'workflows' => [
77
'article' => [
88
'type' => 'workflow',
9-
'marking_store' => [
10-
'type' => 'multiple_state',
11-
],
129
'supports' => [
1310
FrameworkExtensionTest::class,
1411
],
15-
'initial_places' => ['draft'],
12+
'initial_marking' => ['draft'],
1613
'places' => [
1714
'draft',
1815
'wait_for_journalist',
@@ -41,13 +38,10 @@
4138
],
4239
],
4340
'pull_request' => [
44-
'marking_store' => [
45-
'type' => 'single_state',
46-
],
4741
'supports' => [
4842
FrameworkExtensionTest::class,
4943
],
50-
'initial_places' => ['start'],
44+
'initial_marking' => 'start',
5145
'metadata' => [
5246
'title' => 'workflow title',
5347
],

0 commit comments

Comments
 (0)
0