Ligar o Studio IDE ao Process Studio, gerar os passos das User Tasks, desenhar os formulários, enviar as variáveis ao processo e instalar o runtime de processos na app.
Depois de publicado no Process Studio, cada User Task com Form Key ui:form:* passa a ser um artefacto do processo. No Studio IDE esses artefactos viram passos (steps): componentes React gerados no teu projeto Next.js, desenhados no Page Builder como qualquer página. Em runtime, o Process Management abre o passo certo para cada tarefa.
O fluxo tem quatro partes:
- Ligar o separador BPMN do projeto ao Process Studio.
- Gerar um passo por artefacto e desenhar o formulário.
- Escrever o
handleComplete, que devolve as variáveis ao processo. - Instalar o bundle Process Management UI, que traz as páginas de runtime.
O exemplo continua o Registo de Entidade, num projeto Next.js chamado registos.
Ligar o Studio IDE ao Process Studio
No projeto, abre o separador BPMN e clica em API → Add. A configuração aponta para o API do Process Studio, através do gateway do workspace.

| Campo | Exemplo | Notas |
|---|---|---|
| Configuration Name | Demo Processos (local) | Só para identificar a ligação |
| API URL | http://localhost:2575 | Gateway do workspace (porta do nginx) |
| Base Path | /gateway-api/<serviço>-process-studio-api/api/v1 | Rota do gateway para o process-studio-api; o nome do serviço é o registado no Eureka |
| Access Token | — | Opcional |
| Active Configuration | ligado | Só uma ligação fica ativa; é usada em todas as vistas BPMN do Studio |
Clica em Test Connection e depois em Save.
Usa um host que o teu sistema resolve
O teste de ligação corre no processo principal do Studio (Node), não no browser. Se o workspace usa um host como http://<slug>:2575, ele tem de estar no /etc/hosts; caso contrário usa http://localhost:2575.
Escolher o processo
Em Select Project escolhe o projeto do Process Studio (Registos · REGISTOS). A lista mostra só os processos publicados, com a versão e o número de artefactos.

Clica no processo para ver os Process Artifacts: um por cada User Task com ui:form:*, com o ID da tarefa, a versão e a Form Key.

Só formulários ui:form aparecem
Tarefas com ui:shared:* usam o formulário partilhado process/shared/<página>.v<versão>.tsx (o bundle instala o default.v1.tsx); não aparecem nesta lista.
Gerar o passo
Num artefacto novo o botão diz Generate Step. Ao clicar, confirma a descrição e o nome do componente:

O Studio cria dois ficheiros e o botão passa a Open Editor:
| Ficheiro | Conteúdo |
|---|---|
.igrpstudio/process/<processKey>/<tarefa>.v<versão>.json | Definição do passo (editada pelo Studio) |
src/app/(igrp)/(generated)/process/[...process]/(<processKey>)/<tarefa>.v<versão>.tsx | Componente gerado — não editar à mão |
No exemplo: (registo-entidade)/pedido.v1.tsx e (registo-entidade)/qualificacao.v1.tsx.
Desenhar o formulário
Open Editor abre o passo no Page Builder. Começa por arrastar um Form (em Contentores): traz um Headline e uma Grid. Depois arrasta os campos para a grid e configura cada um na roda dentada da barra do componente — o nome (primeiro campo do painel) é a chave do valor no formulário, e é esse nome que chega ao processo como variável.

| Passo | Campos (nome → rótulo) |
|---|---|
| Pedido | nomeEntidade → Nome da entidade · morada → Morada · nif → NIF · email → Email |
| Qualificação | parecer → Parecer · decision → Decisão (Select) |

Associar o Form a um esquema (obrigatório)
Seleciona o Form (pela margem) e abre Binding Config na barra do componente. Em New, com Definição → Auto, o Studio propõe um esquema com os campos que já estão no Form: dá-lhe um nome (pedido, qualificacao) e marca os obrigatórios. Guardar alterações gera o esquema zod e liga-o ao Form (schema={pedido}).

Sem esquema o passo não abre
O IGRPForm valida com zod e exige schema. Um Form sem Binding Config é gerado sem schema e, em runtime, a tarefa mostra An error occurred in this section (Cannot use 'in' operator to search for '_zod' in undefined).
O Select Decisão tem as opções que o gateway espera: RECTIFICAR, CONFIRMAR e REJEITAR.

Opções estáticas do Select
Nesta versão, as opções escritas na tabela Options do Select não chegam ao código gerado: o estado select<nome>Options nasce vazio. Até à correção, preenche o estado com as opções (por exemplo no defaultValue do estado em .igrpstudio/process/<processKey>/<tarefa>.v<versão>.json) e confirma no separador Code que o useState tem a lista.
Devolver as variáveis ao processo
Cada passo gerado regista dois métodos no runtime: saveStep (guardar sem concluir) e completeStep (concluir a tarefa). Eles chamam as funções handleSave e handleComplete, que se editam em Código Personalizado → Functions (lápis).

O handleComplete lê os valores do Form e devolve-os como variáveis:
const data = formform1Ref.current?.getValues();
const variables = data
? Object.entries(data).map(([key, value]) => ({
name: key,
value: value as string,
}))
: [];
return {
success: true,
variables,
forms: undefined,
};Ao concluir a Qualificação, a variável decision fica no processo e o gateway escolhe o caminho: RECTIFICAR volta ao Pedido, CONFIRMAR ou REJEITAR terminam.
As variáveis ficam disponíveis em todos os passos seguintes:
- Gateways — nas condições (
${decision == 'RECTIFICAR'}). - Service Tasks — como parâmetros dos delegates.
- Outros passos — em
config.variables, para pré-preencher ou mostrar dados de passos anteriores.
Grava com Salvar para regenerar o .tsx.
Instalar o runtime de processos
Os passos são só componentes; quem os abre é a página process/[...process] da app. Essa página vem no bundle Process Management UI: no projeto, separador Bundles → Discover → Process Management UI → Instalar.

O bundle adiciona os pacotes @igrp/platform-process-management-client-ts, -client-ui e -types e copia para src/app/(igrp)/(generated)/process/:
| Rota | Para quê |
|---|---|
[...process]/page.tsx + layout.tsx | Executa a tarefa: /process/<processKey>/<instância>/<tarefa>/<id> — escolhe o passo pela Form Key |
view/[...process]/ | Consulta só de leitura de uma instância |
resumo/[processInstanceId]/ | Resumo depois de concluir |
shared/default.v1.tsx | Formulário de ui:shared:default@1 |
A app precisa de saber onde está o API do Process Management:
# Rota do gateway para o process-management-api (sem /api/v1: os recursos ficam na raiz)
PROCESS_MANAGEMENT_CLIENT_BASE_URL=http://<slug>:2575/gateway-api/<serviço>-process-management-api
# Para onde volta o botão "Voltar" depois de concluir (Minhas Tarefas do Process Management)
IGRP_APP_PAGE_TASK=http://<slug>:2575/apps/igrp-process-managementPara avisar quem trata a etapa seguinte (IN_APP), a app precisa também do acesso ao Notification Service — ver Notificações de tarefas.
pnpm 11 e scripts de build ignorados
Com pnpm 11, pnpm add termina com erro (ERR_PNPM_IGNORED_BUILDS) quando há dependências com scripts de build por aprovar, e o Studio dá a instalação do bundle como falhada. Declara-as no pnpm-workspace.yaml do projeto antes de instalar:
allowBuilds:
'@parcel/watcher': false
'@swc/core': falseUma só versão do Design System
O @igrp/platform-process-management-client-ui 0.1.0-beta.63 depende do Design System 0.2.0-beta.3, e o template usa a 0.2.0-beta.8. Com as duas versões instaladas a página da tarefa falha com Tooltip must be used within TooltipProvider. Força uma só versão no pnpm-workspace.yaml e reinstala do zero (apaga node_modules e pnpm-lock.yaml):
overrides:
'@igrp/igrp-framework-react-design-system': 0.2.0-beta.8Executar a tarefa
Quando o Process Management abre uma tarefa, a app mostra o cabeçalho do processo (número da instância, Guardar e Concluir Tarefa), a barra de passos e o formulário do passo atual:

Guardar chama saveStep; Concluir Tarefa chama completeStep — o teu handleComplete — e envia as variáveis. Na Qualificação, a decisão escolhida segue o caminho do gateway:

Com Retificar, o Pedido volta a ficar ativo com os valores anteriores; com Confirmar ou Rejeitar, a instância termina. As variáveis ficam visíveis no detalhe da instância.
Próximo passo
Com os passos gerados e o runtime instalado, associa o processo a uma área cuja Aplicação seja esta app e inicia instâncias no Process Management.
Última atualização:
