Exemplos Subprocessos

Prev Next

Neste artigo, vamos guiá-lo através de um passo a passo detalhado, mostrando como você pode implementar um fluxo com subprocessos no OmniSiga.

Vamos criar um fluxo para receber e processar pedidos de uma pizzaria. O funcionamento do fluxo será o seguinte:

  • O cliente informa os dados do pedido: sabor, endereço e pagamento;
  • Cada setor recebe os dados do pedido separadamente e os confirma;
  • Após todos os dados serem confirmados, a entrega poderá ser realizada.

image.png

Funcionamento

Para atender o funcionamento proposto iremos criar 2 fluxos de atendimento:

  • O primeiro fluxo (processo "pai") recebe os dados do pedido, dispara os subprocessos e aguarda a confirmação dos dados.
  • Os demais fluxos (subprocessos "filhos") receberão os dados separadamente e poderão ser finalizados em qualquer ordem. Ao final de cada subprocesso é enviado o sinal ao fluxo "pai".
  • Por fim ao receber todos os sinais dos subprocessos "filhos" o fluxo irá continuar até o passo final que é disparar um último subprocesso com os dados da entrega.

Montagem do fluxo "pai"

Para receber os dados, utilizaremos a caixa de "coletar dados". Dentro de cada caixa é criada uma variável onde ficará armazenado o dado solicitado. Para este exemplo criamos 3 caixas (sabor,local e pagar).
image.png

Para disparar os subprocessos, utilizaremos a caixa de "criar subprocesso". Neste exemplo criaremos um subprocesso para cada uma das variáveis que recebemos. Durante a criação do subprocesso, adicionaremos uma nova variável (tipo) para identificar qual processo estamos iniciando. No campo "Variáveis de entrada" enviaremos o dado recebido e também a identificação do dado em formato JSON.
Ex.:
image.png

Finalmente após disparar os subprocessos iremos utilizar a caixa de "aguardar sinal". Neste passo aguardaremos os sinais que virão dos subprocessos e após receber todos o fluxo irá prosseguir ao próximo passo que é criar o último subprocesso com os dados da entrega.
image.png

Montagem do fluxo "filho"

Para criar os subprocessos, configuramos um fluxo que consegue identificar os dados recebidos do fluxo "pai" e cria um ticket de atendimento do tipo "backoffice". Após a finalização do atendimento deste atendimento backoffice o sinal é disparado de volta ao fluxo "pai".
image.png

Para identificar o "tipo" de dado recebido, utilizamos a caixa de "decisão" que encaminha o subprocesso de acordo com o dado recebido.
Ex.:
image.png

Caixa de decisão

Neste exemplo a lógica aplicada na decisão é: "Se a variável "tipo" é igual a "estoque" vai para a caixa "confirma estoque".

Depois de identificar o dado recebido o subprocesso é enviado à criação de um ticket de atendimento humano do tipo "backoffice".
Ex.:
image.png

Aplicamos a configuração que ao finalizar o atendimento um sinal é disparado ao fluxo "pai". Que por sua vez poderá prosseguir ao passo final que é criar o subprocesso da entrega.
image.png

Neste ultimo subprocesso, estamos enviando todas as variáveis disponíveis para que a entrega seja feita.
Ex.:
image.png

A entrega é finalizada e também todo o fluxo quando este subprocesso for finalizado (Finaliza atendimento).


Conclusão

Resumo

Dessa forma conseguimos criar um fluxo que cria subprocessos os quais podem ser finalizados em qualquer ordem ou sequência. Ao receber o sinal que os subprocessos foram finalizados, o processo "pai" pode seguir para os passos seguintes.