Escopo dos elementos
A Engine processará os elementos de acordo com o escopo em que estão inseridos:
- Elementos do processo são visíveis apenas no processo, e não nos subprocessos;
- Elementos de um subprocesso são visíveis apenas no subprocesso em questão.
- Cada instância de um subprocesso tem seu próprio escopo, se um subprocesso for executado mais de uma vez cada instância corresponde a um escopo diferente.
Em geral, cada elemento é visível apenas no escopo em que está inserido, tendo as seguintes exceções:
- Processo: quando possuir um subprocesso de evento de erro ou sinal, nesse caso esse subprocesso de evento faz parte do escopo do processo.
- Subprocesso: quando possuir um subprocesso de evento de erro, sinal ou compensação, nesse caso esse subprocesso de evento faz parte do escopo do subprocesso pai.
- Subprocesso de evento: quando possui um outro subprocesso de evento de erro, sinal ou compensação, inserido a ele, então o escopo desse subprocesso de evento mais interno faz parte do escopo do subprocesso de evento ao qual esta inserido.
Atividades
Determina um passo ou tarefa a ser realizado para andamento do processo e precisa de um participante. Geralmente, um usuário final ou uma aplicação.
A atividade (activity) pode conter zero ou mais SequenceFlow de entrada e de saída, considerando os seguintes critérios:
- Quando não possui entrada, assume-se que a atividade é executada ao iniciar o processo;
- Quando possui mais de uma entrada, a atividade é executada sempre que atingida por algum SequenceFlow de entrada, sem qualquer controle de sincronismo;
- Quando não possui saída, assume-se que a atividade é o fim da linha de execução que a atingiu;
- Quando possui mais de uma saída, significa que é criada uma linha de execução para cada SequenceFlow .
Também será utilizado o subprocesso embutido que é uma atividade que contém outras atividades e são dependentes do processo pai, não podendo ser iniciados fora deste processo.
| Propriedades da flowNode suportadas pelas atividades | |
| SINCHRONIZATION | false; |
| INCOMING | Um ou mais; |
| OUTGOING | Um ou mais. |
Gateways
Para o Workflow foram utilizados os gateways dos tipos: exclusivo, inclusivo e paralelo (ou exclusive, inclusive e parallel). Abaixo seguem suas definições:
Abaixo encontram-se os exemplos de cada gateway utilizado:
Exclusivo: Gateways exclusivos são utilizados para a tomada de decisão onde um caminho pode ser seguido.
- Propriedades da FlowNode :
- synchronization : false;
- incoming - define o conjunto de SequenceFlows de entrada do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode : um ou mais;
- outgoing - define o conjunto de SequenceFlows de saída do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode: um ou mais.
- Utiliza a expression dos SequenceFlows de saída para validá-los;
- Segue por apenas um caminho de saída;
- O primeiro SequenceFlow cuja expression for verdadeira define o caminho de saída, os demais caminhos são ignorados. Caso nenhuma expressão for verdadeira e houver um SequenceFlow definido como default o fluxo segue por ele, senão, é gerado erro informando que o processo não foi definido corretamente;
Inclusivo:são utilizados para a tomada de decisão onde um ou mais caminhos podem ser seguidos.
- Propriedades da FlowNode :
- synchronization : true;
- incoming - define o conjunto de SequenceFlows de entrada do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode : UM ou mais;
- outgoing - define o conjunto de SequenceFlows de saída do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode: UM ou mais.
- Utiliza a expression dos SequenceFlows de saída para validá-los;
- Segue por um ou mais caminhos de saída;
- Todos os SequenceFlows cuja expression for verdadeira são usados como caminhos de saída paralelos. os demais caminhos são ignorados. Caso nenhuma expressão seja verdadeira, ocorre o seguinte:
- se houver um SequenceFlow definido como default o fluxo segue por ele,senão, é gerado erro informando que o processo não foi definido corretamente;
Paralelo - Gateways paralelos possuem duas utilidades:
1. convergência de caminhos paralelos para sincronizá-los antes de continuar o fluxo;
2. divergência de um caminho simples em “ n ” caminhos paralelos.
- Propriedades da FlowNode :
- synchronization : true;
- incoming - define o conjunto de SequenceFlows de entrada do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode : UM ou mais;
- outgoing - define o conjunto de SequenceFlows de saída do nó, e a quantidade e a disponibilidade depende da especialização do FlowNode: UM ou mais.
- Segue por todos os caminhos de saída definidos (não utiliza a expression para validá-los).
Apesar da especificação da BPMN não limitar o uso de expressões condicionais nos SequenceFlow pelos tipos de elemento conectados, no Workflow as expressões condicionais só podem ser utilizadas em SequenceFlow cujo elemento de origem é um gateway do tipo exclusive ou inclusive .
Eventos
Eventos acontecem durante um processo do negócio e afetam o seu fluxo. Geralmente possuem uma causa (trigger) ou um impacto (result) . São representados um círculo.
Inicial - Start Event
Intermediário - Intermediate Event
Trata-se de qualquer evento intermediário que está no fluxo de um processo ou subprocesso. É utilizado para indicar algumas mudanças de estado no processo.
Final - End Event
Os eventos de fim terminam a instância do processo. Usado para indicar o final de um processo e também para indicar o final de um subprocesso neste caso a execução do fluxo é retomada para o fluxo pai.
Abaixo são descritas as propriedades da flowNode suportadas por eventos, bem como as propriedades suportadas quando se tratar de um processo e/ou subprocesso:
| Propriedades do flowNode | Quando o escopo for um processo | Quando o escopo for um subprocesso | |
| Eventos iniciais - Start events | synchronization:true; incoming: nenhum; outgoing: somente um; |
Single: ponto onde o processo é iniciado; Parallel: dois ou mais pontos onde o processo é iniciado, cada Start é um caminho paralelo. |
Há somente um start event para cada subprocesso. Os tipos suportados são: Single: inicia o subprocesso; Error: subprocesso para tratamento de erros; Compensation:subprocesso para compensação; Message: subprocesso para processamento de mensagem. |
| Eventos intermediários - Intermediate event | synchronization:false; incoming: um ou mais quando for throw e nenhum quando for catch; outgoing: nenhum quando for throw e um ou mais quando for catch. |
Link: Representa uma quebra em um SequenceFlow. A relação entre throw e catch é de um para um; Message: representa uma mensagem enviada de um ponto do processo para outro. A relação entrethrow e catch é de N para N ; Timer: indica uma pausa no fluxo do processo, não afeta caminhos paralelos, apenas o caminho no qual foi inserido. É throw ecatch ao mesmo tempo; Error: é suportado como boundary event em qualquer Activity (exceto de compensação) . Funciona apenas como catch; Compensation: é usado para compensação de qualquer atividade. A relação entrethrow e catch é de um para um, o throw é definido no fluxo normal do processo, ocatch herda o nome da atividade e é definido de acordo com o tipo dela: - para a tarefa é definido como boundary event ; - para subprocesso é implícito. |
IDEM ao processo. |
| Eventos finais - End events | synchronization:false; incoming: um ou mais; outgoing: nenhum. |
Simple: indica que o caminho em questão terminou com sucesso. Caminhos paralelos continuam executando; Error: faz throw para disparar um erro ocorrido no fluxo normal do escopo em que está inserido: - se o nome for nulo, o catch é feito pelo tratador de erro padrão, caso contrário o catch é feito pelo subprocess que contém o Error Start Event de mesmo nome; - caminhos paralelos do escopo em questão são abortados; Terminate: indica que a instância do processo deve ser terminada imediatamente com status de erro. Caminhos paralelos são abortados e não executa compensação e nem tratamento de erros. |
Message: é processado como um Intermediate Event do escopo pai do escopo pai do subprocess; Error: se utilizado em um subprocesso de tratamento de erro. Termina o subprocesso em que está inserido (o de tratamento de erro), e refaz o throw do erro para o escopo pai. |

English
Español


