SlideShare uma empresa Scribd logo
1 de 29
Symfony Workflow
O componente de fluxo de trabalho
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
O que é o Symfony
Workflow
Fornece ferramentas para gerenciar um fluxo de
trabalho ou uma máquina de estados
Criando um workflow
Instalando Symfony
Workflow
composer require workflow
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
Configuração do Workflow
Verificando e aplicando
transações
Workflow::can
Workflow::apply
Workflow::getEnabledTransitions
Verificando e aplicando
transações
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
Guard
Bloqueio de transações
A execução do Workflow pode ser controlada pela
execução de lógica personalizada
Bloqueio de transações
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.
Workflow no Twig
Percorrendo transações
Verificando transações
Marking store
O Marking store controla o local onde o assunto
está dentro do fluxo de trabalho
Marking store
Por padrão, o Marking store manipulará a
propriedade ‘marking’
$var->marking
Máquinas de estado
Uma máquina de estado é um subconjunto de um
fluxo de trabalho e sua finalidade é manter um
estado do seu modelo
Máquinas de estado
Máquinas de estado
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
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) ;
https://symfony-workflow-demo.herokuapp.com
Vamos ver na prática
Contatos
camilafernandesdev@gmail.com
@kafernandesdev
Symfony
Telegram: https://t.me/SymfonyBrasil
Twiter: @SymfonyBrasil
Slides da palestra
Avaliação
Obrigada

Mais conteúdo relacionado

Semelhante a Symfony workflow - Symfony Live Brasil 2019

T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)Carlos Santos
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
 
Workflow - Campo complementar com preenchimento obrigatório
Workflow - Campo complementar com preenchimento obrigatórioWorkflow - Campo complementar com preenchimento obrigatório
Workflow - Campo complementar com preenchimento obrigatórioTOTVS SA
 
Mule esb teste parte 2
Mule esb teste   parte 2Mule esb teste   parte 2
Mule esb teste parte 2Jeison Barros
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptRaphael Donaire Albino
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
Angular + Redux (ngRx)
Angular + Redux (ngRx)Angular + Redux (ngRx)
Angular + Redux (ngRx)Loiane Groner
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoMaria Alice Jovinski
 

Semelhante a Symfony workflow - Symfony Live Brasil 2019 (20)

T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
Workflow - Campo complementar com preenchimento obrigatório
Workflow - Campo complementar com preenchimento obrigatórioWorkflow - Campo complementar com preenchimento obrigatório
Workflow - Campo complementar com preenchimento obrigatório
 
Mule esb teste parte 2
Mule esb teste   parte 2Mule esb teste   parte 2
Mule esb teste parte 2
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
 
Zope
ZopeZope
Zope
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Curso java script
Curso java scriptCurso java script
Curso java script
 
Aula2
Aula2Aula2
Aula2
 
Programação de robo
Programação de roboProgramação de robo
Programação de robo
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Bpmn portuguese
Bpmn portugueseBpmn portuguese
Bpmn portuguese
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
Angular + Redux (ngRx)
Angular + Redux (ngRx)Angular + Redux (ngRx)
Angular + Redux (ngRx)
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Aula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniaoAula diagrama de atividade 3º periodo uniao
Aula diagrama de atividade 3º periodo uniao
 

Mais de Camila Fernandes

Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4Camila Fernandes
 
Desvendando o Symfony 4 - Além da teoria
Desvendando o Symfony 4 - Além da teoriaDesvendando o Symfony 4 - Além da teoria
Desvendando o Symfony 4 - Além da teoriaCamila Fernandes
 
Desvendando o Symfony 4 - Webinar Symfony Brasil
Desvendando o Symfony 4 - Webinar Symfony BrasilDesvendando o Symfony 4 - Webinar Symfony Brasil
Desvendando o Symfony 4 - Webinar Symfony BrasilCamila Fernandes
 

Mais de Camila Fernandes (6)

Api platform
Api platformApi platform
Api platform
 
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4Implementando rotinas assíncronas com RabbitMQ e Symfony 4
Implementando rotinas assíncronas com RabbitMQ e Symfony 4
 
Desvendando o Symfony 4 - Além da teoria
Desvendando o Symfony 4 - Além da teoriaDesvendando o Symfony 4 - Além da teoria
Desvendando o Symfony 4 - Além da teoria
 
Desvendando o Symfony 4 - Webinar Symfony Brasil
Desvendando o Symfony 4 - Webinar Symfony BrasilDesvendando o Symfony 4 - Webinar Symfony Brasil
Desvendando o Symfony 4 - Webinar Symfony Brasil
 
Symfony, por quê usar?
Symfony, por quê usar?Symfony, por quê usar?
Symfony, por quê usar?
 
API Restfull com Laravel
API Restfull com LaravelAPI Restfull com Laravel
API Restfull com Laravel
 

Symfony workflow - Symfony Live Brasil 2019