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.
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 duas formas 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.
**imagem**
A forma 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 é mais indicada para integração com serviços que podem ficar indisponíveis ou externos e que, necessariamente, devem ser assíncronos à utilização pelas pessoas, 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.
** imagem de uma modelagem básica de uma tarefa de serviço do tipo Automática. **
Reunimos aqui vários cenários utilizando xxxxxxxxxxxx. Os exemplos contam com xxxxxxxxxxxxxxxxx.
Clique em cada cenário para ver seus detalhes.
<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-1', 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-1" href="#" data-expand="true">Abrir/fechar todos os exemplos</a> |
|
Xxxxxxxxxx
Xxxx |
O código gerado de script específico desta atividade será executado após evento afterStateEntry relacionado deste processo e será processado no momento que solicitação entrar na atividade de serviço.
Exemplo de código gerado para iniciar o trabalho de integração com serviço:
try {
var Service = ServiceManager.getService('rm');
var serviceHelper = Service.getBean();
var serviceLocator = serviceHelper.instantiate('classe.locator');
} catch(erro) {
log.error(erro);
} |
O tipo de execução Imediata não é recomentado atualmente por ter sua qualidade reduzida.
Reunimos aqui vários cenários utilizando xxxxxxxxxxxx. Os exemplos contam com xxxxxxxxxxxxxxxxx.
Clique em cada cenário para ver seus detalhes.
<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-2', 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-1" href="#" data-expand="true">Abrir/fechar todos os exemplos</a> |
|
01. No diagrama do processo, clique no componente Atividade de serviço
que deseja configurar.
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 uma consulta de dados de um serviço externo.
Título
Selecione o serviço Tipo de execução
Tentativas A cada Frequência
Mensagem |
03. Xxxxxxxxxxxxxx.
04. Xxxxxxxxxxx
05. Xxxxxxxxxxx
As opções disponíveis são:
|
06. Xxxxxxxxxxxxxxx
07. Xxxxxxxxxxxxxxx
08. Xxxxxxxxxxxxxxx
09. Clique em Salvar rascunho – localizado no lado direito da barra superior – para salvar as configurações feitas no componente Atividade de serviço.
01. No diagrama do processo, clique no componente Atividade de serviço
para o qual deseja configurar a execução automatizada.
02. Clique em
Adicionar condição.
03. Em Nome da condição, insira um nome para identificar a condição simples depois de criada.
04. Selecione o tipo Condição simples.
05. Xxxxxxx
06. Clique em Salvar.
07. Ao concluir a inclusão de todas as condições simples desejadas, clique em Fechar– localizado no canto superior direito.
01. No diagrama do processo, clique no componente Exclusivo
do qual deseja editar uma condição simples.
02. Em Condições criadas, localize a condição que deseja editar e clique em Ações
– localizado no seu lado direito.
03. Clique em Editar.
04. Xxxxxxxxxx.
01. No diagrama do processo, clique no componente Exclusivo
do qual deseja excluir uma condição simples.
02. Em Condições criadas, localize a condição que deseja excluir e clique em Ações
– localizado no seu lado direito.
03. Clique em Excluir.
04. Xxxxxxxxxx.
01. No diagrama do processo, clique no componente Exclusivo
para o qual deseja adicionar uma condição avançada.
02. Clique em
Adicionar condição.
03. Em Nome da condição, insira um nome para identificar a condição simples depois de criada.
04. Selecione o tipo Condição avançada.
05. Xxxxxxx
06. Clique em Salvar.
07. Ao concluir a inclusão de todas as condições avançadas desejadas, clique em Fechar– localizado no canto superior direito.
01. No diagrama do processo, clique no componente Exclusivo
do qual deseja editar uma condição avançada.
02. Em Condições criadas, localize a condição que deseja editar e clique em Ações
– localizado no seu lado direito.
03. Clique em Editar.
04. Xxxxxxxxxx.
01. No diagrama do processo, clique no componente Exclusivo
do qual deseja excluir uma condição avançada.
02. Em Condições criadas, localize a condição que deseja excluir e clique em Ações
– localizado no seu lado direito.
03. Clique em Excluir.
04. Xxxxxxxxxx.
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 9.9.9 – Xxxxxxx. 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> |