Pular para o conteúdo principal

Operando via API REST

Este capítulo é para quando você precisa operar instâncias de código ou em automação — um sistema parceiro que completa uma tarefa por webhook, um job que dispara instâncias em lote, um pipeline que implanta uma definição. Há dois caminhos: chamar o KikwiflowEngine de dentro da própria aplicação, ou a API REST de gestão, para quem opera de fora.

Via KikwiflowEngine (dentro da própria aplicação)​

Quando quem opera a instância é a própria aplicação — um listener de evento assíncrono, um @Scheduled, um controller REST seu — injete KikwiflowEngine e chame direto, sem passar por HTTP:

// iniciar
kikwiflowEngine.startProcess()
.byKey("abertura-de-conta")
.withBusinessKey(cpf)
.withVariables(Map.of(
"cpf", new ProcessVariable("cpf", cpf),
"rendaDeclarada", new ProcessVariable("rendaDeclarada", renda)))
.execute();

// completar uma tarefa externa a partir de um callback de outro sistema
kikwiflowEngine.completeExternalTask(externalTaskId,
Map.of("decisao", new ProcessVariable("decisao", "APROVADA")),
IdentityContext.system());

// retentar um incidente aberto
kikwiflowEngine.retryIncident(incidentId, IdentityContext.system());

IdentityContext.system() é um atalho para chamadas internas sem um usuário/tenant real por trás (equivalente a rodar com papel SYSTEM_ADMIN, tenant GLOBAL). Em um endpoint autenticado por usuário, use o IdentityContext real resolvido para aquela requisição. completeExternalTask mescla as variáveis fornecidas e continua a execução de forma síncrona dentro da mesma chamada, até o próximo ponto de commitBefore ou o fim do processo.

Os demais métodos seguem o mesmo padrão: claim/unclaim de tarefas externas, setVariables/ unsetVariables de uma instância, deleteInstance e correlateMessage (entrega de um evento por chave de correlação — ver Event Catcher e Event Thrower).

Via API REST (de fora da aplicação)​

Com kikwi-management-rest-spring-boot-starter no classpath, a mesma superfície fica exposta via HTTP, sob kikwiflow.rest.base-path (padrão /kikwiflow/api/v1):

RecursoO que dá para fazerReferência
Definições de processoimplantar, buscar por id/key, listar, limpar cacheDefinições de Processo
Instânciasiniciar, consultar, snapshot, variáveis, encerrarInstâncias de Processo
Busca de instânciasfiltros por definição, chave de negócio, tenant, status, variáveis, datasBusca Avançada
Tarefas externasclaim, unclaim, complete, consultarTarefas Externas
Incidentesconsultar, retentarIncidentes
Correlação de eventosentregar um evento por chave (webhooks)Correlação de Eventos
Histórico e estatísticastimeline de uma instância; snapshot agregado e stream SSE por definiçãoHistórico, Estatísticas (Pulse)

Antes de expor a API, leia Convenções, Autenticação e Erros — ela cobre como a API resolve identidade e tenant e os casos de erro que ainda não seguem o envelope padrão.

Incidentes​

Um incidente é aberto quando uma tarefa esgota suas tentativas de retry, ou quando um erro de negócio não tem BOUNDARY_ERROR_HANDLER correspondente (ver Tratando Erros de Negócio). Retentar reativa a tarefa associada e marca o incidente como resolvido de forma atômica — só incidentes com status OPEN podem ser retentados. Não há operação de retry em lote: para retentar todos os incidentes de uma definição, liste-os e retente um a um.

Próximo passo​

A maior parte do comportamento operacional acima é regida por propriedades kikwiflow.* — veja Configuração Essencial para as que você provavelmente vai querer ajustar.