iGRPIGRP 3.0Documentation

Formulários — Studio IDE

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:

  1. Ligar o separador BPMN do projeto ao Process Studio.
  2. Gerar um passo por artefacto e desenhar o formulário.
  3. Escrever o handleComplete, que devolve as variáveis ao processo.
  4. 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.

Diálogo BPMN API Configuration com nome Demo Processos (local), API URL http://localhost:2575 e Base Path do process-studio-api
CampoExemploNotas
Configuration NameDemo Processos (local)Só para identificar a ligação
API URLhttp://localhost:2575Gateway do workspace (porta do nginx)
Base Path/gateway-api/<serviço>-process-studio-api/api/v1Rota do gateway para o process-studio-api; o nome do serviço é o registado no Eureka
Access Token—Opcional
Active ConfigurationligadoSó 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.

Separador BPMN do projeto registos com o projeto Registos selecionado e o processo Registo de Entidade v1 com 2 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.

Process Artifacts do Registo de Entidade: Pedido (Task_pedido, ui:form:pedido@1) e Qualificação (Task_qualificacao, ui:form:qualificacao@1) com Open Editor

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:

Diálogo Configure New Step com Descrição do Componente e Nome do Componente Pedido

O Studio cria dois ficheiros e o botão passa a Open Editor:

FicheiroConteúdo
.igrpstudio/process/<processKey>/<tarefa>.v<versão>.jsonDefinição do passo (editada pelo Studio)
src/app/(igrp)/(generated)/process/[...process]/(<processKey>)/<tarefa>.v<versão>.tsxComponente 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 Pedido no Page Builder com o título Pedido de registo e os campos Nome da entidade, Morada, NIF e Email
PassoCampos (nome → rótulo)
PedidonomeEntidade → Nome da entidade · morada → Morada · nif → NIF · email → Email
Qualificaçãoparecer → Parecer · decision → Decisão (Select)
Passo Qualificação com os campos Parecer e Decisão

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}).

Configuração de Associação do Form com o nome pedido e os campos nomeEntidade, morada, nif e email

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.

Painel do Select decision com as opções RECTIFICAR/Retificar, CONFIRMAR/Confirmar e REJEITAR/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).

Editor da função handleComplete com o código que lê os valores do formulário e os devolve como variáveis

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.

Separador Bundles do projeto registos com o bundle Process Management UI e o botão Instalar

O bundle adiciona os pacotes @igrp/platform-process-management-client-ts, -client-ui e -types e copia para src/app/(igrp)/(generated)/process/:

RotaPara quê
[...process]/page.tsx + layout.tsxExecuta 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.tsxFormulá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-management

Para 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': false

Uma 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.8

Executar 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:

Tarefa Pedido aberta na app registos, com o número REG-2026-22, Guardar, Concluir Tarefa, a barra Pedido/Qualificação e o formulário preenchido

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:

Tarefa Qualificação com o Pedido concluído na barra de passos, o parecer preenchido e a decisão Retificar

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.

How is this guide?

Última atualização: