Skip to content

Workflow Component: support for PhpEnum #28203

Closed
@danaki

Description

@danaki

Description
Support for Value Objects like popular PhpEnum needed in workflow component. Since I got no response in #22031 comments and component's author suggested reopening the issue (which I can't do), I created this new feature request.

Example

Transaction.php:

<?php

namespace App\Entity;

use App\Entity\Enum\TransactionStatus;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 */
class Transaction
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var TransactionStatus
     *
     * @ORM\Column(type=TransactionStatus::class, nullable=false)
     */
    private $status;

    public function getStatus(): TransactionStatus
    {
        return $this->status;
    }

    public function setStatus(TransactionStatus $status)
    {
        $this->status = $status;
    }
}

TransactionStatus.php:

<?php

declare(strict_types=1);

namespace App\Entity\Enum;

use MyCLabs\Enum\Enum;

class TransactionStatus extends Enum
{
    public const CREATED = 'created';
    public const PENDING = 'pending';
    public const COMPLETE = 'complete';
}

workflow.yaml

framework:
    workflows:
        transaction_state:
            type: 'state_machine'
            places:
                - created
                - pending
                - complete
            initial_place: created
            marking_store:
                type: "single_state"
                arguments: ['status']
            supports:
                - App\Entity\Transaction
            transitions:
                initialize:
                    from: created
                    to: pending
                complete:
                    from: pending
                    to: complete

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions