Históricos de Tarefas de Serviço Externo (Service Task) e Tarefas de Mensagens (Send Task e Receive Task) do Camunda
- Escrito por Marcio Junior Vieira
- Publicado em Tutoriais Camunda BPM
- Hits: 1464
O Camunda Community é uma excelente solução para automação de fluxos usando metodologia BPM (com suporte a notações BPMN, DMN e CMMN). O Camunda permite os usuários atuar com decisão e fluxo de trabalho, operar modelos implantados na produção e permitir que os usuários executem tarefas de fluxo de trabalho a eles atribuídas.A versão Community do Camunda é totalmente open Source e com uma boa documentação oficial e com suporte a Português do Brasil.
O Problema
Ao tentar consultar as tabelas tradicionais de banco de dados que registram tarefas do Camunda ou os serviços tradicionais de REST API do Camunda não conseguimos visualizar dados referentes a os tipos de tarefas externas (Service task) e tarefas de mensagens (Send Task e Receive Task), não conseguimos recuperar o histórico destes tipos de tarefas! Então como recuperar estes dados?
A Solução
A solução está em uma questão conceitual do Camunda, estes tipos de tarefas que fazem comunicação com o mundo externo ficam em localidades diferentes por não terem pessoas atribuídas e outras característica de uma tarefa atribuída. Mas sim estas informação são armazenadas se a auditoria do Camunda Default (FULL) estiver ativa.
Podemos recuperar estes dados pela API REST ou também pelo banco de dados.
Recuperando os dados pela API REST do Camunda
- A API REST do Camunda pode ser acessada em /engine-rest
- O serviço que devolve todos os históricos as tarefas externas ( Send Task) é o /engine-rest/history/external-task-log
- deve ser requisitado com o método HTTP POST
MÉTODO POST
http://localhost:8080/engine-rest/history/external-task-log - Sua resposta será similar a esta a segui , variando com a quantidade de tarefas já realizada:
[{
"id": "57030e51-072e-11eb-9053-02421a39bd81",
"timestamp": "2020-10-05T14:15:17.464-0300",
"removalTime": null,
"externalTaskId": "57030e50-072e-11eb-9053-02421a39bd81",
"topicName": "charge-card",
"workerId": null,
"priority": 0,
"retries": null,
"errorMessage": null,
"activityId": "Activity_SendTaskDocAction",
"activityInstanceId": "Activity_SendTaskDocAction:57030e4f-072e-11eb-9053-02421a39bd81",
"executionId": "5702e73e-072e-11eb-9053-02421a39bd81",
"processInstanceId": "41b0393b-072e-11eb-9053-02421a39bd81",
"processDefinitionId": "SendAndReceiveTask:1:3c64f01a-072e-11eb-9053-02421a39bd81",
"processDefinitionKey": "SendAndReceiveTask",
"tenantId": null,
"rootProcessInstanceId": "41b0393b-072e-11eb-9053-02421a39bd81",
"creationLog": true,
"failureLog": false,
"successLog": false,
"deletionLog": false
}] - Para recuperar acão de elementos do tipo Receive Task devemos consultar as Activiti Instances atraves do End point /history/activity-instance
MÉTODO: POST http://localhost:8080/engine-rest/history/activity-instance
- A resposta será similar a esta:
[{
"id": "9538f752-073d-11eb-9700-02421a39bd81",
"parentActivityInstanceId": "825eea7d-073d-11eb-9700-02421a39bd81",
"activityId": "Activity_ReceiveTask",
"activityName": "Recebe\nPlano Finalizado ",
"activityType": "receiveTask",
"processDefinitionKey": "SendAndReceiveTask",
"processDefinitionId": "SendAndReceiveTask:1:79a99b5c-073d-11eb-9700-02421a39bd81",
"processInstanceId": "825eea7d-073d-11eb-9700-02421a39bd81",
"executionId": "9538d040-073d-11eb-9700-02421a39bd81",
"taskId": null,
"calledProcessInstanceId": null,
"calledCaseInstanceId": null,
"assignee": null,
"startTime": "2020-10-05T16:04:24.289-0300",
"endTime": "2020-10-05T16:06:21.734-0300",
"durationInMillis": 117445,
"canceled": false,
"completeScope": false,
"tenantId": null,
"removalTime": null,
"rootProcessInstanceId": "825eea7d-073d-11eb-9700-02421a39bd81"
}]
- Conheça mais sobre estes endpoints de históricos
https://docs.camunda.org/manual/7.8/reference/rest/history/task/get-task-query/
https://docs.camunda.org/manual/7.8/reference/rest/history/external-task-log/get-external-task-log-query/
Recuperado os dados via banco de dados do Camunda
- As tabelas a seguir são relacionadas respectivamente na mesma ordem da apresentação dos endpoint da API REST acima.
- Tarefas como Service task pode ser encontradas na tabela act_hi_ext_task_log, e pode usar o campo topic_name_ como filtro , ele listará o topic informado na execução da tarefa externa (External task).
- Histórico dos Elementos Receive Task só podem ser encontrados na tabela act_hi_ext_actinst onde também outros tarefas estarão juntas.
O artigo foi executado e validado através da versão 7.13 do Camunda Community
Caso precise de treinamentos em Camunda acesse nossa grade em http://www.ambientelivre.com.br/treinamento/camunda/fundamental.html
Sobre a Ambiente Livre
A Ambiente Livre é especialista em Open Source e Free Software e tem uma divisão especialista em ECM e BPM. Fornece implantação, integração, suporte, consultoria e treinamento em ECM e BPM com as plataformas Alfresco , Activiti, Flowable e Camunda a mais de 10 anos.
Já capacitou centenas de empresas para trabalhar com Business Intelligence, ECM, BPM, CRM e Big Data e usa uma metodologia própria de ensino.
Conheça também as divisões de Business Intelligence, CRM e CMS e Big Data e Data Science.