No artigo anterior (Desmistificando tipos de tarefas em BPMN: Tarefa Abstrata, Tarefa de Usuário e Tarefa Manual) iniciamos uma série de três artigos sobre os tipos de tarefas em BPMN. Para facilitar o entendimento, estamos discutindo os os tipos de tarefa de acordo com seu propósito (essa divisão não é oficial):
- Tarefa abstrata: abstract task
- Tarefas de interação humana: user task e manual task
- Tarefas de execução de rotinas automáticas: service task, script task e business service task (neste artigo)
- Tarefas de comunicação: send task e receive task
Tarefas de execução de rotinas automáticas
Para representar situações em que rotinas que são executadas automaticamente no processo (em que seu acionamento é determinado pelo andamento do fluxo do processo, sem que haja uma pessoa para acioná-lo), BPMN sugere três tipos de tarefa: tarefa de serviço, tarefa de script e tarefa de regra de negócio:
![blog da iprocess - BPMN tasks - tarefas automaticas](https://blog.iprocess.com.br/wp-content/uploads/2014/03/blog-da-iprocess-BPMN-tasks-tarefas-automaticas1.png)
De acordo com a especificação:
“Uma Service Task (tarefa de serviço) é uma tarefa que usa algum tipo de serviço, que pode ser um Web Service ou uma aplicação automatizada.” (pág 156)
“Uma Script Task (tarefa de script) é executada pelo motor de processos de negócio (business process engine). O modelador ou implementador define um script em uma linguagem que o motor de processos consegue interpretar. Quando a tarefa estiver pronta para iniciar, o motor de processos executará o script. Quando o script for concluído, a tarefa também será concluída.” (pag 162)
“Uma Business Rule Task (tarefa de regra de negócio) propicia um mecanismo para o processo para enviar informações a um Business Rules Engine (motor de regras de negócio) e obter o resultado do cálculo que o motor de regras pode prover. ” (pag 161)
Todas as três são utilizadas na modelagem quando temos um processo que está sendo automatizado (se o processo é executado manualmente, fora de um BPMS ou workflow, é necessário que haja uma atividade manual em que uma pessoa acione a execução de uma funcionalidade; portanto a tarefa em si é de uma pessoa).
A diferença entre elas é que a tarefa de serviço (service task) aciona a operação de um sistema de informação externo com o qual o motor de processo se comunica (process engine) – que pode ser implementado através de tecnologias como webservices, RMI (Remote Method Invocation), EJB (Enterprise Java Beans), etc. Já a tarefa de script (script task) executa um trecho de código que a própria aplicação de motor de processos interpreta e executa (e cada fornecedor de produto pode definir sua linguagem de script própria). Por exemplo, a transformação de um tipo de dado em outro ou a realização de cálculos com os dados da instância do processo, são exemplos de tarefas de script.
A tarefa de regra de negócio (business rule task) comporta-se da mesma forma que a tarefa de serviço, porém possui o propósito específico de obter resultado da aplicação de uma determinada regra de negócio no processo (leia mais sobre regras de negócio e Business Rules Management no artigo Business Rules e a Dinâmica do Negócio).
![blog da iprocess - BPMN tasks - processo com tarefas automaticas](https://blog.iprocess.com.br/wp-content/uploads/2014/03/blog-da-iprocess-BPMN-tasks-processo-com-tarefas-automaticas.png)
No processo hipotético acima temos exemplos aplicados dos três tipos de tarefas automáticas.
- A tarefa “Identificar prioridade do atendimento” é uma tarefa de regra de negócio, pois executa uma regra da organização (por exemplo: chamados de clientes com contas premium ou chamados que já tiveram uma visita técnica mas o problema não foi solucionado são tratadas como prioridade “emergência”, enquanto as demais são prioridade “normal”. Se a organização quiser mudar esta regra e incluir outros planos no atendimento de prioridade emergencial, pode modificar a regra de negócio sem impactar no processo).
- Neste processo em que todos os chamados são originados com prioridade “normal”, a tarefa “Elevar prioridade do atendimento” é uma tarefa de script pois muda de “normal” para “emergência” uma informação do próprio processo, elevando a prioridade dos processos que passam por ela (sem precisar acessar outros sistemas).
- A tarefa “Identificar técnico responsável” é uma tarefa de serviço pois acessa o sistema de localização da empresa identificando que técnico está mais próximo do endereço do cliente. Ela aciona um serviço deste sistema, e recebe como retorno a informação do técnico disponível.
- A tarefa de serviço a seguir “Sinalizar sistema de chamados”, aciona um serviço do sistema usado pela empresa para enviar ao comunicador do técnico a nova chamada prioritária.
- A tarefa de serviço “Agendar visita técnica” registra o chamado no sistema que libera a lista de clientes a serem visitados no dia pelos técnicos. Como é uma visita normal, ela é registrada de acordo com o agendamento realizado com o cliente na criação da ficha de atendimento.
Aprenda a dominar a notação BPMN utilizando as melhores práticas com nossos instrutores, em um curso repleto de exercícios e um laboratório prático de modelagem de um processo de negócio de ponta a ponta!
Confira já a agenda de cursos da iProcess Education e inscreva-se:
www.iprocesseducation.com.br/ipe04
10 Responses
Olá!
Aconselha, para um processo modelado em A4, que quantidade máxima de atividades, de forma a não prejudicar a visualização e leitura?
Att,
Olá, tenho uma business rule e dependendo do resultado preciso enviar mensagens para diferentes destinatários, todos eles fora do pool. Voces tem uma sugestão de como representar isso?
Olá Faccioly. Após a invocação da Business Rule, que retornará a lista de destinatários, você pode utilizar a Tarefa de Envio (Send Task) marcando-a como multi-instance. Assim, ela será executada múltiplas vezes, enviando a mensagem para cada destinatário conforme o resultado do seu Business Rule. Veja no artigo Desmistificando tipos de tarefas em BPMN: Tarefas de envio e recebimento como utillizar este tipo de tarefa.
Como desenho a seguinte situação:
Uma consulta é efetuada diariamente até que o status seja alterado
Olá Evandro; você pode utilizar o marcador de loop na atividade; assim isso demonstra que a atividade se repete até que a condição para parada da repetição seja atendida (no seu caso, a alteração do status).
Veja mais sobre isso no artigo BPMN: Modelando processos de negócio com elementos avançados (Parte I), na parte do artigo em que falamos de Loop – Atividade cíclica.
Muito interessante esse site. Parabéns pelo trabalho
Como represento o envio automático de notificação após um cadastro do usuário? Essa notificação será uma tarefa de serviço ou de script?
Tenho a mesma dúvida para os seguintes casos:
Gerar log no sistema
Cancelar um pedido automaticamente
Etc.
Oi Luiz!
Então, tudo depende de como a execução do seu processo é controlado.
Se o seu processo é automatizado em um BPMS, é provável que ele tenha particularidades específicas do motor de processos que determine o uso desses elementos. Em geral, tarefa de serviço implica que você tenha um conector de webservice que será acionado e que você terá que configurar na tarefa para ela poder ser executada automaticamente. Já no caso de script, a configuração provavelmente inclui um campo para você adicionar um código para ser executado especificamente naquele ponto. Esses scripts são geralmente limitados a fazer operações sobre os dados do formulário do próprio processo, não acionando nenhum tipo de operação que envolva serviços externos.
Mas essas definições podem eventualmente mudar de um produto para outro.
Esses elementos só fazem sentido serem usados quando você tem um processo que será executado por um motor de processos.
Em processos cuja execução é controlada e transferida manualmente entre os participantes (pessoas), a tipificação da tarefa é indiferente. Nesses casos nós recomendamos usar tarefas abstratas mesmo (sem nenhum símbolo). Mas se você fizer questão de indicar um tipo para a tarefa, talvez a tarefa de serviço se aproxime mais da sua necessidade.
Confira também esse artigo, pode ajudar a esclarecer um pouco mais a ideia: Respondendo a dúvidas: como representar email, planilha ou sistema em BPMN?.
Espero ter esclarecido a sua dúvida :)
Kelly Sganderla, primeiramente, muito obrigado pela resposta célere.
Quero aproveitar para dizer que acompanho há muito tempo o trabalho de vocês e tem sido essencial para mim. Sem dúvidas, é o melhor site sobre processos de negócios com modelagem BPMN.
Sua resposta foi bastante esclarecedora! Pelo que entendi, posso fazer isso a outros tipos de tarefa então: por exemplo, a grosso modo, se eu não for usar um motor BPM, uma tarefa de regra de negócio pode ser substituída por uma tarefa abstrata e um gateway para expressar as saídas da regra de negócio. É um bom exemplo?
Parabéns pelo excelente trabalho de vocês.
É um excelente exemplo, Luiz!
Muito obrigada pela sua mensagem, nos esforçamos para manter um conteúdo profundo e elucidativo e assim colaborar para o crescimento da comunidade de gestão e transformação de processos :)
Continue com a gente e conte conosco sempre que precisar!