Fila de Aprovação: o que espera por você, num lugar só.
Esta fila roda no app de exemplo, publicado no Teste Online. São quatro vendas esperando decisão, cada uma com a etapa do fluxo, o prazo e a data em que entrou na fila.
Quatro vendas esperando aprovação
Cada linha é uma tarefa aberta. Ela mostra o registro que pediu aprovação, a etapa em que está, o fluxo de origem, o prazo e a data de entrada. Você só vê o que é seu, pelo seu perfil ou porque a tarefa foi atribuída a você.

A decisão acontece no próprio cadastro
Ao abrir uma pendência, você cai no mesmo formulário do cadastro, agora em modo de tarefa. Os botões passam a ser as saídas do fluxo: Aprovar, Devolver e Rejeitar. Se a etapa pedir, o comentário vira obrigatório.
{{-- O MESMO form do cadastro ganha os botões de decisão --}}@if($that->wfTaskMode)<mad-form-section title="Decisão" icon="message-square"><mad-textarea-field name="wfComment" label="Comentário da decisão" rows="2" /></mad-form-section>@endif<mad-form-actions>@foreach($that->wfOutcomes as $key => $meta)<button class="mad-btn mad-btn-{{ $meta['intent'] }}">{{ $meta['label'] }}</button>@endforeach</mad-form-actions> Você desenha o fluxo, não programa
Etapas, quem aprova, prazos e caminhos por condição ficam no editor de workflow. A fila e os botões de decisão saem desse desenho. O seu controller não ganha nenhuma linha de código de fluxo.
Quando usar a fila de aprovação
Use a fila quando uma decisão precisa passar por alguém antes de seguir. Cada pessoa vê o que espera por ela, com prazo, e a decisão fica registrada.
- Venda com desconto. A venda para na aprovação comercial antes do faturamento.
- Análise de crédito. Uma etapa só do financeiro, com prazo e os atrasos em destaque.
- Pedido de compra. Um caminho por condição manda certas compras para uma etapa a mais.
- Férias e reembolsos no RH. O gestor aprova, devolve ou rejeita, com comentário.
- Contrato com duas áreas. Jurídico e financeiro decidem ao mesmo tempo, em ramos paralelos.
Se basta mudar o status arrastando um card, sem prazo nem responsável, o kanban resolve. Para dividir um cadastro longo em partes, use o wizard: lá as etapas são do formulário, não de aprovação. E os perfis que recebem as tarefas você define em permissões do sistema.
O que você configura
A fila sai do desenho do fluxo. É nele que você decide:
- Quem decide
- Cada etapa vai para um perfil ou para uma pessoa, e a tarefa aparece na fila de quem foi escolhido.
- Prazo
- Cada tarefa tem o seu prazo, e as atrasadas ficam em destaque.
- Saídas da etapa
- As decisões possíveis, como Aprovar, Devolver e Rejeitar. Cada uma vira um botão no formulário.
- Comentário obrigatório
- Conforme a decisão, o comentário passa a ser exigido. Uma rejeição pode pedir o motivo.
- Caminhos por condição
- O fluxo segue por caminhos diferentes, conforme uma condição que você define.
- Ramos em paralelo
- Duas etapas andam ao mesmo tempo, cada uma com quem decide nela.
O que vai para o projeto Laravel
A decisão acontece no formulário do cadastro: uma classe em app/Control e a view com <mad-form>. O fluxo conversa com ele por algumas propriedades:
- O formulário sabe quando é tarefa. A propriedade
wfTaskModediz ao Blade quando mostrar a seção de decisão. - Os botões vêm do fluxo. A lista
wfOutcomestraz cada saída com rótulo e estilo. Mudou o fluxo, mudam os botões, sem mexer no Blade. - O comentário é um campo comum. É um
<mad-textarea-field>chamadowfComment, com rótulo e altura ajustáveis no Blade. - Ação própria vira permissão. Num botão de aprovação fora do fluxo, o atributo
#[MadPermission('Aprovar orçamento')]no método cria uma permissão com esse nome na tela de Perfis.
Como toda tela do MadBuilder, esses arquivos abrem no seu editor, vão para o seu Git e aceitam código à mão em blocos protegidos, que continuam lá quando a tela é gerada de novo. Veja como o código é gerado.
Perguntas sobre a fila de aprovação
Quem vê cada tarefa da fila de aprovação?
Quem é do perfil da etapa ou a pessoa a quem a tarefa foi atribuída. Cada um vê só o que é seu.
Dá pra devolver em vez de rejeitar?
Dá. As saídas da etapa viram botões no formulário, como Aprovar, Devolver e Rejeitar. A etapa ainda pode exigir um comentário conforme a decisão.
Fica registrado quem aprovou?
Fica. O histórico guarda quem decidiu, quando e qual foi a decisão.
E mais
Veja também o Wizard ou os tipos de página.
Crie a conta, monte uma tela, baixe o projeto.
Sem demo agendada e sem call de descoberta. Se o Laravel que sair não passar na revisão do seu time, você perdeu uma tarde.
- Crie a contaBeta aberto, sem cartão.
- Monte uma telaNo visual, no código ou pedindo à IA.
- Baixe o .zipUm projeto Laravel que roda onde você quiser.