> 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

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

![](https://3371003943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MD66pBdRalAQgnhNstG%2Fuploads%2FQvno9pxb8GbCWI5OQusv%2Fimage.png?alt=media\&token=31ddba7a-1242-4b2e-b870-debeadc6b4b4)

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>" %}

### Como visualizar e compartilhar mensagens e anexos entre processos

Uma das formas de manter a consistência de processos e subprocessos, se necessário, é o compartilhamento e a visualização de mensagens e anexos.

<figure><img src="https://3371003943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MD66pBdRalAQgnhNstG%2Fuploads%2FvmAsc2I7hJ6A8j8Wn5NN%2Fimage.png?alt=media&amp;token=47af48f3-5034-4ce1-80f9-61146734bb34" alt=""><figcaption></figcaption></figure>

Ao marcar os itens acima, temos duas opções:

**Visualizar mensagens de outros aplicativos:** quando é necessário, neste subprocesso, visualizar mensagens que vieram de outros aplicativos nesta cadeia;

**Compartilhar mensagens com outros aplicativos:** quando este subprocesso fornecerá mensagens para os outros aplicativos da cadeia.

{% hint style="warning" %}
Note que, para que a mensagem seja visualizada na cadeia, é necessário que, além de solicitar a visualização, esteja disponível o compartilhamento dessas mensagens.
{% endhint %}

<figure><img src="https://3371003943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MD66pBdRalAQgnhNstG%2Fuploads%2FAupdhftH8jmqvr6XSKQk%2Fimage.png?alt=media&amp;token=928673b0-458e-4934-927a-fd4adbd43fb8" alt=""><figcaption></figcaption></figure>

Aqui você está realizando a marcação para os anexos, com duas opções:

**Visualizar arquivos de outros aplicativos:** quando você deseja, neste subprocesso, visualizar arquivos que foram disponibilizados em outros aplicativos nesta cadeia;

**Compartilhar arquivos com outros aplicativos:** quando este subprocesso fornecerá seus arquivos/anexos para os outros aplicativos da cadeia.

{% hint style="warning" %}
Note que, para que o arquivo seja visualizado na cadeia, é necessário que, além de solicitar a visualização, esteja disponível para o compartilhamento.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET 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?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
