(16) 981791110 contato@policast.studio

Como utilizar o componente Workflow do Symfony: criando workflows específicos para as necessidades de seu negócio

O que é o componente Workflow do Symfony?

O Workflow é um componente do framework Symfony que permite a criação de workflows específicos para as necessidades de um determinado negócio, com o objetivo de modelar e gerenciar estados, transições e atividades dentro de um processo de negócio.

Por que utilizar o Workflow do Symfony?

Utilizar o Workflow do Symfony oferece diversas vantagens, como: flexibilidade, controle, rastreabilidade, escalabilidade, segurança e padronização.

Como utilizar o Workflow do Symfony?

Para utilizar o Workflow do Symfony, é necessário seguir os seguintes passos:

  1. Criar a lista de estados do processo;
  2. Criar a lista de transições entre os estados;
  3. Criar a lista de atividades relacionadas aos estados e transições;
  4. Configurar a classe de modelo que será gerenciada pelo Workflow;
  5. Configurar os eventos do ciclo de vida do Workflow;
  6. Configurar os guardas e as condições para as transições;
  7. Configurar os notificadores para informar aos usuários sobre as mudanças de estado;
  8. Integrar o Workflow do Symfony aos outros componentes do Symfony, como o Form, o Security e o Messenger.

Exemplo de código-fonte para a configuração do Workflow do Symfony:


workflow:
type: state_machine
marking_store:
type: single_state
supports:
AppBundleEntityOrder:
# Here, you initialize the graph with the list of states
# that your object can be in.
places: [draft, submitted, cancelled]
initial_place: draft

transitions:
submit:
from: draft
to: submitted
cancel:
from: [draft, submitted]
to: cancelled

# Here, you define the events you want to listen for
# during the object's lifecycle.
# You can use the before* and after* syntax to specify
# which event to listen for.
events:
guard:
- guard: AppBundleGuardOrderCanBeSubmitted
from: draft
call:
- service: AppBundleWorkflowOrderWorkflowNotifier
method: sendNotificationOnStateChange
args: ['{{ subject.id }}', '{{ transition.name }}']
on: 'workflow.order.completed'

Com essas configurações básicas, é possível criar e gerenciar um Workflow específico para as necessidades do seu negócio utilizando o componente Workflow do Symfony. O Symfony disponibiliza diversas ferramentas e recursos para auxiliar os desenvolvedores no processo de criação e gerenciamento de Workflows em seus projetos.