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:
- Criar a lista de estados do processo;
- Criar a lista de transições entre os estados;
- Criar a lista de atividades relacionadas aos estados e transições;
- Configurar a classe de modelo que será gerenciada pelo Workflow;
- Configurar os eventos do ciclo de vida do Workflow;
- Configurar os guardas e as condições para as transições;
- Configurar os notificadores para informar aos usuários sobre as mudanças de estado;
- 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.