From 518208458cb8aa932f31df5e0b0edff39eb31d31 Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 09:59:46 +1000 Subject: [PATCH 1/8] Updated Workflow Registry to Support Metadata --- src/WorkflowRegistry.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index a1c9d88..b2d4355 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -88,6 +88,7 @@ public function add(Workflow $workflow, $supportStrategy) public function addFromArray($name, array $workflowData) { $builder = new DefinitionBuilder($workflowData['places']); + $transitionsMetadata = new \SplObjectStorage(); foreach ($workflowData['transitions'] as $transitionName => $transition) { if (!is_string($transitionName)) { @@ -95,7 +96,11 @@ public function addFromArray($name, array $workflowData) } foreach ((array)$transition['from'] as $form) { - $builder->addTransition(new Transition($transitionName, $form, $transition['to'])); + $currentTransition = new Transition($transitionName, $form, $transition['to']); + $builder->addTransition($currentTransition); + if (isset($transition['metadata'])) { + $transitionsMetadata->attach($currentTransition, $transition['metadata']); + } } } From 3d283e6c0d23f140eeb34b08e2ed725a0ffdd3e7 Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 10:02:31 +1000 Subject: [PATCH 2/8] Set the metadata store in the builder --- src/WorkflowRegistry.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index b2d4355..fccc727 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -104,6 +104,7 @@ public function addFromArray($name, array $workflowData) } } + $builder->setMetadataStore(new InMemoryMetadataStore([], [], $transitionsMetadata)); $definition = $builder->build(); $markingStore = $this->getMarkingStoreInstance($workflowData); $workflow = $this->getWorkflowInstance($name, $workflowData, $definition, $markingStore); From 52f3394ec69ed0702c265ad4b25f0a4bd8908c12 Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 10:16:17 +1000 Subject: [PATCH 3/8] Update to comply with styleci.io --- src/WorkflowRegistry.php | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index fccc727..52311c2 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -36,9 +36,9 @@ class WorkflowRegistry protected $dispatcher; /** - * WorkflowRegistry constructor + * WorkflowRegistry constructor. * - * @param array $config + * @param array $config * @throws \ReflectionException */ public function __construct(array $config) @@ -56,10 +56,10 @@ public function __construct(array $config) } /** - * Return the $subject workflow + * Return the $subject workflow. * - * @param object $subject - * @param string $workflowName + * @param object $subject + * @param string $workflowName * @return Workflow */ public function get($subject, $workflowName = null) @@ -68,7 +68,7 @@ public function get($subject, $workflowName = null) } /** - * Add a workflow to the subject + * Add a workflow to the subject. * * @param Workflow $workflow * @param string $supportStrategy @@ -81,8 +81,8 @@ public function add(Workflow $workflow, $supportStrategy) /** * Add a workflow to the registry from array * - * @param string $name - * @param array $workflowData + * @param string $name + * @param array $workflowData * @throws \ReflectionException */ public function addFromArray($name, array $workflowData) @@ -95,7 +95,7 @@ public function addFromArray($name, array $workflowData) $transitionName = $transition['name']; } - foreach ((array)$transition['from'] as $form) { + foreach ((array) $transition['from'] as $form) { $currentTransition = new Transition($transitionName, $form, $transition['to']); $builder->addTransition($currentTransition); if (isset($transition['metadata'])) { @@ -115,12 +115,12 @@ public function addFromArray($name, array $workflowData) } /** - * Return the workflow instance + * Return the workflow instance. * - * @param String $name - * @param array $workflowData - * @param Definition $definition - * @param MarkingStoreInterface $markingStore + * @param String $name + * @param array $workflowData + * @param Definition $definition + * @param MarkingStoreInterface $markingStore * @return Workflow */ protected function getWorkflowInstance( @@ -141,10 +141,11 @@ protected function getWorkflowInstance( } /** - * Return the making store instance + * Return the making store instance. * - * @param array $workflowData + * @param array $workflowData * @return MarkingStoreInterface + * * @throws \ReflectionException */ protected function getMarkingStoreInstance(array $workflowData) From 7882044cec2e310b8975e78b1866b7d6316e9e9f Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 10:18:21 +1000 Subject: [PATCH 4/8] Update to comply with styleci.io --- src/WorkflowRegistry.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index 52311c2..077ce29 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -39,6 +39,7 @@ class WorkflowRegistry * WorkflowRegistry constructor. * * @param array $config + * * @throws \ReflectionException */ public function __construct(array $config) @@ -60,6 +61,7 @@ public function __construct(array $config) * * @param object $subject * @param string $workflowName + * * @return Workflow */ public function get($subject, $workflowName = null) @@ -79,10 +81,11 @@ public function add(Workflow $workflow, $supportStrategy) } /** - * Add a workflow to the registry from array + * Add a workflow to the registry from array. * * @param string $name * @param array $workflowData + * * @throws \ReflectionException */ public function addFromArray($name, array $workflowData) @@ -117,10 +120,11 @@ public function addFromArray($name, array $workflowData) /** * Return the workflow instance. * - * @param String $name + * @param string $name * @param array $workflowData * @param Definition $definition * @param MarkingStoreInterface $markingStore + * * @return Workflow */ protected function getWorkflowInstance( From a30fcaf20c47b1b6fe48080f86ba4299bbac583b Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 10:19:43 +1000 Subject: [PATCH 5/8] Update to comply with styleci.io --- src/WorkflowRegistry.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index 077ce29..ea4f00f 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -148,9 +148,9 @@ protected function getWorkflowInstance( * Return the making store instance. * * @param array $workflowData - * @return MarkingStoreInterface - * * @throws \ReflectionException + * + * @return MarkingStoreInterface */ protected function getMarkingStoreInstance(array $workflowData) { From 76a1b70c160d9717bf669bceb677b67bcf160325 Mon Sep 17 00:00:00 2001 From: Mischa King Date: Fri, 3 Jul 2020 10:20:04 +1000 Subject: [PATCH 6/8] Update WorkflowRegistry.php --- src/WorkflowRegistry.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index ea4f00f..ad20b7f 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -148,6 +148,7 @@ protected function getWorkflowInstance( * Return the making store instance. * * @param array $workflowData + * * @throws \ReflectionException * * @return MarkingStoreInterface From 9b34400e949c84b7bec36ee7730fbea18f7d40b0 Mon Sep 17 00:00:00 2001 From: Mischa Date: Wed, 15 Jul 2020 14:49:03 +1000 Subject: [PATCH 7/8] Update WorkflowRegistry.php --- src/WorkflowRegistry.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index ad20b7f..edcb44b 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -14,6 +14,7 @@ use Symfony\Component\Workflow\SupportStrategy\InstanceOfSupportStrategy; use Symfony\Component\Workflow\Transition; use Symfony\Component\Workflow\Workflow; +use Symfony\Component\Workflow\Metadata\InMemoryMetadataStore; /** * @author Boris Koumondji From 1e805fd4840dcab3ef67fc76bc39006858b6782a Mon Sep 17 00:00:00 2001 From: Mischa Date: Wed, 15 Jul 2020 14:50:20 +1000 Subject: [PATCH 8/8] Update WorkflowRegistry.php --- src/WorkflowRegistry.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WorkflowRegistry.php b/src/WorkflowRegistry.php index edcb44b..30d233e 100644 --- a/src/WorkflowRegistry.php +++ b/src/WorkflowRegistry.php @@ -9,12 +9,12 @@ use Symfony\Component\Workflow\MarkingStore\MarkingStoreInterface; use Symfony\Component\Workflow\MarkingStore\MultipleStateMarkingStore; use Symfony\Component\Workflow\MarkingStore\SingleStateMarkingStore; +use Symfony\Component\Workflow\Metadata\InMemoryMetadataStore; use Symfony\Component\Workflow\Registry; use Symfony\Component\Workflow\StateMachine; use Symfony\Component\Workflow\SupportStrategy\InstanceOfSupportStrategy; use Symfony\Component\Workflow\Transition; use Symfony\Component\Workflow\Workflow; -use Symfony\Component\Workflow\Metadata\InMemoryMetadataStore; /** * @author Boris Koumondji