diff --git a/UPGRADE-4.3.md b/UPGRADE-4.3.md
index 110e58ed65..020f3a4018 100644
--- a/UPGRADE-4.3.md
+++ b/UPGRADE-4.3.md
@@ -166,11 +166,6 @@ Workflow
initial_places: [draft]
```
-Yaml
-----
-
- * Using a mapping inside a multi-line string is deprecated and will throw a `ParseException` in 5.0.
-
Workflow
--------
@@ -202,19 +197,22 @@ Workflow
```yaml
framework:
workflows:
+ type: workflow
article:
marking_store:
type: multiple
+ arguments: states
```
After:
```yaml
framework:
workflows:
+ type: workflow
article:
marking_store:
type: method
-
+ property: states
```
* `SingleStateMarkingStore` is deprecated. Use `MethodMarkingStore` instead.
@@ -225,7 +223,30 @@ Workflow
workflows:
article:
marking_store:
- type: single
+ arguments: state
+ ```
+
+ After:
+ ```yaml
+ framework:
+ workflows:
+ type: state_machine
+ article:
+ marking_store:
+ type: method
+ property: state
+ ```
+
+ * Using a workflow with a single state marking is deprecated. Use a state machine instead.
+
+ Before:
+ ```yaml
+ framework:
+ workflows:
+ article:
+ type: workflow
+ marking_store:
+ type: single_state
```
After:
@@ -233,8 +254,13 @@ Workflow
framework:
workflows:
article:
+ type: state_machine
marking_store:
+ # type: single_state # Since the single_state marking store is deprecated, use method instead
type: method
- arguments:
- - true
```
+
+Yaml
+----
+
+ * Using a mapping inside a multi-line string is deprecated and will throw a `ParseException` in 5.0.
diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md
index 7c4a38aba2..68001974bb 100644
--- a/UPGRADE-5.0.md
+++ b/UPGRADE-5.0.md
@@ -388,8 +388,68 @@ Workflow
* `ClassInstanceSupportStrategy` has been removed, use `InstanceOfSupportStrategy` instead.
* `MarkingStoreInterface::setMarking()` has a third argument: `array $context = []`.
* Removed support of `initial_place`. Use `initial_places` instead.
- * `MultipleStateMarkingStore` has been removed.
- * `SingleStateMarkingStore` has been removed.
+ * `MultipleStateMarkingStore` has been removed. Use `MethodMarkingStore` instead.
+
+ Before:
+ ```yaml
+ framework:
+ workflows:
+ type: workflow
+ article:
+ marking_store:
+ type: multiple
+ arguments: states
+ ```
+
+ After:
+ ```yaml
+ framework:
+ workflows:
+ type: workflow
+ article:
+ marking_store:
+ property: states
+ ```
+ * `SingleStateMarkingStore` has been removed. Use `MethodMarkingStore` instead.
+
+ Before:
+ ```yaml
+ framework:
+ workflows:
+ article:
+ marking_store:
+ arguments: state
+ ```
+
+ After:
+ ```yaml
+ framework:
+ workflows:
+ article:
+ marking_store:
+ property: state
+ ```
+
+
+ * Support for using a workflow with a single state marking is dropped. Use a state machine instead.
+
+ Before:
+ ```yaml
+ framework:
+ workflows:
+ article:
+ type: workflow
+ marking_store:
+ type: single_state
+ ```
+
+ After:
+ ```yaml
+ framework:
+ workflows:
+ article:
+ type: state_machine
+ ```
Yaml
----
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
index 698ef88e02..f50c951a3e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
@@ -233,7 +233,7 @@ class Configuration implements ConfigurationInterface
$workflows = [];
}
- 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']))) {
+ 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']))) {
$workflows = $workflows['workflows'];
}
@@ -258,9 +258,17 @@ class Configuration implements ConfigurationInterface
->arrayNode('workflows')
->useAttributeAsKey('name')
->prototype('array')
+ ->beforeNormalization()
+ ->always(function ($v) {
+ if (isset($v['initial_place'])) {
+ $v['initial_marking'] = [$v['initial_place']];
+ }
+
+ return $v;
+ })
+ ->end()
->fixXmlConfig('support')
->fixXmlConfig('place')
- ->fixXmlConfig('initial_place')
->fixXmlConfig('transition')
->children()
->arrayNode('audit_trail')
@@ -275,8 +283,17 @@ class Configuration implements ConfigurationInterface
->children()
->enumNode('type')
->values(['multiple_state', 'single_state', 'method'])
+ ->validate()
+ ->ifTrue(function ($v) { return 'method' !== $v; })
+ ->then(function ($v) {
+ @trigger_error('Passing something else than "method" has been deprecated in Symfony 4.3.', E_USER_DEPRECATED);
+
+ return $v;
+ })
+ ->end()
->end()
->arrayNode('arguments')
+ ->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3. Use "property" instead.')
->beforeNormalization()
->ifString()
->then(function ($v) { return [$v]; })
@@ -285,6 +302,9 @@ class Configuration implements ConfigurationInterface
->prototype('scalar')
->end()
->end()
+ ->scalarNode('property')
+ ->defaultValue('marking')
+ ->end()
->scalarNode('service')
->cannotBeEmpty()
->end()
@@ -315,10 +335,10 @@ class Configuration implements ConfigurationInterface
->cannotBeEmpty()
->end()
->scalarNode('initial_place')
- ->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3, use the "initial_places" configuration key instead.')
+ ->setDeprecated('The "%path%.%node%" configuration key has been deprecated in Symfony 4.3, use the "initial_marking" configuration key instead.')
->defaultNull()
->end()
- ->arrayNode('initial_places')
+ ->arrayNode('initial_marking')
->beforeNormalization()
->ifTrue(function ($v) { return !\is_array($v); })
->then(function ($v) { return [$v]; })
@@ -454,6 +474,16 @@ class Configuration implements ConfigurationInterface
})
->thenInvalid('"supports" or "support_strategy" should be configured.')
->end()
+ ->validate()
+ ->ifTrue(function ($v) {
+ return 'workflow' === $v['type'] && 'single_state' === ($v['marking_store']['type'] ?? false);
+ })
+ ->then(function ($v) {
+ @trigger_error('Using a workflow with type=workflow and a marking_store=single_state is deprecated since Symfony 4.3. Use type=state_machine instead.', E_USER_DEPRECATED);
+
+ return $v;
+ })
+ ->end()
->end()
->end()
->end()
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index afca88af95..a4e33ba744 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -631,21 +631,28 @@ class FrameworkExtension extends Extension
// Create places
$places = array_column($workflow['places'], 'name');
- $initialPlaces = $workflow['initial_places'] ?? $workflow['initial_place'] ?? [];
+ $initialMarking = $workflow['initial_marking'] ?? $workflow['initial_place'] ?? [];
// Create a Definition
$definitionDefinition = new Definition(Workflow\Definition::class);
$definitionDefinition->setPublic(false);
$definitionDefinition->addArgument($places);
$definitionDefinition->addArgument($transitions);
- $definitionDefinition->addArgument($initialPlaces);
+ $definitionDefinition->addArgument($initialMarking);
$definitionDefinition->addArgument($metadataStoreDefinition);
// Create MarkingStore
if (isset($workflow['marking_store']['type'])) {
$markingStoreDefinition = new ChildDefinition('workflow.marking_store.'.$workflow['marking_store']['type']);
- foreach ($workflow['marking_store']['arguments'] as $argument) {
- $markingStoreDefinition->addArgument($argument);
+ if ('method' === $workflow['marking_store']['type']) {
+ $markingStoreDefinition->setArguments([
+ 'state_machine' === $type, //single state
+ $workflow['marking_store']['property'],
+ ]);
+ } else {
+ foreach ($workflow['marking_store']['arguments'] as $argument) {
+ $markingStoreDefinition->addArgument($argument);
+ }
}
} elseif (isset($workflow['marking_store']['service'])) {
$markingStoreDefinition = new Reference($workflow['marking_store']['service']);
@@ -670,10 +677,6 @@ class FrameworkExtension extends Extension
case 'state_machine' === $workflow['type']:
$validator = new Workflow\Validator\StateMachineValidator();
break;
- case 'method' === ($workflow['marking_store']['type'] ?? null):
- $singlePlace = $workflow['marking_store']['arguments'][0] ?? false;
- $validator = new Workflow\Validator\WorkflowValidator($singlePlace);
- break;
case 'single_state' === ($workflow['marking_store']['type'] ?? null):
$validator = new Workflow\Validator\WorkflowValidator(true);
break;
@@ -681,12 +684,13 @@ class FrameworkExtension extends Extension
$validator = new Workflow\Validator\WorkflowValidator(false);
break;
}
+
if ($validator) {
$realDefinition = (new Workflow\DefinitionBuilder($places))
->addTransitions(array_map(function (Reference $ref) use ($container): Workflow\Transition {
return $container->get((string) $ref);
}, $transitions))
- ->setInitialPlace($initialPlaces)
+ ->setInitialPlace($initialMarking)
->build()
;
$validator->validate($realDefinition, $name);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
index 5a807403a0..9d71b403dd 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
@@ -279,7 +279,7 @@
-
+
@@ -289,6 +289,7 @@
+
@@ -304,12 +305,14 @@
+
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow-legacy.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow-legacy.php
index e7d8919315..cad94fc773 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow-legacy.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow-legacy.php
@@ -1,11 +1,15 @@
loadFromExtension('framework', [
'workflows' => [
'legacy' => [
- 'type' => 'workflow',
+ 'type' => 'state_machine',
+ 'marking_store' => [
+ 'type' => 'single_state',
+ 'arguments' => [
+ 'state',
+ ],
+ ],
'supports' => [
stdClass::class,
],
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_arguments_and_service.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_legacy_with_arguments_and_service.php
similarity index 100%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_arguments_and_service.php
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_legacy_with_arguments_and_service.php
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_type_and_service.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_legacy_with_type_and_service.php
similarity index 94%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_type_and_service.php
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_legacy_with_type_and_service.php
index eca1e29c45..15189349bd 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_type_and_service.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_legacy_with_type_and_service.php
@@ -6,7 +6,7 @@ $container->loadFromExtension('framework', [
'workflows' => [
'my_workflow' => [
'marking_store' => [
- 'type' => 'multiple_state',
+ 'type' => 'method',
'service' => 'workflow_service',
],
'supports' => [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_guard_expression.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_guard_expression.php
index 03b6a0b79b..2037b5f904 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_guard_expression.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_guard_expression.php
@@ -6,13 +6,10 @@ $container->loadFromExtension('framework', [
'workflows' => [
'article' => [
'type' => 'workflow',
- 'marking_store' => [
- 'type' => 'multiple_state',
- ],
'supports' => [
FrameworkExtensionTest::class,
],
- 'initial_places' => ['draft'],
+ 'initial_marking' => ['draft'],
'places' => [
'draft',
'wait_for_journalist',
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_multiple_transitions_with_same_name.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_multiple_transitions_with_same_name.php
index 613a38c6c0..35a9df3730 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_multiple_transitions_with_same_name.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_multiple_transitions_with_same_name.php
@@ -6,13 +6,10 @@ $container->loadFromExtension('framework', [
'workflows' => [
'article' => [
'type' => 'workflow',
- 'marking_store' => [
- 'type' => 'multiple_state',
- ],
'supports' => [
FrameworkExtensionTest::class,
],
- 'initial_places' => ['draft'],
+ 'initial_marking' => ['draft'],
'places' => [
'draft',
'wait_for_journalist',
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_support_and_support_strategy.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_support_and_support_strategy.php
index 4b38093a3d..063755b130 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_support_and_support_strategy.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_with_support_and_support_strategy.php
@@ -5,9 +5,7 @@ use Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionT
$container->loadFromExtension('framework', [
'workflows' => [
'my_workflow' => [
- 'marking_store' => [
- 'type' => 'multiple_state',
- ],
+ 'type' => 'workflow',
'supports' => [
FrameworkExtensionTest::class,
],
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_without_support_and_support_strategy.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_without_support_and_support_strategy.php
index dd2a92dc26..5eef5cc4d0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_without_support_and_support_strategy.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflow_without_support_and_support_strategy.php
@@ -1,13 +1,9 @@
loadFromExtension('framework', [
'workflows' => [
'my_workflow' => [
- 'marking_store' => [
- 'type' => 'multiple_state',
- ],
+ 'type' => 'workflow',
'places' => [
'first',
'last',
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows.php
index 17a0e1fa4a..7c7f7ed0b4 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows.php
@@ -6,13 +6,10 @@ $container->loadFromExtension('framework', [
'workflows' => [
'article' => [
'type' => 'workflow',
- 'marking_store' => [
- 'type' => 'multiple_state',
- ],
'supports' => [
FrameworkExtensionTest::class,
],
- 'initial_places' => ['draft'],
+ 'initial_marking' => ['draft'],
'places' => [
'draft',
'wait_for_journalist',
@@ -41,13 +38,10 @@ $container->loadFromExtension('framework', [
],
],
'pull_request' => [
- 'marking_store' => [
- 'type' => 'single_state',
- ],
'supports' => [
FrameworkExtensionTest::class,
],
- 'initial_places' => ['start'],
+ 'initial_marking' => 'start',
'metadata' => [
'title' => 'workflow title',
],
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled.php
index 1c8190bd09..e6f261f8f2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled.php
@@ -6,7 +6,7 @@ $container->loadFromExtension('framework', [
'foo' => [
'type' => 'workflow',
'supports' => ['Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest'],
- 'initial_places' => ['bar'],
+ 'initial_marking' => ['bar'],
'places' => ['bar', 'baz'],
'transitions' => [
'bar_baz' => [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled_named_workflows.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled_named_workflows.php
index 6faae44f45..e4bc05a66f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled_named_workflows.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/workflows_explicitly_enabled_named_workflows.php
@@ -6,7 +6,7 @@ $container->loadFromExtension('framework', [
'workflows' => [
'type' => 'workflow',
'supports' => ['Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest'],
- 'initial_places' => ['bar'],
+ 'initial_marking' => ['bar'],
'places' => ['bar', 'baz'],
'transitions' => [
'bar_baz' => [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow-legacy.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow-legacy.xml
index d1339d5f65..5a46d24d0d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow-legacy.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow-legacy.xml
@@ -7,10 +7,13 @@
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+
+
+ state
+
stdClass
-
-
+
+
draft
published
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_arguments_and_service.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_legacy_with_arguments_and_service.xml
similarity index 100%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_arguments_and_service.xml
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_legacy_with_arguments_and_service.xml
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_type_and_service.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_legacy_with_type_and_service.xml
similarity index 91%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_type_and_service.xml
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_legacy_with_type_and_service.xml
index 8b4bf305a8..e137f9b4b0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_type_and_service.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_legacy_with_type_and_service.xml
@@ -8,7 +8,7 @@
-
+
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_guard_expression.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_guard_expression.xml
index 32c33db5b8..ffc12c4d0d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_guard_expression.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_guard_expression.xml
@@ -8,11 +8,7 @@
- draft
-
- a
- a
-
+ draft
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
draft
wait_for_journalist
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_multiple_transitions_with_same_name.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_multiple_transitions_with_same_name.xml
index ffc316c99e..db79f9323c 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_multiple_transitions_with_same_name.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_multiple_transitions_with_same_name.xml
@@ -8,11 +8,7 @@
- draft
-
- a
- a
-
+ draft
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_support_and_support_strategy.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_support_and_support_strategy.xml
index f3ff577b80..54a346ebda 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_support_and_support_strategy.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_with_support_and_support_strategy.xml
@@ -7,8 +7,7 @@
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
-
+
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_without_support_and_support_strategy.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_without_support_and_support_strategy.xml
index 3529c50cee..c6ee7d77b5 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_without_support_and_support_strategy.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflow_without_support_and_support_strategy.xml
@@ -7,8 +7,7 @@
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
-
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
index da5cd4c758..0c6a638df4 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
@@ -8,18 +8,15 @@
- draft
-
- a
- a
-
+ draft
+
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
-
-
-
-
-
-
+
+
+
+
+
+
draft
wait_for_journalist
@@ -40,8 +37,8 @@
-
-
+
+ start
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled.xml
index b564c6ff76..bb544d8979 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled.xml
@@ -6,8 +6,7 @@
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
- bar
+
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
bar
baz
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled_named_workflows.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled_named_workflows.xml
index b218480fe6..41fd29a1f2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled_named_workflows.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows_explicitly_enabled_named_workflows.xml
@@ -7,7 +7,7 @@
- bar
+ bar
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
bar
baz
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow-legacy.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow-legacy.yml
index 7ff70074d4..19f51dc9f4 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow-legacy.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow-legacy.yml
@@ -1,7 +1,11 @@
framework:
workflows:
legacy:
- type: workflow
+ type: state_machine
+ marking_store:
+ type: single_state
+ arguments:
+ - state
initial_place: draft
supports:
- stdClass
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_arguments_and_service.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_legacy_with_arguments_and_service.yml
similarity index 100%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_arguments_and_service.yml
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_legacy_with_arguments_and_service.yml
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_type_and_service.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_legacy_with_type_and_service.yml
similarity index 92%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_type_and_service.yml
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_legacy_with_type_and_service.yml
index 000ba10dfb..33ee68b1bc 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_type_and_service.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_legacy_with_type_and_service.yml
@@ -2,7 +2,7 @@ framework:
workflows:
my_workflow:
marking_store:
- type: multiple_state
+ type: method
service: workflow_service
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_guard_expression.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_guard_expression.yml
index 433771601c..80a85a307b 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_guard_expression.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_guard_expression.yml
@@ -2,18 +2,16 @@ framework:
workflows:
article:
type: workflow
- marking_store:
- type: multiple_state
supports:
- - Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [draft]
+ - Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
+ initial_marking: [draft]
places:
- - draft
- - wait_for_journalist
- - approved_by_journalist
- - wait_for_spellchecker
- - approved_by_spellchecker
- - published
+ - draft
+ - wait_for_journalist
+ - approved_by_journalist
+ - wait_for_spellchecker
+ - approved_by_spellchecker
+ - published
transitions:
request_review:
from: [draft]
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_multiple_transitions_with_same_name.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_multiple_transitions_with_same_name.yml
index fee71c2645..12df7b79e7 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_multiple_transitions_with_same_name.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_multiple_transitions_with_same_name.yml
@@ -2,11 +2,9 @@ framework:
workflows:
article:
type: workflow
- marking_store:
- type: multiple_state
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [draft]
+ initial_marking: [draft]
places:
- draft
- wait_for_journalist
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_support_and_support_strategy.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_support_and_support_strategy.yml
index 743708485c..de0b36d8fa 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_support_and_support_strategy.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_with_support_and_support_strategy.yml
@@ -1,8 +1,7 @@
framework:
workflows:
my_workflow:
- marking_store:
- type: multiple_state
+ type: workflow
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
support_strategy: foobar
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_without_support_and_support_strategy.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_without_support_and_support_strategy.yml
index 6dc848d936..de74adbe59 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_without_support_and_support_strategy.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflow_without_support_and_support_strategy.yml
@@ -1,8 +1,7 @@
framework:
workflows:
my_workflow:
- marking_store:
- type: multiple_state
+ type: workflow
places:
- first
- last
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows.yml
index 894d5dcde2..225106383d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows.yml
@@ -2,11 +2,9 @@ framework:
workflows:
article:
type: workflow
- marking_store:
- type: multiple_state
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [draft]
+ initial_marking: [draft]
places:
# simple format
- draft
@@ -29,11 +27,9 @@ framework:
from: [approved_by_journalist, approved_by_spellchecker]
to: [published]
pull_request:
- marking_store:
- type: single_state
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [start]
+ initial_marking: start
metadata:
title: workflow title
places:
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled.yml
index d154537470..bee231736b 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled.yml
@@ -6,7 +6,7 @@ framework:
type: workflow
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [bar]
+ initial_marking: [bar]
places:
- bar
- baz
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled_named_workflows.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled_named_workflows.yml
index bb468254ac..c0462c9ab8 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled_named_workflows.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/workflows_explicitly_enabled_named_workflows.yml
@@ -5,7 +5,7 @@ framework:
type: workflow
supports:
- Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTest
- initial_places: [bar]
+ initial_marking: [bar]
places:
- bar
- baz
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
index 1b8a785a30..7085327e5c 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
@@ -275,15 +275,18 @@ abstract class FrameworkExtensionTest extends TestCase
$this->assertGreaterThan(0, \count($registryDefinition->getMethodCalls()));
}
+ /**
+ * @group legacy
+ */
public function testWorkflowLegacy()
{
$container = $this->createContainerFromFile('workflow-legacy');
- $this->assertTrue($container->hasDefinition('workflow.legacy'), 'Workflow is registered as a service');
- $this->assertSame('workflow.abstract', $container->getDefinition('workflow.legacy')->getParent());
- $this->assertTrue($container->hasDefinition('workflow.legacy.definition'), 'Workflow definition is registered as a service');
+ $this->assertTrue($container->hasDefinition('state_machine.legacy'), 'Workflow is registered as a service');
+ $this->assertSame('state_machine.abstract', $container->getDefinition('state_machine.legacy')->getParent());
+ $this->assertTrue($container->hasDefinition('state_machine.legacy.definition'), 'Workflow definition is registered as a service');
- $workflowDefinition = $container->getDefinition('workflow.legacy.definition');
+ $workflowDefinition = $container->getDefinition('state_machine.legacy.definition');
$this->assertSame(['draft'], $workflowDefinition->getArgument(2));
@@ -312,7 +315,7 @@ abstract class FrameworkExtensionTest extends TestCase
*/
public function testWorkflowCannotHaveBothTypeAndService()
{
- $this->createContainerFromFile('workflow_with_type_and_service');
+ $this->createContainerFromFile('workflow_legacy_with_type_and_service');
}
/**
@@ -336,10 +339,11 @@ abstract class FrameworkExtensionTest extends TestCase
/**
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
* @expectedExceptionMessage "arguments" and "service" cannot be used together.
+ * @group legacy
*/
public function testWorkflowCannotHaveBothArgumentsAndService()
{
- $this->createContainerFromFile('workflow_with_arguments_and_service');
+ $this->createContainerFromFile('workflow_legacy_with_arguments_and_service');
}
public function testWorkflowMultipleTransitionsWithSameName()
@@ -412,7 +416,7 @@ abstract class FrameworkExtensionTest extends TestCase
], $container->getDefinition($transitions[4])->getArguments());
}
- public function testGuardExpressions()
+ public function testWorkflowGuardExpressions()
{
$container = $this->createContainerFromFile('workflow_with_guard_expression');
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
index 19bad8e825..a67a358447 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
@@ -89,10 +89,10 @@ class PhpFrameworkExtensionTest extends FrameworkExtensionTest
}
/**
- * @expectedException \Symfony\Component\Workflow\Exception\InvalidDefinitionException
- * @expectedExceptionMessage The marking store of workflow "article" can not store many places. But the transition "a_to_b" has too many output (2). Only one is accepted.
+ * @group legacy
+ * @expectedDeprecation Using a workflow with type=workflow and a marking_store=single_state is deprecated since Symfony 4.3. Use type=state_machine instead.
*/
- public function testWorkflowValidationMethodSingle()
+ public function testWorkflowDeprecateWorkflowSingleState()
{
$this->createContainerFromClosure(function ($container) {
$container->loadFromExtension('framework', [
@@ -100,10 +100,7 @@ class PhpFrameworkExtensionTest extends FrameworkExtensionTest
'article' => [
'type' => 'workflow',
'marking_store' => [
- 'type' => 'method',
- 'arguments' => [
- true,
- ],
+ 'type' => 'single_state',
],
'supports' => [
__CLASS__,
@@ -116,7 +113,7 @@ class PhpFrameworkExtensionTest extends FrameworkExtensionTest
'transitions' => [
'a_to_b' => [
'from' => ['a'],
- 'to' => ['b', 'c'],
+ 'to' => ['b'],
],
],
],
@@ -125,42 +122,9 @@ class PhpFrameworkExtensionTest extends FrameworkExtensionTest
});
}
- public function testWorkflowValidationMethodNotSingle()
- {
- $this->createContainerFromClosure(function ($container) {
- $container->loadFromExtension('framework', [
- 'workflows' => [
- 'article' => [
- 'type' => 'workflow',
- 'marking_store' => [
- 'type' => 'method',
- 'arguments' => [
- false,
- ],
- ],
- 'supports' => [
- __CLASS__,
- ],
- 'places' => [
- 'a',
- 'b',
- 'c',
- ],
- 'transitions' => [
- 'a_to_b' => [
- 'from' => ['a'],
- 'to' => ['b', 'c'],
- ],
- ],
- ],
- ],
- ]);
- });
-
- // the test ensures that the validation does not fail (i.e. it does not throw any exceptions)
- $this->addToAssertionCount(1);
- }
-
+ /**
+ * @group legacy
+ */
public function testWorkflowValidationMultipleState()
{
$this->createContainerFromClosure(function ($container) {
@@ -197,6 +161,7 @@ class PhpFrameworkExtensionTest extends FrameworkExtensionTest
/**
* @expectedException \Symfony\Component\Workflow\Exception\InvalidDefinitionException
* @expectedExceptionMessage The marking store of workflow "article" can not store many places. But the transition "a_to_b" has too many output (2). Only one is accepted.
+ * @group legacy
*/
public function testWorkflowValidationSingleState()
{