O componente Atividade de serviço representa um ponto do processo onde será feita uma consulta aos dados de um serviço externo repassando esses dados para o processo.
A principal característica desse componente é sua capacidade de automatizar a execução de tarefas, facilitando a integração com sistemas externos e promovendo a eficiência do processo.
Ao configurar esse componente, é necessário selecionar um serviço já cadastrado na plataforma e editar um script JavaScript que fará o acesso aos métodos e dados desse serviço.
Os serviços são cadastrados no recurso Serviços do Painel de controle. |
Com o uso das APIs hAPI e um formulário, é possível passar os dados obtidos na consulta do serviço para o processo.
Uma atividade de serviço pode ter apenas um fluxo de saída e deve ter um evento intermediário de captura de erro para onde a solicitação será enviada se ocorrer alguma inconsistência na execução do script.
A etapa posterior à captura de erro não é atribuída automaticamente a quem enviou a solicitação para a etapa correspondente à atividade de serviço. Por isso, é importante definir quem será a pessoa responsável pela etapa de tratamento do erro. Se não for definido um responsável, a etapa é enviada automaticamente para a primeira pessoa encontrada na lista de pessoas com cadastro ativo na plataforma em ordem alfabética, mesmo que essa pessoa não tenha nenhuma participação ou envolvimento no processo em questão. |
Esse componente permite utilizar dois tipos de execução da consulta aos dados do serviço externo: a execução Automatizada e a execução Imediata, que são detalhadas a seguir.

Desta forma, quando a última etapa de aprovação for concluída, a solicitação seguirá para uma atividade de serviço que, utilizando as APIs da plataforma, criará a pasta no recurso Documentos com base nas informações fornecidas e nas permissões de acesso definidas no formulário, garantindo que a pasta será única para cada contrato. Um exemplo de código que poderia ser utilizado como script na atividade de serviço é:
|
A execução automatizada determina que a execução do script será feita de forma assíncrona e sem a necessidade de uma interação manual de uma pessoa. Nesse tipo de execução, é possível definir o número de tentativas de execução e uma mensagem de sucesso que será exibida quando a execução for concluída sem inconsistências.
Quando a solicitação chega em uma atividade de serviço com execução automatizada, ela fica parada nesse ponto até que o scritp seja executado com sucesso ou até que ele seja executado o número de vezes definido como tentativas de execução.
Se o script for executado com sucesso, a atividade de serviço é considerada concluída e a solicitação segue o seu fluxo de saída padrão. Porém, se o número de tentativas for atingido sem que haja uma execução do script com sucesso, a solicitação é movimentada para o evento intermediário de captura de erro que, por sua vez, movimentará a solicitação para o fluxo correspondente à etapa de tratamento do erro.
Em atividades de serviço com a forma de execução automatizada, é obrigatório o uso do evento intermediário de captura de erro anexado a ela, bem como um fluxo de saída deste evento, para permitir que o processo seja desviado quando o script de integração não for executado com sucesso em nenhuma das tentativas feitas.
O script da próxima execução – depois de uma execução com inconsistência – pode receber a quantidade de tentativas de execução e a mensagem da última execução como parâmetros, podendo ser utilizados dentro do script. Dessa forma, o script ficaria conforme o exemplo abaixo:
function servicetask9(attempt, message) {
log.info("Exemplo servicetask");
var a = hAPI.getCardValue("campo_no_formulario");
if (a == "1") {
return true;
} else {
throw "Exemplo de Erro";
}
} |
Tanto a mensagem de sucesso quanto as mensagens de inconsistências são salvas no histórico da solicitação como complementos, podendo ser vistas por quem tiver acesso à solicitação.
A execução automatizada deve ser utilizada quando a execução não necessita de um retorno imediato sobre a operação ter sido ou não executada com êxito. Essa execução é mais indicada para integração com serviços que podem ficar indisponíveis ou externos e que, necessariamente, devem ser assíncronos, fornecendo um fluxo de contingência quando a integração não for concluída com sucesso em nenhuma tentativa por qualquer motivo.
O fluxo de contingência é criado anexando um evento intermediário de captura de erro à atividade de serviço (o evento deve ser colocado em cima da atividade). Esse fluxo de saída será utilizando quando todas as tentativas de integração falharem.
A execução imediata determina que a execução do script será feita de forma síncrona, logo depois do evento afterStateEntry do processo em questão, ou seja, será executado no momento em que a solicitação chegar na atividade de serviço.
Quando o script for executado com sucesso, a solicitação é enviada imediatamente da atividade de serviço para a próxima etapa, dando continuidade ao fluxo de saída padrão. Porém, se ocorrer alguma inconsistência, esta forma de execução apenas retornará a inconsistência encontrada, mantendo a solicitação parada até que uma pessoa interaja na solicitação para averiguar e corrigir as inconsistências que ocorreram.
Esse é um exemplo de código para iniciar a integração com o serviço configurado no componente:
try {
var Service = ServiceManager.getService('rm');
var serviceHelper = Service.getBean();
var serviceLocator = serviceHelper.instantiate('classe.locator');
} catch(erro) {
log.error(erro);
} |
A execução imediata deve ser utilizada quando a execução necessita de um retorno imediato sobre a operação para que o processo possa seguir adiante.
Atualmente, o tipo de execução imediata não é muito recomendado por ter seu desempenho reduzido. |
No contexto do componente Atividade de serviço, os headers (cabeçalhos) representam informações adicionais ou metadados que são enviados junto com a requisição de um serviço. Eles são usados para fornecer contexto ou parâmetros extras que o serviço ou a operação que está sendo chamada pode precisar para processar a requisição.
Os headers são frequentemente usados em chamadas de APIs REST ou SOAP e permitem adicionar informações cruciais para a comunicação entre sistemas. Cada chave/valor tem um propósito específico e a definição correta desses headers pode ser fundamental para o sucesso da integração com o serviço. Eles permitem personalizar ou configurar as requisições e, muitas vezes, podem ser obrigatórios para que o serviço funcione corretamente.
Esses headers podem ser usados para várias finalidades, dependendo do tipo de serviço e da operação. Alguns exemplos comuns de headers são:
Autenticação e autorização: pode ser um token de autenticação, uma chave de API ou credenciais de um usuário.
Chave: Valor: |
Informações de rastreio: dados sobre a requisição que podem ser usados para monitoramento ou rastreamento da chamada do serviço.
Chave: Valor: |
Informações de contexto: dados que definem o contexto da requisição, tais como o idioma, a localidade ou a versão da API.
Chave: Valor: |
Formato dos dados: definição sobre como os dados devem ser interpretados ou enviados, como o tipo de conteúdo (Content-Type) ou a versão da API.
Chave: Valor: |
No contexto do componente Atividade de serviço, os parâmetros são valores ou variáveis que o método/operação precisa receber para funcionar corretamente. Cada método/operação de um serviço geralmente tem uma lista de parâmetros que precisam ser fornecidos para que a execução da ação seja bem sucedida. Sendo assim, o objetivo de configurar esses parâmetros é fornecer as informações necessárias para que o método/operação seja executado.
Esses parâmetros podem ser de diversos tipos, como números, textos, datas ou até mesmo objetos, que são uma estrutura de dados mais complexa.
Nome: E-mail: Senha: |
ID do cliente: Itens do pedido: Valor total: |
Além de fornecer os dados essenciais para a execução do método/operação, outros objetivos da configuração dos parâmetros podem envolver:
a definição do contexto da execução: os parâmetros podem determinar o contexto no qual a operação será executada.
|
a comunicação eficiente entre sistemas: quando diferentes sistemas estão interagindo, é essencial que os parâmetros estejam corretamente configurados para que a comunicação e o entendimento entre eles se estabeleça corretamente.
|
o mapeamento de dados: permite mapear valores provenientes de outras etapas do processo.
|
Por isso, a configuração dos parâmetros do método/operação é essencial para a correta execução da ação e comunicação entre os sistemas envolvidos.
No contexto do componente Atividade de serviço, o retorno são os dados que a operação retorna depois de ser executada. Ao chamar um método/operação dentro de uma atividade de serviço, em muitos casos, a operação não só executa uma ação, mas também retorna um ou mais valores que podem ser usados em outras partes do processo. Esse retorno pode ser uma resposta simples – como um código de status ou uma mensagem – ou dados mais complexos – como um objeto JSON, uma lista ou um valor calculado.
Quando o método/operação é chamado, ele processa os dados de entrada, que são os parâmetros. Durante sua execução, o método/operação pode realizar cálculos, consultas a um banco de dados ou algum outro processamento de dados. Depois de processar os parâmetros e realizar suas funções internas, o serviço gera um retorno. Esse retorno pode ser algo simples – como um código de sucesso – ou pode ser um conjunto de dados mais complexo – como o resultado de uma busca ou a confirmação de que uma ação foi realizada.
O retorno do serviço pode ser utilizado de várias formas no processo:
Alguns exemplos de retorno de uma operação são:
criação de um registro:
Retorno da execução: |
resposta de sucesso ou falha:
Retorno da execução: |
dados complexos:
Retorno da execução: |
valor calculado:
Retorno da execução: |
Dessa forma, o retorno de uma operação é essencial para capturar os resultados de um serviço e usá-los de maneira eficaz dentro do fluxo do processo. Ele pode ser utilizado para tomar decisões, realizar ações subsequentes ou simplesmente para fornecer informações úteis para a continuação do processo.
01. No diagrama do processo, clique no componente Atividade de serviço
que deseja configurar com um serviço do tipo Rest.
As configurações disponíveis são exibidas na lateral direita. |
02. Na aba Geral, defina as informações gerais para o componente que representa a execução de um serviço externo.
Título
Selecione o serviço Tipo de execução
Tentativas A cada Frequência
Mensagem |
03. Clique em Configurar integração.
04. Na aba Geral, defina as informações solicitadas para configurar a execução do serviço.
Selecione a ação (operação) Defina o tempo de resposta Ativar conexão segura (SSL) |
05. Em Header, clique em Adicionar header para adicionar informações adicionais à requisição do serviço.
Os headers ou cabeçalhos são informações adicionais ou metadados que são enviados juntos com a requisição do serviço para que a integração funcione corretamente. Mais detalhes e exemplos podem ser obtidos em Headers. |
06. Informe os dados necessários para cada header.
Chave Valor
Veja mais exemplos em Headers. |
07. Clique na aba Parâmetros para configurar os parâmetros do método/operação do serviço.
Os parâmetros exibidos são os que pertencem ao método/operação que foi selecionado em Selecione a ação (operação) na aba Geral. Esses parâmetros são os dados que o método/operação precisa receber para ser executado. Mais detalhes e exemplos podem ser obtidos em Parâmetros. |
08. Na coluna Origem do valor de cada parâmetro, selecione de onde será obtido o valor que será passado para esse parâmetro do método/operação.
As opções disponíveis são:
|
09. Na coluna Valor de cada parâmetro, selecione ou insira o valor que será passado de acordo com a origem selecionada.
Se a origem selecionada foi:
|
10. Se um dos parâmetros for do tipo objeto, na coluna Ação, clique em Editar objeto
para configurar os parâmetros do objeto.
Os parâmetros exibidos são os que pertencem ao objeto em questão. É possível configurar todos os parâmetros do objeto da mesma forma que é feito para os demais parâmetros. Se um dos parâmetros do objeto também for do tipo objeto, é possível configurar seus respectivos parâmetros da mesma forma, clicando em Editar objeto Se um dos parâmetros do objeto for do tipo lista, é possível configurar seus parâmetros clicando em Adicionar via lista |
11. Ao finalizar a configuração dos parâmetros do objeto, clique em Salvar, para voltar para a aba Parâmetros.
12. Se um dos parâmetros for do tipo lista, na coluna Ação, clique em Adicionar via lista
para adicionar os valores para os parâmetros da lista.
13. Clique em Adicionar valor
.
Os parâmetros exibidos são os que pertencem à lista em questão. É possível configurar todos os parâmetros da lista da mesma forma que é feito para os demais parâmetros. Se um dos parâmetros da lista for do tipo objeto, é possível configurar seus parâmetros clicando em Editar objeto |
14. Ao finalizar a configuração dos parâmetros da lista, clique em Salvar, para voltar para a aba Parâmetros.
15. Para os tipos de parâmetros Objeto ou Map, é possível adicionar atributos clicando em Adicionar atributos
– localizado ao lado do parâmetro.
16. Clique em Adicionar atributos
.
17. Na coluna Chave, insira uma chave para identificar o atributo.
18. Na coluna Atribuição, selecione como será a atribuição de valor para o atributo.
As opções disponíveis são:
|
19. Na coluna Valor, selecione ou insira o valor para o atributo de acordo com a origem selecionada.
Se a origem selecionada foi:
|
20. Ao finalizar a configuração dos atributos, clique em Salvar até voltar para a aba Parâmetros.
21. Clique na aba Retorno para configurar o destino dos dados retornados pelo método/operação.
Os dados de retorno exibidos são os que pertencem ao método/operação que foi selecionado em Selecione a ação (operação) na aba Geral. Eles são os dados que a operação retorna depois de ser executada. Mais detalhes e exemplos podem ser obtidos em Retorno. |
22. Na coluna Atribuição de cada retorno, selecione para onde o dado retornado pelo método/operação deve ser enviado ou armazenado para ser usado no processo.
As opções disponíveis são:
|
23. Na coluna Valor de cada retorno, defina onde o dado retornado deve ser armazenado ou utilizado, de acordo com o destino selecionado.
Se o destino selecionado foi:
|
24. Se um dos parâmetros de retorno for do tipo complexo, como objeto ou lista, na coluna Ação, clique em Editar objeto
para configurar o destino dos valores de retorno.
Os parâmetros exibidos são os que pertencem ao objeto retornado em questão. É possível configurar todos os parâmetros do objeto retornado da mesma forma que é feito para os demais parâmetros de retorno. Se um dos parâmetros do objeto retornado também for do tipo complexo, como objeto ou lista, é possível configurar seus respectivos parâmetros da mesma forma, clicando em Editar objeto |
25. Ao finalizar a configuração dos parâmetros do objeto retornado, clique em Salvar, para voltar para a aba Retorno.
26. Clique em Salvar para salvar todas as configurações feitas para o serviço, operação, parâmetros e retorno.
27. Clique em Salvar rascunho – localizado no lado direito da barra superior – para salvar as configurações feitas no componente Atividade de serviço.
28. Na mensagem exibida, clique em Ok, entendi.
01. No diagrama do processo, clique no componente Atividade de serviço
para o qual deseja configurar a integração depois de selecionar o serviço desejado.
02. Clique em Configurar integração.
03. Defina as configurações desejadas para a integração nas abas Geral, Parâmetros e Retorno.
Obtenha informações detalhadas sobre as opções disponíveis de configuração para cada aba em Geral, Parâmetros e Retorno. |
04. Depois de definir todas as configurações desejadas em cada aba, clique em Salvar.
05. Clique em Salvar rascunho – localizado no lado direito da barra superior – para salvar as alterações feitas no componente Atividade de serviço.
06. Na mensagem exibida, clique em Ok, entendi.
01. No diagrama do processo, clique no componente Atividade de serviço
para o qual deseja editar as configurações da integração.
02. Clique em Editar
– localizado no quadro da integração configurada.
03. Edite as configurações desejadas para a integração nas abas Geral, Parâmetros e Retorno.
Obtenha informações detalhadas sobre as opções disponíveis de configuração para cada aba em Geral, Parâmetros e Retorno. |
04. Depois de editar todas as configurações desejadas em cada aba, clique em Salvar.
05. Clique em Salvar rascunho – localizado no lado direito da barra superior – para salvar as alterações feitas no componente Atividade de serviço.
06. Na mensagem exibida, clique em Ok, entendi.
01. No diagrama do processo, clique no componente Atividade de serviço
do qual deseja excluir a integração configurada.
02. Clique em Excluir
– localizado no quadro da integração configurada.
03. Na mensagem exibida, clique em Excluir para confirmar a exclusão da integração.
04. Clique em Salvar rascunho – localizado no lado direito da barra superior – para salvar as alterações feitas no componente Atividade de serviço.
05. Na mensagem exibida, clique em Ok, entendi.
Confira aqui algumas dúvidas frequentes sobre o componente Atividade de serviço.
<script>
(function() {
function toggleAreas(isExpand, $parent) {
var $items = $parent.find('.panel');
$.each($items, function(idx, el) {
var $arrow = $(el).find('span.cloakToggle').find('span');
var $content = $(el).find('span.cloak');
if (isExpand) {
$arrow.removeClass('cloakDefaultOpen').addClass('cloakDefaultClose');
$content.show();
} else {
$arrow.addClass('cloakDefaultOpen').removeClass('cloakDefaultClose');
$content.hide();
}
});
}
$(document).on('click', '#toggleAll-3', function(ev) {
ev.preventDefault();
var isExpand = $(this).data('expand');
var $parent = $(this).nextAll('.sectionColumnWrapper').first();
toggleAreas(isExpand, $parent);
$(this).data('expand', !isExpand);
});
})();
</script>
<a id="toggleAll-3" href="#" data-expand="true">Abrir/fechar todas as dúvidas</a> |
|
Esta documentação é válida a partir da atualização Voyager (2.0). Se você utiliza uma atualização anterior, ela pode conter informações diferentes das quais você vê na sua plataforma. |
<!-- Hotjar Tracking Code for http://tdn.totvs.com/display/fb -->
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:1280165,hjsv:6};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
</script> |