Falando de componente Atividade de serviço...


O componente Atividade de serviço 







Xxxxxx




**imagem**


Execução automatizada


Xxxxxxxxx




Esta atividade permite consultar dados de um serviço externo e passar para o processo dados provindos de tais serviços. Nas propriedades da atividade é possível selecionar um serviço cadastrado no fluig e editar um script JavaScript que fará acesso aos métodos e dados desse serviço. Fazendo uso das APIs hAPI, e forms é possível passar os dados obtidos na consulta do serviço para dentro do fluig.

Existem dois modelos de utilização da atividade serviço: Execução Imediata e Execução Automatizada.


Neste caso a execução do script de serviço será assíncrona e script será executado sem a necessidade de uma interação do usuário para que isso aconteça. É possível configurar o número de tentativas e a mensagem de sucesso caso a execução do script seja concluída sem erros. Ao enviar uma solicitação para a atividade de serviço configurada como posterior ela ficará parada na atividade de serviço e executará o script pelo número de vezes consecutivas configuradas no parâmetro tentativas ou até que o script não retorne um erro. Caso o número de tentativas seja concluído sem que haja uma execução do script com sucesso a atividade será movimentada para o evento intermediário de captura de erro que por sua vez movimentará a atividade para o fluxo indicado, caso contrário a atividade de serviço será concluída e seguirá o seu fluxo de saída normal.


A atividade de serviço pode apenas ter um fluxo de saída e deve ter um evento intermediário de captura de erro anexado a mesma para o caso de ocorrer algum problema. É importante ressaltar que a atividade posterior a captura de erro não será atribuída automaticamente a quem enviou a solicitação para a atividade de serviços, portanto o operador deve modelar o processo informando qual usuário será o responsável pela atividade de erro para que não haja uma atribuição automática para o primeiro usuário da lista.

Em tarefas de serviço com tipo de execução Automatizada é obrigatório o uso do evento anexo de captura de erro. Bem como um fluxo de saída deste evento permitindo que o processo seja desviado caso o script de integração não tenha sido executado com sucesso em todas as tentativas.


O script da atividade de serviço com execução posterior pode receber como parâmetro a quantidade de tentativas e a mensagem de erro da última execução que podem ser utilizados dentro do script. O script em si ficaria como a seguir:



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 erro serão gravadas no histórico como complementos e apresentados aos usuários que visualizarem aquela solicitação. Este tipo de integração é melhor utilizado para integração com serviços possivelmente indisponíveis ou externos e que necessariamente devem ser assíncronos a utilização do usuário, possibilitando um fluxo de contingência caso a integração não seja concluída com sucesso em todas as tentativas por qualquer razão. Para criação deste fluxo de contingência deverá ser anexado um evento de captura de erro (colocado em cima) cujo fluxo de saída será utilizado caso todas as tentativas de integração falharem. Abaixo segue um exemplo de como fica uma modelagem básica de uma tarefa de serviço do tipo Automática.




Exemplos de uso


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>

Xxxxxxxxx.



Em um processo de Xxxxxxxxxxxxx,


→ Xxxxxxxxxxx


Xxxxxxxxx.




→ Xxxxxxxxxxx


 Xxxxxxxxx.



→ Xxxxxxxxxxx


Xxxxxxxx.



Em um processo de Xxxxxxxxx


→ Significa que xxxxxxxxxxx.

Xxxxxxxxxxx.




→ Xxxxxxxxxxx







Execução imediata


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.



Exemplos de uso


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>

Xxxxxxxxx.



Em um processo de Xxxxxxxxxxxxx,


→ Xxxxxxxxxxx


Xxxxxxxxx.




→ Xxxxxxxxxxx


 Xxxxxxxxx.



→ Xxxxxxxxxxx


Xxxxxxxx.



Em um processo de Xxxxxxxxx


→ Significa que xxxxxxxxxxx.

Xxxxxxxxxxx.




→ Xxxxxxxxxxx





Configurar componente Atividade de serviço


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. Xxxxxxxxxxxxxxxx

O nome também pode ser alterado diretamente no componente, clicando sobre seu nome atual e depois em Editar– localizado no lado direito.


Em um processo de Xxxxxxx, o componente poderia receber o nome Xxxxxxxx.

03. Xxxxxxxxxxxxxx.

04. Xxxxxxxxxxx

05. Xxxxxxxxxxx

As opções disponíveis são:

  • Xxxxxxx: xxxxxxxxx
  • Xxxxxx: xxxxxxxxxxx

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.


Configurar execução automatizada


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.


Editar execução automatizada


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.



Excluir execução automatizada


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.



Configurar execução imediata


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.


Editar execução imediata


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.


Excluir execução imediata


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.


Dúvidas frequentes


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>

Xxxxxxxxxxxxxx?


Xxxxxxxxxxxxx

Xxxxxxxxxxxxxxx?


Xxxxxxxxxxxxxx

 Xxxxxxxxxxxxxxx?


Xxxxxxxxxxx

Xxxxxxxxxxxx?


Xxxxxxxxxxxx

 Xxxxxxxxxxxx?


Xxxxxxxxxxxxxx

 Xxxxxxxxxxxxx?


Xxxxxxxxxxxxxxx

Xxxxxxxxxxxx?


Xxxxxxxxxxxxx



<!-- 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>