Gerenciar as etapas de validação de um aplicativo pode rapidamente se tornar um quebra-cabeça, principalmente se feito de forma manual. O componente Symfony Workflow foi introduzido no 3.2 para simplificar a vida de todos os desenvolvedores que precisavam gerenciar gráficos, processos de validação e / ou máquinas de estado. Nesta palestra falo um pouco sobre este incrível componente, e mostro um pouco do que é possível fazer com ele.
2. Camila Fernandes
Graduada em Análise de Sistema
desde 2013
Programadora PHP há 6 anos
Programadora Symfony 4 anos
Instrutora PHP
Evangelista PHPWomenBR
camilafernandesdev@gmail.com
@Kafernandesdev
3. O que é o Symfony
Workflow
Fornece ferramentas para gerenciar um fluxo de
trabalho ou uma máquina de estados
6. Configuração do
Workflow
Para que o componente de fluxo de trabalho
funcione, precisamos configurar uma definição
de fluxo de trabalho , um repositório de
marcação e um assunto
10. Guard
Guard Events é executado cada vez que uma
chamada é feita, workflow::can, workflow:apply,
workflow::getEnableTransitions.
Com ele é possível adicionar uma lógica
personalizada para bloquear transações
14. Workflow no Twig
workflow_can() - Retorna truese o objeto dado pode fazer a transição
dada.
workflow_transitions() - Retorna um array com todas as transições
habilitadas para o objeto dado.
workflow_marked_places() - Retorna uma matriz com os nomes dos
lugares da marcação especificada.
workflow_has_marked_place() - Retorna truese a marcação do objeto
dado tiver o estado especificado.
23. Principais diferenças
Os fluxos de trabalho podem estar em mais de um lugar ao mesmo
tempo, enquanto as máquinas de estado não podem;
Os fluxos de trabalho geralmente não têm caminhos cíclicos no
gráfico de definição, mas são comuns em máquinas de estado;
Para aplicar uma transição, os fluxos de trabalho exigem que o
objeto esteja em todos os locais anteriores da transição, enquanto
as máquinas de estado exigem apenas que o objeto esteja, pelo
menos, em um desses locais
24. Eventos
workflow.leave : quando nosso pedido sairá do estado atual,
workflow.transition : quando a transição para o novo estado é
iniciada,
workflow.enter : quando o novo estado é definido
workflow.guard : este permite evitar que a transição solicitada
ocorra, você pode fazer isso chamando o seguinte método: $event->
setBlocked (true) ;