> For the complete documentation index, see [llms.txt](https://kb.stoque.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.stoque.com.br/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/o-que-sao-subprocessos-e-como-usa-los.md).

# Subprocesso

![](/files/avggKPzaYHr4H9BJg3WN)

Subprocesso é uma atividade cujos detalhes são representados por um outro processo, composto também por eventos, gateways, tarefas e até mesmo outros subprocessos.

## Casos de uso

Existem diversos casos de uso para subprocessos:

* Quando já existe um aplicativo de processo automatizado na organização e você quer reusá-lo;<br>
* Quando você quer organizar e isolar melhor seus aplicativos de processo;<br>
* Quando você precisa que um aplicativo de processo inicie diversos processos filhos em lotes (ver recurso avançado de [multi-instância](#multi-instancia));

## Como funcionam subprocessos

Esses detalhes são importantes para você compreender subprocessos:

* Um mesmo aplicativo de processo pode ser executado diretamente ou pode ser utilizado como subprocesso de outro aplicativo, inclusive ao mesmo tempo. Por exemplo, você pode ter publicado o aplicativo "Processo de compras" para ser aberto por usuários, e esse mesmo aplicativo ser configurado como subprocesso do aplicativo "Abertura de filiais";<br>

* Ao ser utilizado como um subprocesso, o [evento de inicio](/zeev/como-construir-processos/como-desenhar-processos/como-usar-eventos/evento-de-inicio.md) do subprocesso <mark style="color:red;">**não**</mark> será executado, passando a execução do processo diretamente para a segunda atividade ou elemento;<br>

* O solicitante de subprocesso será sempre o solicitante do processo pai. Utilizando uma [tarefa de regra de negócio](/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/o-que-e-atividade-de-regra-de-negocio.md), entretanto, você pode modificá-lo;<br>

* Ao abrir um subprocesso, <mark style="color:red;">ele possuirá um número de solicitação novo, único e exclusivo;</mark>

* No relatório de [acompanhamento da solicitação](/zeev/gestao-de-solicitacoes-em-andamento/monitoramento/como-acompanhar-o-passo-a-passo-de-uma-solicitacao.md), será possível navegar entre o passo do processo-pai e do subprocesso;

## Síncrono X assíncrono

Os subprocessos podem ser configurados como síncronos ou assíncronos.&#x20;

Se configurado como **síncrono**, quando o subprocesso for iniciado, o processo-pai será congelado e ficará assim até o fim do subprocesso. Quando o subprocesso finalizar, o processo-pai dará continuidade.

Se configurado como **assíncrono**, o processo-pai prosseguirá, independente do resultado ou status do subprocesso.  Nesse cenário, em algumas situações, é possível que o processo principal finalize e o subprocesso continue em andamento. Essa situação é perfeitamente normal. O relatório de andamento do processo-pai indicará que ele está finalizado, porém que o subprocesso está andamento.&#x20;

## Sincronização do formulário

Subprocessos possuem formulários próprios, independentes do processo-pai.

Os valores dos campos do formulário poderão ser sincronizados entre o processo-pai e os seus processos filhos. Para isso é acontecer é necessário:

* Indicar a necessidade de sincronização na configuração do elemento de subprocesso;
* Somente serão sincronizados os campos de formulários que possuírem os mesmos identificadores;

Imagine que o formulário do processo pai possui os campos cujos identificadores são `nomeCompleto`, `idade` e `telefoneComercial`.  E o subprocesso possui um formulário cujos identificadores de campos sejam `nomeCompleto`, `idade` e `telefoneResidencial`.&#x20;

Quando o subprocesso for criado, os valores dos campos `nomeCompleto` e `idade` serão copiados para o subprocesso, e o campo `telefoneResidencial` ficará em branco, por não encontrar correspondente no processo-pai.&#x20;

Caso, ao longo do subprocesso, o valor dos campos `nomeCompleto` e `idade`forem modificados, eles irão atualizar os valores dos respectivos campos do processo-pai quando o subprocesso finalizar.

{% embed url="<https://youtu.be/uASVCrB0nAY>" %}

## Multi-instância

O recurso de "multi-instância" de um subprocesso permite que um mesmo elemento de subprocesso em um fluxograma dê origem não a uma única instância de subprocesso, mas a diversas instâncias.

Digamos, por exemplo, que você possua um aplicativo de processo de melhoria contínua. Nesse processo, você precisa montar um plano de ação com "N" ações a serem realizadas por diferentes profissionais. Porém, você não tem como saber, de antemão, quantas ações terá ou quem serão os responsáveis.  Nesse cenário, você pode usar o recurso de subprocesso multi-instância para criar uma instância de subprocesso para cada ação que você precisa que seja executada.

### Como configurar multi-instância

* O formulário do processo-pai precisará ter uma [tabela multi-valorada](/zeev/como-construir-processos/como-criar-formularios/como-criar-tabelas-multivaloradas.md), para que você possa incluir "n" items iguais. No nosso exemplo acima, a tabela multi-valorada seria usada para incluir o plano de ação, e poderia ser composta pelos campos "Descrição da ação", "Responsável" e "Prazo";

* Os campos da tabela multi-valorada (no nosso exemplo, "Descrição da ação", "Responsável" e "Prazo") deverão estar configurados dentro do mesmo agrupamento (por exemplo, "Plano de ação");

* É necessário que o subprocesso esteja configurado para sincronizar valores de formulários, como vimos anteriormente;

* É necessário que você configure o subprocesso definindo na opção "multi-instância" o agrupamento que contém os campos da tabela (no nosso exemplo, "Plano de ação");

{% hint style="danger" %}
**Esse recurso permite criar, no máximo, 50 instâncias de subprocessos**
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=YhhqAOhLaHk>" %}
