Search by

libriciel / cakephp-state-machine

ludeusepommateaupviver

StateMachineBehavior for CakePHP 3

Package info

gitlab.adullact.net/Libriciel/archivage/cakephp-state-machine.git

Homepage

Type:cakephp-plugin

pkg:composer/libriciel/cakephp-state-machine

Statistics

Installs: 6 416

Dependents: 2

Suggesters: 0

3.1.0 2020-10-21 15:13 UTC

README

License build status coverage report

Behavior CakePHP 4 de machine à états : transitions entre états d'une entité, callbacks, historique des états et export du graphe au format Graphviz.

Dépendance de

ProjetBuildCoverage
asalaebuild statuscoverage report
versaebuild statuscoverage report
asalae-corebuild statuscoverage report
cakephp-beanstalkbuild statuscoverage report

Prérequis

  • PHP >=7.1 avec l'extension json
  • dot (paquet graphviz), uniquement pour générer le graphe des transitions (DotShell)

Installation

composer require libriciel/cakephp-state-machine:dev-master

Colonnes nécessaires sur la table (noms configurables via l'option fields) : state, previous_state, last_state_update, states_history.

Utilisation

Model/Behavior

StateMachineBehavior : la table déclare son état initial ($initialState) et ses transitions ($transitions : transition => [état de départ => état d'arrivée]). Méthodes : transition(), transitionOrFail(), transitionAll(), can(), is(), getCurrentState(), getPreviousState(), getAvailableStates(), on() et when() (callbacks sur transition ou état), toDot().

src/Model/Table/TransfersTable.php (asalae)

    public $initialState = self::S_CREATING;
    // ...
    public $transitions = [
        self::T_PREPARE => [
            self::S_CREATING => self::S_PREPARATING,
            self::S_REJECTED => self::S_PREPARATING,
        ],
        self::T_TIMESTAMP => [
            self::S_PREPARATING => self::S_TIMESTAMPING,
        ],
        self::T_ANALYSE => [
            self::S_PREPARATING => self::S_ANALYSING,
            self::S_TIMESTAMPING => self::S_ANALYSING,
        ],
        // ...
    ];
        $this->addBehavior(
            'StateMachine.StateMachine',
            [
                'fields' => [
                    'states_history' => 'state_history',

src/Command/CompositeFillerCommand.php (asalae)

        $Transfers->transitionOrFail($entity, TransfersTable::T_PREPARE);
        $Transfers->transitionOrFail($entity, TransfersTable::T_ANALYSE);

Shell

DotShell (arguments <Model> [filename], option -o <dossier>) : génère le graphe des transitions d'une table au format Graphviz (.dot) et son rendu PNG (binaire dot requis).

Licence

Fork de davidsteinsland/cakephp-state-machine (David Steinsland, licence MIT), dont le dépôt GitHub n'est plus en ligne. L'historique d'origine est conservé dans ce dépôt. Voir LICENSE.