Criar um projeto e um processo, desenhar ou importar o BPMN, definir as Form Keys e publicar no Process Management.
O Process Studio é a aplicação web onde se modelam os processos em BPMN 2.0. Faz parte da stack de processos do workspace e abre em http://<slug>:2575/apps/igrp-process-studio. Quando um processo é publicado, a definição segue para o Process Management, que passa a poder iniciar instâncias.
Este guia usa um exemplo simples, Registo de Entidade: um pedido, uma qualificação e uma decisão que pode devolver o pedido para retificação.
Dashboard
A página inicial lista os processos com projeto, chave, versão, estado e data de publicação. Os botões Novo Projeto e Novo Processo ficam no canto superior direito; em cada linha, os ícones abrem o editor, editam os dados ou apagam o processo.

Criar um projeto
Um processo pertence sempre a um projeto. Em Novo Projeto define o Código, o Nome e, opcionalmente, a Descrição.

Código do projeto
É o código (REGISTOS) que o Studio IDE mostra quando se liga ao Process Studio para escolher o projeto. Usa um código curto e estável.
Criar um processo
Em Novo Processo define o Título, a Chave do processo (o identificador no runtime, por exemplo registo-entidade), uma descrição e o Projeto.

O processo fica em Rascunho até ser publicado.
Editor de Diagrama
O editor abre com três separadores: Editor de Diagrama, XML e Delegates e Variáveis. No canvas, a paleta de elementos BPMN fica à esquerda e o painel de propriedades à direita. A barra vertical junto ao painel tem, por esta ordem: mostrar/esconder o painel, descarregar o XML, descarregar SVG, descarregar PNG e carregar um diagrama (.bpmn). Por baixo ficam o zoom e Ajustar à Tela.

O exemplo tem:
| Elemento | ID | Configuração |
|---|---|---|
| Início | StartEvent_1 | — |
| User Task Pedido | Task_pedido | Form Key ui:form:pedido@1 |
| User Task Qualificação | Task_qualificacao | Form Key ui:form:qualificacao@1 |
| Gateway exclusivo decisão | Gateway_0mcbth4 | — |
| Fluxo Retificar (volta ao Pedido) | Flow_0vupp2u | ${decision == 'RECTIFICAR'} |
| Fluxo confirmar ou rejeitar (para o Fim) | Flow_06lggtn | ${decision == 'CONFIRMAR' || decision == 'REJEITAR'} |
As condições usam a variável decision, que vem do formulário da Qualificação (ver Formulários BPMN).
Depois de carregar um .bpmn, mexe no diagrama antes de guardar
Nesta versão, carregar um ficheiro com Upload Diagram mostra o diagrama mas não o marca como alterado: Guardar e Publicar enviariam o diagrama anterior e mudar de separador repõe-no. Depois do upload, desloca um elemento no canvas — isso dispara a gravação automática (2 s) com o diagrama novo.
Formulários em User Tasks
Cada User Task indica o formulário que a executa. Seleciona a tarefa, abre a secção Forms no painel de propriedades, escolhe o tipo Embedded or External Task Forms e preenche o Form key:

| Formato | Exemplo | Onde vive o formulário |
|---|---|---|
ui:form:<nome>@<versão> | ui:form:pedido@1 | Passo próprio do processo, gerado no Studio IDE em (igrp)/(generated)/process/[...process]/(<processKey>)/<nome>.v<versão>.tsx |
ui:shared:<página>@<versão> | ui:shared:default@1 | Formulário partilhado entre processos, em (igrp)/(generated)/process/shared/<página>.v<versão>.tsx |
Se o Form Key estiver vazio, o runtime usa ui:shared:default@1.
Guardar e publicar
- Guardar grava o rascunho. O editor também grava sozinho 2 segundos depois de cada alteração no canvas.
- Publicar envia o BPMN para o Process Management, que o valida, cria uma versão nova (
v1,v2…) e passa a poder iniciar instâncias dessa versão. O processo passa a Publicado no dashboard.
Versões são imutáveis
Uma versão publicada não muda. Para corrigir o processo, edita e publica de novo: as instâncias já iniciadas continuam na versão com que arrancaram.
Publicar e o applicationBase
O Process Management identifica a aplicação dona de cada processo pelo applicationBase. As imagens 0.2.0-beta do Process Management exigem esse campo no deploy, e o Process Studio dessa versão não o envia; nesse caso Publicar devolve Internal Server Error. A correção está no Process Management (applicationBase opcional no deploy); usa uma imagem que a inclua.
XML BPMN
O separador XML mostra o BPMN 2.0 gravado (só de leitura) e tem o botão Copiar XML. O Process Studio grava com o namespace activiti (o motor do Process Management); o editor converte de e para camunda ao abrir e guardar.

Delegates e Variáveis
O separador Delegates e Variáveis documenta os delegates disponíveis para Service Tasks.

Os delegates configuram-se numa Service Task, com Implementation Type Delegate Expression e a sintaxe ${<nome_do_delegate>}.
Os parâmetros de cada delegate são injectados como Field Injections na própria tarefa ou definidos como variáveis globais do processo (as globais sobrepõem-se às da tarefa). O resultado de cada Service Task fica numa variável <task-id>Data, acedida com dot-notation (testeData.nome) ou índice de array (testeData[0].email).
Delegates disponíveis
| Delegate | Expressão | Descrição |
|---|---|---|
| Webhook | ${igrpWebhookDelegate} | Chamada HTTP a um endpoint externo |
| JSON Parser | ${igrpJsonParseDelegate} | Parsing de JSON (raw ou Base64) |
${igrpSendEmailDelegate} | Envio de email | |
| Message Broker | ${igrpMessageBrokerSenderDelegate} | Publica dados do processo num broker (Kafka/RabbitMQ) |
| Process Webhook | ${igrpProcessWebhookDelegate} | Alternativa ao broker — envia dados via HTTP POST |
| User Assignment | ${igrpExternalUserAssignmentDelegate} | Atribui dinamicamente uma User Task com base numa API externa |
igrpWebhookDelegate
Executa um pedido HTTP a um endpoint externo.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
webhookUrl | Sim | URL base do endpoint |
webhookMethod | Sim | Método HTTP (GET, POST, PUT, DELETE) |
webhookUrlPath | Não | Path adicional a acrescentar ao URL |
webhookQueryParams | Não | Query parameters |
webhookPayload | Não | Corpo do pedido |
webhookPayloadHeader | Não | Headers HTTP (JSON) |
Autenticação automática
Se não forneceres headers, o delegate injeta automaticamente um token machine-to-machine para chamadas internas ao iGRP.
igrpJsonParseDelegate
Faz parsing de um JSON (raw ou Base64) e guarda o resultado em <task-id>Data.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
json | Sim | String JSON ou Base64 |
isBase64Encoded | Não | true se o JSON estiver codificado em Base64 |
igrpSendEmailDelegate
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
emailTo | Sim | Endereço de destino |
emailSubject | Sim | Assunto |
emailBody | Sim | Corpo do email |
emailFrom | Não | Remetente |
igrpMessageBrokerSenderDelegate
Publica os dados do processo num broker (Kafka/RabbitMQ).
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
topic | Sim | Tópico do broker |
Se não tiveres broker, usa ${igrpProcessWebhookDelegate} com os parâmetros url (obrigatório), path e headers.
igrpExternalUserAssignmentDelegate
Chama uma API externa, extrai um utilizador da resposta via JSONPath e cria uma regra de atribuição para a User Task alvo.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
apiUrl | Sim | URL da API. Suporta ${variavel} e $[ENV_VAR] |
apiMethod | Não | Método HTTP (default: GET) |
apiPayload | Não | Corpo (POST/PUT) |
jsonPathExpression | Sim | JSONPath para extrair o identificador do utilizador. Ex: $.data.email |
priorityJsonPathExpression | Não | JSONPath para extrair a prioridade da tarefa |
targetTaskKey | Sim | ID da User Task a atribuir (deve existir no BPMN) |
assignmentMode | Não | ONE_TIME (default) ou ALWAYS |
outputVariable | Não | Variável onde guardar o identificador extraído |
Usa $[NOME_VAR] nos parâmetros para referenciar variáveis de ambiente (ex: $[BACKEND_URL]/api/v1/users).
Próximo passo
Com o processo publicado, desenha os formulários das User Tasks no Studio IDE e depois opera as instâncias no Process Management.
Última atualização:
