Tarefa de serviço
A tarefa de serviço representa uma integração que é executada pelo processo, conectando o Zeev a outro sistema
A tarefa de serviço representa uma integração ou comunicação que é executada pelo Zeev com outro sistema ou serviço externo. Ela possui múltiplas aplicações e permite expandir as capacidades de uso da ferramenta.
Como criar uma integração
A tarefa de serviço somente executa uma integração já criada e configurada no Zeev.
Portanto, antes de configurar uma tarefa de serviço, você precisa criar uma integração.
Casos de uso
Veja alguns casos de uso comuns da tarefa de serviço:
Enviar dados para um sistema externo
Nesse cenário, você irá utilizar uma tarefa de serviço para enviar dados da solicitação para criar um registro em um sistema externo.
Considere, por exemplo, o processo abaixo. Após o cliente solicitar um orçamento, um registro de negócio é criado automaticamente no Hubspot CRM, um software externo, disponibilizado por outra empresa. Os dados da solicitação, como o o nome do cliente e o produto solicitado, são enviados ao CRM para criar o negócio, através do uso de tokens. O Zeev pode receber ou não algum dado, como o número do negócio do CRM ou link de acesso ao negócio no CRM, e armazenar esse dado recebido em seu formulário. Imediatamente, é criada uma tarefa humana para um executivo de vendas montar a proposta comercial.

Disparar um processo externo
Considere o exemplo abaixo. Na prática, ele é muito similar ao exemplo acima, porém com pequenas diferenças de sua finalidade. Ao invés de enviar dados para o sistema externo para fins de armazenamento, o Zeev aciona o sistema externo para disparar um procedimento externo. Nesse caso, "Emitir NF no ERP".

Consultar dados de um sistema externo
Consultar dados e informações em um sistema externo é um caso muito comum de uso de tarefas de serviços. Veja o exemplo abaixo: após a solicitação de crédito feita por um cliente, uma tarefa de serviço recebe dados do cliente (por exemplo, o CPF) e realiza uma consulta automatizada no sistema de crédito (que pode ser inclusive de um fornecedor terceiro). Esse sistema retorna um conjunto de dados que são armazenados no próprio formulário da solicitação, indicando o score de crédito do cliente. E, com base nesses dados, um gateway condicional redireciona o processo.

Realizar operações customizadas
Uma arquitetura de sistemas baseada em microsserviços prega, entre outras coisas, a disponibilização de pequenas funções ou algoritmos, que realizam operações específicas, acessados através de APIs.
Esses microsserviços podem realizar operações matemáticas, concatenar dados, realizar consultas em banco de dados, transformar dados e, até mesmo, consultar outras APIs.
Plataformas como AWS Lambda, Azure Functions e Google Cloud Functions são otimizadas para a criação de pequenas funções na nuvem, disponibilizadas como APIs. Essas plataformas permitem que você crie essas pequenas aplicações em diversas linguagens de programação diferentes e, rapidamente, disponibilize funções na nuvem.
É claro, você não precisa utilizar nem depender de nenhuma dessas plataformas; praticamente todas as plataformas de desenvolvimento modernas permitem que você crie funções como APIs e existem muitos provedores de hospedagem (inclusive gratuitos) para disponibilizar essas funções na nuvem.
O ponto principal é que através de microsserviços, APIs e tarefas de serviço, você pode expandir o uso do Zeev criando seu código customizado que irá receber os dados da instância (disponibilizados como tokens), processar essas informações e retornar novas informações para o Zeev.

Um exemplo de operação que microsserviços podem realizar:
Conectar em uma API terceira, transformar, converter e formatar os dados, e retornar os dados formatados e transformados para o formulário do Zeev;
Permitir mais de uma execução a cada solicitação / Restringir execuções duplicadas
Como vimos nos casos de uso, tarefas de serviço podem realizar desde operações simples como cálculos matemáticos ou concatenações de textos, até disparar operações complexas em sistemas externos. Justamente nessas operações de complexidade maior devemos ter um cuidado extra.
Imagine um aplicativo de processo com uma tarefa de serviço que realiza uma integração com seu sistema de pagamento para efetuar um pagamento a um fornecedor. Imagine que trata-se de um processo complexo, com muitas idas e vindas. Via desenho de processo, usando as lógicas corretas, você pode garantir que após a tarefa de serviço que faz o pagamento ser realizada, o processo nunca mais passe pela tarefa de novo. Pois, se passar, o pagamento poderia ser realizado em duplicidade.
Porém, existem riscos:
Quanto maior e mais complexo o processo for, maiores a chance de um pequeno erro de desenho ou modelagem criar condições para que, entre tantas idas e vindas, a tarefa de serviço seja executada de novo;
Alguns recursos administrativos, como devolver processo e a possibilidade de um administrador intervir no processo e retorná-lo a um ponto passado, podem fazer que, mesmo que a modelagem não preveja, a tarefa de serviço seja executada de novo.
Se você tem uma integração com sistema externo que você não quer que, de maneira nenhuma, ela seja executada mais de uma vez, desmarque a opção "Permitir mais de uma execução a cada instância" na configuração da tarefa. Com isso, o Zeev irá garantir que mesmo que o processo passe de novo por esse local, a tarefa seja ignorada.
Ignorar a tarefa de serviço
É comum, quando estamos modelando o processo pela primeira vez, não termos as APIs de integração de nosso sistema externo prontas ou disponíveis ainda. Nessas situações, você pode ainda utilizar a tarefa de serviço no desenho, porém não configurá-la.
Deixando em branco a definição da integração a ser usada, caso o processo seja executado, a tarefa será simplesmente ignorada.
Demonstração prática
Confira no vídeo a seguir o passo-a-passo de como utilizar a tarefa de serviço.
Atualizado