ananiaslitz/state-machine

v0.0.1 2023-08-25 17:31 UTC

This package is auto-updated.

Last update: 2024-11-30 02:19:06 UTC


README

StateMachine é uma biblioteca PHP para gerenciar máquinas de estados com a facilidade de configuração através de arquivos YAML. Com suporte adicional para a visualização da máquina de estados usando Graphviz.

Instalação

Para instalar a biblioteca, você pode usar o composer:

composer require ananiaslitz/state-machine

Uso Básico

1- Defina suas regras e estados no state-machine.yaml:

Exemplo de state-machine.yaml:

workflows:
  first_workflow:
    initialState: "idle1"
    states:
      - name: "idle1"
      - name: "running1"
      - name: "stopped1"
    transitions:
      - name: "start1"
        from: "idle1"
        to: "running1"
        rules:
          - "Ananiaslitz\\StateMachine\\Rules\\IsUrgentRule::class"

2 - Utilize a biblioteca em seu código:

require 'vendor/autoload.php';

$loader = new StateMachineLoader();
$data = $loader->createStateMachines();

Geração de Diagrama da Máquina de Estados

Para visualizar a máquina de estados, você pode gerar um diagrama utilizando o Graphviz.

Pré-requisitos:

Instale o Graphviz:

Para sistemas baseados em Debian/Ubuntu:

sudo apt-get install graphviz

Uso:

Para gerar o diagrama, execute:

php /vendor/bin/state-machine [formato]

Onde [formato] é opcional e pode ser png, svg, pdf, etc. Se nenhum formato for fornecido, será gerado um PNG por padrão.

Exemplo:

php /vendor/bin/state-machine [formato]

Após a execução, um arquivo de diagrama (por exemplo, state_machine.png) será gerado na raiz do seu projeto.

Contribuição

Sinta-se à vontade para abrir issues ou enviar pull requests. Sua colaboração é bem-vinda!

Licença

MIT License