Skip to content

Commit

Permalink
Merge branch '5.4' into 6.4
Browse files Browse the repository at this point in the history
* 5.4:
  [Workflow] Add type information for multiple state marking store
  • Loading branch information
javiereguiluz committed Apr 9, 2024
2 parents 08363f0 + 85268b4 commit aece722
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions workflow.rst
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,41 @@ what actions are allowed on a blog post::
// See a specific available transition for the post in the current state
$transition = $workflow->getEnabledTransition($post, 'publish');

Using a multiple state marking store
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you are creating a :doc:`workflow </workflow/workflow-and-state-machine>`,
your marking store may need to contain multiple places at the same time. That's why,
if you are using Doctrine, the matching column definition should use the type ``json``::

// src/Entity/BlogPost.php
namespace App\Entity;

use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class BlogPost
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private int $id;

#[ORM\Column(type: Types::JSON)]
private array $currentPlaces;

// ...
}

.. caution::

You should not use the type ``simple_array`` for your marking store. Inside
a multiple state marking store, places are stored as keys with a value of one,
such as ``['draft' => 1]``. If the marking store contains only one place,
this Doctrine type will store its value only as a string, resulting in the
loss of the object's current place.

Accessing the Workflow in a Class
---------------------------------

Expand Down

0 comments on commit aece722

Please sign in to comment.