iGRPIGRP 3.0Documentation

Modelar — Process Studio

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.

Dashboard de processos com o processo Registo de Entidade do projeto Registos, versão 1, publicado

Criar um projeto

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

Diálogo Criar um Novo Projeto com código REGISTOS, nome Registos e 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.

Diálogo de criação de processo com título Registo de Entidade, chave registo-entidade e projeto Registos

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.

Editor de Processo com o diagrama Início, Pedido, Qualificação, gateway decisão com o fluxo Retificar de volta ao Pedido, e Fim

O exemplo tem:

ElementoIDConfiguração
InícioStartEvent_1—
User Task PedidoTask_pedidoForm Key ui:form:pedido@1
User Task QualificaçãoTask_qualificacaoForm Key ui:form:qualificacao@1
Gateway exclusivo decisãoGateway_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:

Painel de propriedades da User Task Pedido, secção Forms, com Form key ui:form:pedido@1
FormatoExemploOnde vive o formulário
ui:form:<nome>@<versão>ui:form:pedido@1Passo 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@1Formulá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.

Separador XML com o BPMN do processo registo-entidade e as form keys activiti:formKey

Delegates e Variáveis

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

Separador Delegates e Variáveis com o igrpSendEmailDelegate, a sintaxe e os parâmetros

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

DelegateExpressãoDescrição
Webhook${igrpWebhookDelegate}Chamada HTTP a um endpoint externo
JSON Parser${igrpJsonParseDelegate}Parsing de JSON (raw ou Base64)
Email${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âmetroObrigatórioDescrição
webhookUrlSimURL base do endpoint
webhookMethodSimMétodo HTTP (GET, POST, PUT, DELETE)
webhookUrlPathNãoPath adicional a acrescentar ao URL
webhookQueryParamsNãoQuery parameters
webhookPayloadNãoCorpo do pedido
webhookPayloadHeaderNãoHeaders 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âmetroObrigatórioDescrição
jsonSimString JSON ou Base64
isBase64EncodedNãotrue se o JSON estiver codificado em Base64

igrpSendEmailDelegate

ParâmetroObrigatórioDescrição
emailToSimEndereço de destino
emailSubjectSimAssunto
emailBodySimCorpo do email
emailFromNãoRemetente

igrpMessageBrokerSenderDelegate

Publica os dados do processo num broker (Kafka/RabbitMQ).

ParâmetroObrigatórioDescrição
topicSimTó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âmetroObrigatórioDescrição
apiUrlSimURL da API. Suporta ${variavel} e $[ENV_VAR]
apiMethodNãoMétodo HTTP (default: GET)
apiPayloadNãoCorpo (POST/PUT)
jsonPathExpressionSimJSONPath para extrair o identificador do utilizador. Ex: $.data.email
priorityJsonPathExpressionNãoJSONPath para extrair a prioridade da tarefa
targetTaskKeySimID da User Task a atribuir (deve existir no BPMN)
assignmentModeNãoONE_TIME (default) ou ALWAYS
outputVariableNãoVariá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.

How is this guide?

Última atualização: