MODELAGEM DE SISTEMAS Da Orientação a Objetos à UML
UHLMANN, Erwin A. Título do trabalho. Instituto Siegen. Guarulhos, 2015
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
1 de 64
Agradecimentos
Agradeço à minha esposa Kátia por ent ender minha ausência, meu filho Henrique que me motiva trabalhar (!!!), meus pais Mirtes e Günter por terem criado meu caminho, aos meus alunos que viabilizaram este trabalho e a todos os autores de livros e bibliotecas que consultei para que pudesse devidamente embasar este. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
2 de 64
Sumário Modelagem de Sistemas
1
Agradecimentos
2
Sumário
3
Modelagem de Sistemas
5
Orientação a Objetos
5
Objeto
5
Programação Orientada a Objeto
10
Introdução à UML
12
Diagramas
13
Diagrama de Casos de Uso
13
Scripts
13
Atores
14
Casos de Uso
14
Associação
15
Generalização ou Especialização
16
Include
16
Extend
17
Multiplicidade
17
Estereótipos
18
Exercício 1
18
Documentação de Casos de Uso
19
Fluxo das Informações
19
Exercício 2
19
Diagrama de Casos de Uso
20
Documentação de Casos de Uso
21
Fluxo das Informações
22
Diagrama de Classes
23
Relacionamentos ou Associações
23
Diagrama de Objetos
29
Diagrama de Sequência
31
Diagrama de Sequência
31
Diagrama de Colaboração
32
Sistema de Login
34
Diagrama de Atividades
35
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
3 de 64
Diagrama de Componentes
36
Modelagem de Processos de Negócios - BPM
38
Um guia para iniciar estudos em BPMN (I): Atividades e sequência | Blog da iProcess 38 Um guia para iniciar estudos em BPMN (II): Gateways | Blog da iProcess
42
Gateway exclusivo (Databased Exclusive Gateway)
43
Um guia para iniciar estudos em BPMN (III): Eventos de Início e Fim | Blog da iProcess 47 Um guia para iniciar estudos em BPMN (IV): Eventos Intermediários | Blog da iProcess 52 Um guia para iniciar estudos em BPMN (V): Subprocessos | Blog da iProcess 58 Um guia para iniciar estudos em BPMN (VI): Swimlanes e Artefatos | Blog da iProcess 60
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
4 de 64
Modelagem de Sistemas Orientação a Objetos A Orientação a Objetos (OO) é um paradigma de programação concebido para o reaproveitamento de códigos em um mesmo software ou em outros externos. A OO se vale de conceitos do mundo real para facilitar a programação, melhorar a qualidade do software, aumentar a produtividade e facilitar a manutenção, ou seja, a manutenabilidade e a documentação. Um objeto é uma entidade que possui uma identificação própria. Este é um conceito importante, pois cada objeto deve ser único e identificável. Os objetos podem compartilhar aspectos semelhantes, comportamentos idênticos e até os mesmos atributos. Quando objetos apresentam os mesmos atributos e comportamentos, eles são agrupados em classes. As classes então possuem objetos, chamados de instâncias e elas é que são as chamadas para ativarem os objetos. Vamos ver os exemplos:
Objeto Um Objeto é como no mundo real algo tátil(exceto por isto!), que possui determinadas características (Atributos ou Propriedades) e tem alguma utilidade (Método, Operação ou Comportamento) e pertencem a algo ou alguém (Visibilidade[Público, Protegido, Privado ou Pacote]).
Para construir no plantUML: @startuml object computador @enduml
Atributos ou Propriedades Os atributos de um Objeto possuem dois tipos de dados: Nome e tipo de dados. O Nome, de forma geral, remete ao que o Atributo contém, como no Objeto Casa, o Atributo Cômodo remete à um cômodo da casa e o Tipo de dado, também de forma geral, é relacionado o que deve conter, como o numero (integer) de cômodos ou o nome (character) deles. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
5 de 64
No plantUML: @startuml object computador 'o atributo é marcado pelo[] computador: atributo[] @enduml
Podem haver vários atributos, como:
E no plantUML: @startuml object computador computador: processador[] computador: memoriaRam[] computador: discoRigido[] computador: dispositivoDeEntrada[] computador:dispositivosDeSaida[] @enduml
Métodos, Operações ou Comportamentos As Operações são as determinações de ação de um Objeto. Elas obedecem os parâmetros determinados em programação e estes parâmetros atendem os valores. Um parâmetro típico é o “H” de hora da função date. O valor é recebido pelo sistema. Outro exemplo de parâmetro é “$_POST[]” que recebe os dados escritos num formulário. O valor é o que é digitado pelo usuário. Uma Operação então é o descritor das atividades de um objeto. @startuml 'object computador computador : processador[] computador : memoriaRam[] computador : discoRigido[] computador : dispositivoDeEntrada[] computador : dispositivosDeSaida[] computador : realizaCalculos() @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
6 de 64
Visibilidade Podem ser quatro estados: Público, Protegido, Privado ou Pacote.
@startuml comput : (-) comput : (+) comput : (#) comput : (˜) @enduml
privado[] público[] protegida() pacote()
Público Qualquer objeto pode utilizar um Atributo público. É representado pelo símbolo “+”. Uma Operação ou Atributo público de exemplo são os dispositivos de entrada e saída de um computador, pois qualquer computador da rede pode utilizá-los. @startuml computador computador computador computador computador computador @enduml
: : : : : :
processador[] memoriaRam[] discoRigido[] + dispositivoDeEntrada[] + dispositivosDeSaida[] realizaCalculos()
Privado São os Atributos ou Métodos que podem ser utilizados somente pelo Objeto pai. É representado pelo símbolo “-“, como a memória RAM, o HD ou o processador.
@startuml computador computador computador computador computador computador @enduml
: : : : : :
- processador[] - memoriaRam[] - discoRigido[] + dispositivoDeEntrada[] + dispositivosDeSaida[] realizaCalculos()
Protegida É representada pelo símbolo “#” e pode ser visualizada pela classe pai e as subclasses. As classes relacionada não visualizam. Um exemplo é o método ou operação do objeto Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
7 de 64
computador. Seus dados podem ser visualizados por todos os componentes, mas somente por eles, por outro objeto não. @startuml computador computador computador computador computador computador @enduml
: : : : : :
+ + #
processador[] memoriaRam[] discoRigido[] dispositivoDeEntrada[] dispositivosDeSaida[] realizaCalculos()
Pacote Representado pelo “˜”, o o pacote pode ser visualizado pelos que pertencerem a ele, ou seja, os objetos que pertençam ao pacote podem visualizar. O monitor e o teclado não foram retratados aqui, mas fazem parte do pacote em que o computador está inserido. @startuml teclado : ~exibeDados() @enduml
Herança A Herança é um dos mais importantes conceitos da Orientação a Objetos. Ela garante que os Atributos e Operações do Objeto pai ou Superobjeto sejam aproveitados em código pelos objetos filhos ou subobjetos. Um o exemplo de herança é um sistema de login e senha. A busca do login que pode ser o e-mail e a senha. O e-mail pode ser público e a senha protegida, logo privada. No entanto outros objetos protegidos podem precisar do e-mail, herdando sua validação, não apenas o dado. @startuml sistLogin : + email[] sistLogin : #senha[] sistLog : email[] sistLog : + dataEHora[] sistLog : armazenarDadosLog() sistInsDados : ~ email[] sistInsDados : gravarDados() sistLogin <|-- sistLog sistLogin <|-- sistInsDados @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
8 de 64
Herança Múltipla Assim como a Herança simples, a múltipla recebe ou herda dados de mais de um objeto. Como é possível notar, o Atributo dataEHora do Objeto sistLog é público e o Atributo email do Objeto sistInsDados é privado a todos que pertençam ao pacote, logo um novo Objeto herdará estes atributos. @startuml sistLogin : + email[] sistLogin : #senha[] sistLog : email[] sistLog : + dataEHora[] sistLog : armazenarDadosLog() sistInsDados : ~ email[] sistInsDados : gravarDados() relatorios : email[] relatorios : dataEHora[] relatorios : imprimirRelatorios() sistLogin <|-- sistLog sistLogin <|-- sistInsDados sistLog <|-- relatorios sistInsDados <|-- relatorios @enduml
Polimorfismo Polimorfismo é um método de reutilizar um objeto em outro objeto especializando-o, ou seja, se em um objeto que realiza determinada Operação é necessário em outro objeto porém com alguma especialização, isto constitui o polimorfismo. Ex.: Imagine um código que exiba números em ordem decrescente. Em outro ponto do software (pacote), você precisa exibir os três primeiros ou os três últimos colocados. Para quê reprogramar? Herde o métodos e decida como utilizá-los. Outro caso: Em um banco cliente é um objeto. Todos os clientes obedecem a uma regra básica: Quanto e quando depositou, quanto e quando retirou. Só isto já é difícil de controlar! Imagine quando você altera o status de um destes clientes, mas não de Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
9 de 64
todos(-), para cliente especial, com crédito, ou seja, cheque especial. Quanto a mais pode retirar e quanto e quando vai pagar? @startuml sistLogin : + email[] sistLogin : #senha[] sistLog : email[] sistLog : + dataEHora[] sistLog : armazenarDadosLog() sistInsDados : ~ email[] sistInsDados : gravarDados() sistLogin <|-- sistLog sistLogin <|-- sistInsDados @enduml
Programação Orientada a Objeto Na programação, o Objeto é representado nesta linguagem pela function e seu nome é hora. Ignore a linguagem. O resultado é a exibição da hora atual, este é seu atributo. function hora(){ $hora = date('H:i:s'); echo $hora; }
Se imaginarmos o seguinte novo objeto: function data(){ $data = date('d/m/Y'); echo $data; }
Os objetos hora e data possuem o mesmo comportamento: Exibir uma informação, especificamente informações sobre data e hora, então eles podem pertencer à mesma classe, a classe tempo. class Tempo{ function hora(){ $hora = date(‘H:i:s’); echo $hora; } function data(){ $data = date(‘d/m/Y’);
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
10 de 64
}
}
echo $data;
A classe Tempo possui duas instâncias, hora e data, e para chamar seu resultado, ou dispará-lo, por assim dizer, é preciso instanciá-lo. Mais uma vez ignore a linguagem. $instancia = new Tempo; $instancia -> hora();
Todas vez que seu programa precisar exibir a hora atual, basta instanciar o objeto hora(). Isto reduz o número de linhas de programação e pode-se aproveitar este código em outros softwares. Outra vantagem da Orientação a Objetos é o Polimorfismo, ou seja, o programa se comporta conforme o ambiente. Como ignoramos a linguagem, esta impressão de hora é estática, isto é, ocorre apenas uma vez, mas e se chamarmos este objeto em um looping? A hora irá mudar a cada novo segundo! O programa é o mesmo, mas o comportamento muda conforme o meio! Polimorfismo! $instancia = new Tempo; $instancia -> hora(); for($i=$instancia+60;$i<$instancia;$i++){ $instancia; }
Herança é o comportamento da OO para os atributos de um objeto poderem ser incorporados por um novo objeto, aproveitando um código já escrito, sendo assim, a classe pai, envia os dados para a classe filho. class Pai{ $valor = '1, 2, 3, 4, 5'; strrev($valor); } class Filho extends Pai{ $parteValor = substr($valor, 0, 4); echo $parteValor; }
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
11 de 64
Introdução à UML O projeto do software é um esquema visual que permite a criação do projeto antes de sua execução ou programação. A Unified Modeling Language (UML), para Guedes (2011) é uma linguagem visual utilizada para modelar softwares baseados no paradigma da orientação a objetos. O autor explica ainda que a programação orientada a objetos é um método de atribuir identidade a scripts que realizem funções específicas e pertençam a uma parte maior de um software. A UML é constituída de 14 diagramas com especificidades e representações para diversas situações, como explica Guedes (2011). Para criarmos os diagramas, vamos utilizar o NetBeans 8.0 (https://netbeans.org/), com o plugin PLantUML (http://plugins.netbeans.org/plugin/49069/plantuml) e o Graphviz(http://www.graphviz.org/) como gerador de imagens. ArgoUML (http://argouml.tigris.org/)
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
12 de 64
Diagramas Diagrama de Casos de Uso O diagrama de Casos de Uso, comumente chamado de UC, por questões óbvias, é normalmente o primeiro a ser desenvolvido. Isto por que ele permite a primeira visão do sistema numa rápida conversa com o cliente e sua demonstração do uso, da dinâmica do software, além disto ele serve como guia para o desenvolvimento deste e é recorrentemente consultado e alterado para se adequar. O Diagrama de Casos de Uso tem por objetivo
apresentar a visão externa das
funcionalidades do sistema, isto é, a visão do usuário sobre o uso do sistema, sem se preocupar com a implantação destas funções. Para criar um Diagrama de Casos de Uso é preciso compô-lo de:
Scripts @startuml title Exemplos de Sintaxe de Casos de Uso 'direcionamento 'left to right direction 'top to bottom direction (Caso de Uso) usecase (Caso de Uso Dois) as CUD :Ator 1: actor Ator2 actor :Outro Ator: as OA 'relação entre atores e casos de uso :Ator 1: -- (Caso de Uso) 'Uma declarado como ator, chame somente o nome Ator2 -> CUD OA --> (Terceiro \nCaso de Uso) :Ator 4: ---> (Caso de Uso) : Uma mensagem simples 'extensão 'O Caso de Uso Dois leva ao Outro Ator OA <|-- CUD Ator2 --|> OA 'notas de projeto note right of :Ator 4: : Nota de projeto note "Nota em meio de caminho" as N2 CUD .. N2 N2 .. (Terceiro \nCaso de Uso) 'direções e ligações
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
13 de 64
:AtorCentral: (CasoDeUso1) (CasoDeUso2) (CasoDeUso3) (CasoDeUso4) :AtorCentral: :AtorCentral: :AtorCentral: :AtorCentral: @enduml
-left- (CasoDeUso1) : associação -up-> (CasoDeUso2) : link ou encaminhamento .right.> (CasoDeUso3) : <
> inclusão <.down. (CasoDeUso4) : extensão <<extend>>
Atores Representa qualquer elemento externo que interaja com o sistema, podendo ser um usuário, um hardware ou outro software. @startuml :Ator: @enduml
Casos de Uso Os Casos de Uso servem para expressar o comportamento primário ou secundário de um sistema. Quando primário ele é associado às funções para o qual o software foi concebido e o secundário para funções de manutenção, por exemplo. Num sistema de cadastro de usuário, o cadastro é a função primária e a edição destes dados é a função secundária. @startuml (Caso de Uso) @enduml
Os atores acessam as funcionalidades de um sistema, desta forma eles representam fracamente um descritivo destas funções, como segue: @startuml :Usuário: --> (Cadastro de usuário) :Usuário: --> (Editar cadastro) @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
14 de 64
No plantUML, você pode definir o ator entre dois pontos ou especificá-lo como actor, veja: @startuml 'actor Ator 'ou :Ator: @enduml
O Caso de Uso possui, de forma geral, uma documentação que descreve de forma sucinta a sequencia de ações do sistema. Nome do Caso de Uso
Descrição
UC 01
Acesso ao sistema
Ator principal: Diretor
Cadastra usuários, edita e exclui, além de todo conteúdo
Ator secundário: Gerente
Cadastra usuários
Ator terciário: Funcionário
Acessa o sistema
Ator quaternário: Usuário
Não pode acessar
Observe que no ator principal, o texto “além de todo conteúdo” foi tachado, pois não pertence ao Caso de Uso UC 01 que descreve ações de acesso ao sistema. A continuidade é o descritivo do fluxo de ações do sistema. Nome do Caso de Uso
Descrição
UC 01
Acesso ao sistema
1 - Ator solicita acesso por login e senha 2 - Sistema busca no Banco de Dados o login 3 - Caso o usuário seja encontrado, solicita a senha 4 - Caso a senha esteja correta, permite acesso, senão solicita o cadastro 5 - Abre a sessão
Associação é a relação criada entre atores e atores ou casos de uso e casos de uso dentro de um diagrama. Exemplos: @startuml :Cliente: -- (Cadastro de clientes) :Cliente: -- (Edita cadastro) :Suporte: -- (Edita cadastro) :Cliente: -- Suporte (Edita cadastro) -- (Cadastro de clientes) : Verifica existência \n do cadastro
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
15 de 64
@enduml
Generalização ou Especialização O diagrama de Especialização ou Generalização determina um plano abstrato e o decompõe em níveis mais baixos, veja:
@startuml (Usuário Diretor) -up-> (Usuário) (Usuário Gerente) -up-> (Usuário) (Usuário Funcionário) -up-> (Usuário) @enduml
Também se especifica as permissões, como segue: @startuml :Diretor: -- (Cadastra, edita e exclui usuário) :Gerente: -- (Cadastra usuários) :Funcionário: -- (Acessa o sistema) @enduml
Include É utilizado quando uma função é recorrente em um sistema, assim um Caso de uso ou ator pode chamar este processo e incluí-lo no sistema. De forma geral, o Include é utilizado quando você deve consultar outro processo para concluir o primeiro, este outro processo é o Include.
@startuml :Ator 1: --> (Acesso ao Sistema) (Acesso ao Sistema) ..> (Log do sistema) :Ator 2: --> (Excluir dados)
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
16 de 64
(Excluir dados) ..> (Log do sistema) @enduml
O Include é representado pelo tracejado.
Extend É indicado quando uma excessão é executada ou uma condição específica, como um cadastro que é feita apenas na primeira vez. No extend, em oposição ao Include, a seta é invertida. De maneira ampla, o Extend é utilizado quando o processo primário não pode concluir o serviço, então chama-se outro extenso a ele, como uma condição. @startuml :Usuário: --> (Acesso ao Sistema) (Acesso ao Sistema) ..> (Log do sistema) note "Caso não tenha cadastro \n (Opicional)" as nota1 (Acesso ao Sistema) <.. nota1 nota1 .. (Cadastro de usuário) :Funcionário: --> (Excluir dados) (Excluir dados) ..> (Log do sistema) note "Confirmação de motivo \n(Opcional)" as nota2 :Funcionário: <.. nota2 nota2 .. :Usuário: @enduml
Multiplicidade Um para muitos ou um para um. Um processo pode ser chamado n vezes por um ator ou o inverso. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
17 de 64
Estereótipos Para representar processos, utiliza-se os sinais << e >>, assim, o processo de validação de acesso ao sistema, pode ser representado apenas como: @startuml (<> \n Acesso ao sistema) @enduml
Exercício 1 Crie a UML de um sistema de login simples com validação de login e recriação e validação de sessão (caso correto) e três páginas protegidas e uma de cadastro.
@startuml title Sistema de login simples left to right direction (Acesso ao Sistema) as AS (Valida Login) as VL (Cadastro) (Página Protegida 1) as PP1 (Página Protegida 2) as PP2 (Página Protegida 3) as PP3 (Valida Sessão) as VS (Menu de Acesso) as MA :master: -- AS :funcionário: -- AS AS --|> VL VL ..> (Cadastro) : <<extend>> VL --|> PP1 PP1 <.. VS : <> PP1 <.. MA : <> PP2 <.. VS : <> PP2 <.. MA : <> PP3 <.. VS : <> PP3 <.. MA : <> (Cadastro) <.. VS @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
18 de 64
Documentação de Casos de Uso Casos de Uso de Login
Descritivo
UC 01 Ator Cliente
1 - Acessa o sistema 2 - Acessa cadastro de usuário 3 - edita dados próprios se cadastrado 4 - exclui-se do BD
Ator Master
1 - Acessa o sistema 2 - Acessa cadastro de usuário 3 - edita dados próprios se cadastrado 4 - exclui-se do BD 5 - Inclui novos usuários 6 - Exclui usuários 7 - Edita dados de usuários 7.1 - Edita o tipo de usuário como adm/usuário
Fluxo das Informações Casos de uso de Login Requisição
Resposta
1 - Acessa o sistema 2 - Sistema procura do BD o email e a senha 3 - usuário entra no sistema 4 - acessa página de edição de dados 5 - sai do sistema
Exercício 2
Crie um sistema de controle de petshop. Seus requisitos são:
• Agenda de serviços, animais e clientes; • Tipo de serviço: Consulta veterinária ou petshop (banho)?; • Dados par ao serviço (Doença, tosa, castração…); • Exames a serem marcados pelo veterinário; Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
19 de 64
• A secretária é o ator agenciador entre clientes, veterinários e agenda do petshop.
Diagrama de Casos de Uso
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
20 de 64
@startuml title Casos de Uso de uma veterinária :Animal: :Cliente: :Secretária: :Veterinário: :Tratador: :Animal: -- :Cliente: :Cliente: -- :Secretária: :Secretária: -- (Serviço) : acessa | \nconsulta (Serviço) <-- (Serviço veterinário) (Serviço) <-- (Serviço petshop) :Secretária: -- (Agenda) : acessa | \nconsulta :Secretária: -- (Cadastro veterinário) :Secretária: -- (Cadastro tratador) :Secretária: -- (Cadastro clientes) :Secretária: -- (Cadastro animais) (Cadastro clientes) <.. (Cadastro animais) : <> (Serviço) <.. (Agenda) : <> (Insumos veterinários) <.. (Serviço) : <> :Veterinário: -- (Insumos veterinários) : informa :Veterinário: -- (Cadastro veterinário) (Cadastro veterinário) ..> (Autocadastro) : <<extend>> (Autocadastro) <.. (Tipo função) : <> :Veterinário: -- (Serviço) :Veterinário: -- (Agenda) :Veterinário: -- (Serviço veterinário) note bottom of (Serviço veterinário) : Cadastra novos serviços (Insumos petshop) <.. (Serviço) : <> :Tratador: -- (Insumos petshop) : informa :Tratador: -- (Cadastro tratador) (Cadastro tratador) ..> (Autocadastro) : <<extend>> :Tratador: -- (Serviço) :Tratador: -- (Agenda) :Tratador: -- (Serviço petshop) note bottom of (Serviço petshop) : Cadastra novos serviços @enduml
Documentação de Casos de Uso Casos de Uso Agenda Veterinária
Descritivo
UC 01
Acesso à Agenda
Ator Secretária
1 - Consulta horários, agenda novos e desmarca; 2 - Consulta serviços 3 - Cadastra, edita e exclui clientes e animais, veterinários e tratadores. 4 - Emite relatórios
Ator Veterinário
1 - Cadastra-se como veterinário (validado pelo CPF) 2 - Cadastra novos serviços de veterinária 3 - Consulta e marca novos compromissos na agenda
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
21 de 64
Casos de Uso Agenda Veterinária
Descritivo
Ator Tratador
1 - Cadastra-se como novo Tratador (validado pelo CPF) 2 - Cadastra novos serviços de petshop 3 - Consulta e marca novos compromissos na agenda
Ator Cliente
1 - Consulta verbalmente o Ator Secretária
Ator Animal
1 - Dependente do Ator Cliente
Fluxo das Informações Casos de uso da Veterinária Requisição
Resposta
1 - O Cliente entra em contato com o Ator Secretária solicitando uma consulta 2 - O Ator Secretária questiona o tipo de serviço 3 - O Ator Cliente descreve o tipo de serviço: Veterinário ou petshop 4 - O Ator Secretária, consulta na Agenda o Serviço e verifica as datas e horários disponíveis por profissional Veterinário ou Tratador; 5 - O Ator Cliente concorda com a data 6 - O Ator Secretária solicita os dados do Ator Cliente, caso não exista no sistema, deve ser cadastrado e o Ator Animal cadastrado como dependente do Ator Cliente; O Ator Secretária associa o profissional ao cliente na data e horário solicitado.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
22 de 64
Diagrama de Classes
O Diagrama de Classes é um dos mais importantes da UML, servindo de base para outros. Este diagrama serve para projetar, documentar ou mesmo compreender como um software foi projetado e como as métodos dos objetos interagem, servindo de base para os diagramas de Sequência, Estados e Comunicação. Uma Classe é um elemento que contém diversos objetos que tenham as mesmas características ou aspectos. Ex.: A Classe Login reúne os Objetos ValidaLogin, ValidaSessao e LogDeErros. Todos eles servem ao login. Neste diagrama podem ser definidos Atributos como a Visibilidade, Tipo de Dados, Multiplicidade e Propriedade. Um Diagrama de Classe exibe o nome da Classe a qual pertence, seus atributos (nomeArquivo[], numLink[] e conteudoLink[]), o tipo de dado que compõe o atributo (varchar, int, date, etc) e na parte inferior os métodos, ou seja, as ações que a classe executa, neste caso, imprimir o nome do link (imprimeNomeLink()). Além destes elementos, também é possível descrever a visibilidade do atributo ou o método (privado(-), público(+), protegido(#) ou pacote(˜)).
Relacionamentos ou Associações Classes e objetos podem se relacionar de diversas formas para permitir o funcionamento do software. O tipo de relação determina como é esta relação, vejamos:
Relação Unária ou Reflexiva A relação uniria ou reflexiva descreve a relação entre objetos de uma mesma classe. Como um contador de elementos é chamado para construir uma laço de repetição em outro objeto. Ela pode expressar de forma simplificada, também a hierarquia Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
23 de 64
dos relacionamentos e o numero de chamados. Estes chamados podem ser 0..*, ou seja, não há chamado de um elemento, porém muitos de outro, 1..* como um chefe tem vários funcionários, um elemento chama muitos de outro, 1..1 um elemento se relaciona com outro diretamente como uma chamada telefônica e determinado, como 5 gerentes se relacionam com 8 funcionários.
Binária É a associação mais simples. O contratante de um plano de saúde possui dependentes, estes não comandam nem enviam dados ao contratante, porém ele determina o tipo de contrato de todos.
Navegabilidade @startuml class contratante contratante : -salárioDebito[] contratante : +planoSaúde[] contratante : #agregaDependentes() class dependente dependente : +planoSaúde[] contratante "possui" --> "0..*" dependente @enduml
Associação Ternária ou N-ária @startuml class professor class sala class turma left to right direction professor "leciona" -- "possui" turma (professor, turma) --> sala : ocupam @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
24 de 64
Agregação Um elemento puxa para si outro elemento, como um CEP agrega uma cidade ou um Bairro, mas um Bairro não pode Agregar Cidade, certo?
Composição Uma classe é composta por outras classes, como um cliente que tem um endereço. @startuml class Cliente Cliente : - endereço[] class CEP CEP : + CEP[] CEP : + logradouro[] class Estado Estado : + Estado[] class Cidade Cidade : + Cidade[] class Bairro Bairro : + Bairro[] CEP "*" *-- "1" Estado CEP "*" *-- "1" Cidade CEP "*" *-- "1" Bairro Cliente "*" o-- "1" CEP @enduml
Generalização e especialização A Generalização (inverso da Especialização) é o aproveitamento de diversas características de uma classe que se aproveita em outras, como o cadastro de funcionários e de clientes. Ambos são pessoas que possuem endereços e dados pessoais, sendo diferenciados por dados de relacionamento com a empresa. @startuml class Clientes Clientes : + numCliente[] class Funcionarios Funcionarios : # Cargo class Pessoas Pessoas : + Nome[] Pessoas : # Endereço[] Pessoas : # Telefone[] Pessoas : # Foto[] Pessoas <|-- "Generalização" Clientes Pessoas <|-- "Generalização" Funcionarios
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
25 de 64
@enduml
Associação A Associação é uma relação entre classes que permite a definição de n atributos para n atributos sob uma determinada condição, comovam nota fiscal de uma loja. A nota fiscal pode conter n produtos e n tipo de produtos podem estar em n notas fiscais, porém, suas quantidades podem varias, sendo então uma condição específica para cada registro. @startuml 'left to right direction class "Nota Fiscal" as NF class "Produtos" as Prod NF NF NF NF
: : : :
+ + # #
númNotaFiscal[] dataEmissão[] produtos[] quantProd[]
Prod : + descrtProd[] Prod : + qteEstoque[] Prod : +preçoProd class Clientes Clientes : + numCliente[] Clientes --o NF NF o-- Prod @enduml
Diagrama de Classes para uma Veterinária @startuml title Classes Veterinária class CEP : CEP : CEP : CEP : CEP : CEP :
CEP + CEP[] + logradouro[] + CRUD() + Lista_Estados() + Lista_Cidades() + Lista_Bairros()
class Estado Estado : + Estado[] Estado : + CRUD() class Cidade Cidade : + Cidade[] Cidade : + CRUD() class Bairro
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
26 de 64
Bairro : + Bairro[] Bairro : + CRUD() class Pessoa Pessoa : - nome[] : string Pessoa : - CEP[] : string Pessoa : - telefone[] : string Pessoa : - email[] : string Pessoa : + animal[] : int Pessoa : + Função : int Pessoa : + registaCliData() : int Pessoa : + CRUD() Pessoa : + Lista_Funções() Pessoa : + Lista_Animais() Pessoa : + Lista_CEP() class Animal Animal : - nome[] : string Animal : - idade[] : number Animal : - sexo[] : char Animal : + Espécie[] : int Animal : + FiloAnimal: int Animal : + CRUD() class Espécie Espécie : + nome[] : string Espécie : + CRUD() class FiloAnimal FiloAnimal : + nome[] : string FiloAnimal : + CRUD() class Tratamento Tratamento : - nome[] : string Tratamento : + Animal : int Tratamento : - dataInicio[] : date Tratamento : - dataFinal[] : date Tratamento : + CRUD() Tratamento : + Lista_Animais() class Consulta Consulta : - historico[] : string Consulta : - Função[] : int Consulta : - Animal[] : int Consulta : - data[] : date Consulta : - Tratamento[] : int Consulta : - Exame[] : int Consulta : + Lista_Animais() Consulta : + Lista_Exames() class Função Função : - nome[] : string (Veterinário, \nSecretária, Cliente, \nTratador...) Função : - descritivo[] : string Função : + CRUD() class Exame Exame Exame Exame
Exame : + nome[] : string : + custo[] : string : + CRUD() : + Lista_Insumos()
class Insumos Insumos : + nome[] : string Insumos : + fabricante[] : string Insumos : + qte[] : numero
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
27 de 64
Insumos : + validade[] : date Insumos : + posição_estoque[] : string class PessAnim PessAnim : - Pessoa[] : int PessAnim : - Animal[] : int PessAnim : + Lista_Pessoas() PessAnim : + Lista_Animais() class Veterinário Veterinário : - Nome[] : string Pessoa "*" *-left- "*" PessAnim : possui PessAnim "*" -- "*" Animal : pertence Animal *-- Espécie : pertence Animal "1" -right- "*" Tratamento : realiza Animal *-left- FiloAnimal Tratamento "1" -- "*" Consulta : tem Veterinário "*" *-- "*" Pessoa Pessoa "1" *-- "1" Função Consulta "1" -right- "*" Exame Exame "*" -right- "*" Insumos CEP "*" *-- "1" Estado CEP "*" *-- "1" Cidade CEP "*" *-- "1" Bairro Pessoa "*" o-- "1" CEP @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
28 de 64
Diagrama de Objetos
O Diagrama de Objetos é um complemento ao de Classes. Enquanto o primeiro exibe os atributos (valores) e métodos (ações) que aquele objeto trata, ignorando os outros valores (atributos) que compõem o software, o Diagrama de Objetos exibe a totalidade de atributos (valores) que pertencem ao objeto. Este diagrama permite o programador fazer a ponte com o Modelo de Entidade Relacionamento (MER) que pertence ao desenvolvimento do Banco de Dados por sua semelhança. @startuml left to right direction object Aluno object Série object Disciplinas object Professor object AnoAtivo object Sala @enduml
Para se demonstrar os dados hipotéticos ou dados tipo do objeto. Aluno : Aluno : Aluno : Aluno : Aluno : aula de
id = "1101" Nome = "Cunegundes Jacinto Leite Aquino Rego" Número = "10" ano = "2016" histórico = "A aluna é problemática...\nEm Março ele fez a Objetos!"
E para se demonstrar os relacionamentos. Série --|> Sala Sala o-- Aluno Série --* Aluno : Composição Série --* Disciplinas Disciplinas --|> Professor AnoAtivo --|> Série
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
29 de 64
AnoAtivo --|> Aluno
E de forma completa: @startuml object Aluno object Série object Disciplinas object Professor object AnoAtivo object Sala Série --|> Sala Sala o-- Aluno Série --* Aluno : Composição Série --* Disciplinas Disciplinas --|> Professor AnoAtivo --|> Série AnoAtivo --|> Aluno
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
30 de 64
Aluno : id = "1101" Aluno : Nome = "Cunegundes Jacinto Leite Aquino Rego" Aluno : Número = "10" Aluno : ano = "2016" Aluno : histórico = "A aluna é problemática...\nEm Março ele fez a aula de Objetos!" Série Série Série Série
: : : :
id = "3" nome = "Terceiro Ano" sala_id = "38" ano = "2016"
Sala : id = "38" Sala : nome = "38" Sala : capacidade = "50" AnoAtivo : id = "19" AnoAtivo : AnoAtivo = "2016" AnoAtivo : histórico = "Ano do Impeachment!\nCoordenação: Profa. Silvia" Disciplinas : id = "18" Disciplinas : nome = "História" Disciplinas : ementa = "Contar história!!!" Professor : id = "12" Professor : nome = "Erwin Alexander Uhlmann" @enduml
Diagrama de Sequência O Diagrama de Sequência é uma forma esquemática de representar a ordem com que partes do sistema trocam mensagens entre si e acontecem, e tem por objetivo demonstrar o comportamento dos objetos em um determinado contexto, ou seja, uma parte específica como um Caso de Uso. Os diagrama de Casos de Uso e de Classe podem servir de suporte para sua construção, assim como após sua elaboração deve ser verificado nestes diagramas a coerência do projeto. De forma genérica a interação entre os objetos pode ser representada pelo Diagrama de Sequência e pelo de Colaboração, sendo:
Diagrama de Sequência Enfatiza o tempo em que ocorrem as ações; Mostra os objetos e interações durante sua linha de vida (tempo de atividade).
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
31 de 64
Diagrama de Colaboração Enfatiza o relacionamento entre os objetos. @startuml ObjetoA -> ObjetoB : Requisição activate ObjetoA activate ObjetoB ObjetoB -> ObjetoB : Auto delegação ObjetoB --> ObjetoA : Resposta deactivate ObjetoB ObjetoA ->> ObjetoB : Mensagem Assíncrona destroy ObjetoB ObjetoA ->> ObjetoA : Objeto ativo com resposta\n para objeto inativo em linha de vida deactivate ObjetoA @enduml
Exercício 1 : Grupos e Comunicações @startuml title Exercício 1 - Comunicação entre os participantes 'Existem várias formas de requisição e resposta group Mudando a ordem dos participantes Cliente -> Servidor: Requisição de Arquivo Servidor --> Cliente: Resposta em HTML end 'Forma dois group Mudando as requisições Cliente -> Servidor: Requisição de Arquivo Cliente <-- Servidor: Resposta em HTML end 'Forma assíncrona group Forma assíncrona Cliente ->> Servidor: Requisição Assíncrona de Arquivo Servidor ->> Cliente: Resposta Assíncrona em HTML end @enduml
Exercício 2 : Identificações e Ativações @startuml actor Usuário as U #blue participant Interface as I #88AAFF participant "Regras de Negócio"
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
32 de 64
as RDN #FFAA88 participant "Banco de Dados" as BD #88FFAA U -> I: Acesso ao sistema activate I I -> RDN: Verificação de conexão com o BD activate RDN RDN -> BD: Requisição de dados activate BD BD --> RDN: Banco de dados Ativo deactivate BD RDN --> I: Resposta em HTML deactivate RDN I --> U: Págin ade login deactivate I @enduml
Exercício 3 : Completo
@startuml title Exemplo 1 actor Usuário as U #blue participant Interface as I #88AAFF participant "Regras de Negócio" as RDN #FFAA88 participant "Banco de Dados" as BD #88FFAA autonumber " [00] " group Requisições U -> I: Acesso ao sistema activate I note left: Este é o usuário I -> RDN: Verificação de conexão com o BD activate RDN note left: Este é o computador RDN -> BD: Requisição de dados note left: Esta é a programação alt Resposta OK do BD
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
33 de 64
activate BD BD --> RDN: Banco de dados Ativo deactivate BD note over BD: Este é o Banco de Dados RDN --> I: Resposta em HTML I --> U: Págin ade login
end == Caso não tenha conexão == group Condição não satisfeita else RDN --> RDN: Sem conexão com BD RDN --> I: Resposta em HTML: Sem conexão, retorne depois! deactivate RDN I --> U: Popup: OOps... Volte mais tarde! deactivate I end @enduml
Sistema de Login
1. 2. 3. 4. 5. 6. 7. 8. 9.
@startuml title Login e senha actor Usuario Usuario -> LoginSenha : acessa LoginSenha -> Programacao : email e senha activate Programacao Programacao -> BD : email activate BD BD --> Programacao : ok ou falha
10.activate Programacao 11.alt email ok 12. Programacao -> BD : senha daquele email 13. deactivate Programacao 14. BD --> Programacao : ok ou falha 15. deactivate BD 16. Programacao -> ValidaSessao : caso ok
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
34 de 64
17. 18. 19. 20. 21. 22. 23. 24.
activate ValidaSessao ValidaSessao -> PaginaProtegida ValidaSessao -> ValidaSessao PaginaProtegida -> Logout activate Logout destroy ValidaSessao deactivate Logout deactivate ValidaSessao
25. Logout -> LoginSenha 26. ValidaSessao --> LoginSenha : caso expirado 27.else 28. Programacao --> LoginSenha : email ou senha invalidos 29. deactivate Programacao 30.@enduml
Diagrama de Atividades @startuml (*) --> "Inserir email e senha" if "email e senha preenchidos?" then -->[sim] "Verificar em BD" if "email existe?" then -->[sim] "verificar senha" if "senha certa?" then --> === AP1 === -->[sim] "criar sessão" --> === AP2 === === AP1 === --> "encaminhar para página protegida" --> === AP2 === === AP1 === --> "revalidar sessão" --> === AP2 === --> (*) else --> [não]"Inserir email e senha" end if else --> [não] "Inserir email e senha" end if else --> [não] "Inserir email e senha" end if @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
35 de 64
Diagrama de Componentes Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
36 de 64
O Diagrama de Pacotes é o diagrama que demonstra a organização de um sistema, desde sua arquitetura como sua interface, sua programação e seu Banco de Dados, e outras partes, como também os componentes de um sistema, os servidores, componentes de uma rede e outros sistemas e sub-sistemas. Este tipo de diagrama é também muito útil para desenvolver projetos com a visão topdown, ou seja, a partir da visão geral do projeto para decompor em partes menores.
@startuml [Interface] --> [Programação] [Programação] --> [Banco de Dados] [Banco de Dados] --> [Programação] [Programação] --> [Interface] @enduml
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
37 de 64
Modelagem de Processos de Negócios - BPM
Texto na íntegra de: http://blog.iprocess.com.br/2012/11/um-guia-para-iniciar-estudosem-bpmn-i-atividades-e-sequencia/
Um guia para iniciar estudos em BPMN (I): Atividades e sequência | Blog da iProcess BPMN (Business Process Model and Notation) é uma notação gráfica que tem por objetivo prover uma gramática de símbolos para mapear, de maneira padrão, todos os processos de negócio de uma organização. Desde sua disponibilização formal em 2004, BPMN tem sido amplamente utilizada em organizações do mundo inteiro. Atualmente há uma grande oferta de ferramentas de mapeamento de processos(gratuitas e licenciadas) que oferecem suporte à notação. Devido à sua grande aceitação, BPMN está ajudando a disseminar conceitos relacionados a processos de negócio e é considerada hoje uma característica chave de qualquer iniciativa BPM. Dedicaremos os artigos semanais de novembro e dezembro para contribuir com o estudo progressivo dos elementos dede BPMN que compõem o nível 1 desta notação, utilizados para mapear processos em nível descritivo. Representando Processos com BPMN Em BPMN, um processo de negócio é representado através do encadeamento de eventos e atividades, ligados através de conectores que demonstram a sequência em que os mesmos são realizados. Além de eventos e atividades, outros elementos de controle de fluxo podem ser utilizados na modelagem para permitir a criação ou
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
38 de 64
unificação de fluxos paralelos que ocorram no decorrer de um mesmo processo de negócio. Processo de Compra de Refrigerante
Exemplo de um processo mapeado utilizando BPMN O grande potencial de BPMN para representação de processos está no fato de que ela propõe um conjunto simplificado de elementos (atividades, eventos, gateways, conectores e swimlanes), mas que podem ser derivados para atender situações específicas de negócio, de forma que a documentação de um processo em nível de negócio possa adquirir profundidade técnica à medida que é preparado para a implementação. Nota: A especificação BPMN está documentada em inglês e não existe uma tradução oficial para o português. A tradução neste e nos próximos artigos é livre por parte dos autores, e pode ser diferente entre bibliografias ou ferramentas que adotem esta notação. Para mais informações sobre a documentação oficial e completa consulte http://www.omg.org/bpmn. Atividades (Activities) Atividades representam um trabalho realizado em uma etapa do processo de negócio. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
39 de 64
As atividades podem ser de dois tipos: Tarefa (task) Sub-processo (subprocess) Tarefa (Task) A tarefa é a atividade de trabalho atômica. Ela representa uma ação no processo que pode ser executada por uma pessoa ou um sistema. Visualmente é representada como um retângulo com bordas arredondadas, contendo sua descrição dentro da área da caixa. Exemplos de atividades que podem ser representadas através de tarefas são: Avaliar documentos Calcular impostos Elaborar parecer técnico Elaborar proposta comercial Cadastrar operação BPMN sugere alguns símbolos que podem ser adicionados à tarefa para representar visualmente sua utilização:
Assim é possível distinguir visualmente que uma atividade é realizada por um usuário através do sistema se for simbolizada por uma Tarefa de usuário, enquanto uma tarefa Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
40 de 64
que pode ser executada automaticamente pelo sistema pode ser sinalizada como Tarefa automática.
Uma tarefa executada por uma pessoa (usuário) e uma tarefa executada automaticamente (serviço) Conector de Sequência de fluxo (Sequence flow) O principal objetivo no mapeamento de um processo com BPMN é representar a sequência em que as atividades acontecem desde o seu início até a sua conclusão. Em BPMN Method & Style (2ed), Bruce Silver esclarece que o propósito de BPMN é representar a lógica do processo. A lógica do processo é visualmente demonstrada através do fluxo criado pelos conectores de sequência.
No exemplo acima, o conector de sequência torna explícito que há uma sequência a ser realizada entre as atividades. A atividade “Digitalizar documento” só poderá ser realizada após a atividade “Receber documento” ser concluída. Da mesma forma, a atividade de “Arquivar documento” só poderá ser iniciada após o término da tarefa “Digitalizar documento”. O conector de fluxo de sequência é representado através de uma linha sólida com uma seta preenchida apontando para o destino (o próximo elemento do fluxo). Em um Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
41 de 64
processo de negócio, todos os elementos de fluxo precisam estar conectados uns aos outros através de um conector de sequência conforme a ordem em que devem ser realizados. É importante entender que, na interpretação de um processo BPMN, o conector de sequência implica que existe uma dependência entre as atividades conectadas, do tipo fim-início. Ou seja, a conexão significa que após a conclusão da atividade, a próxima atividade poderá ser iniciada.
Um guia para iniciar estudos em BPMN (II): Gateways | Blog da iProcess No artigo anterior, iniciamos o estudo da notação BPMN apresentando os elementos task e sequence flow, utilizados para representar a sequência lógica de atividades a serem executadas para a realização do processo. Neste artigo estudaremos um novo elemento de fluxo. Gateways são os elementos de BPMN responsáveis por controlar iterações do fluxo, criando caminhos alternativos ou paralelos no mapeamento do processo ou unificando fluxos para continuação em uma mesma sequência de atividades. Gateways são elementos chave na modelagem de processos de negócio, pois permitem descrever não apenas o “dia feliz” do processo, em que as atividades acontecem sempre da mesma maneira ou na mesma sequência, mas prever possíveis exceções conhecidas do negócio, ou beneficiar a duração do processo através da paralelização de atividades. O gateway é conectado ao fluxo através de setas de fluxo de sequência e é representado visualmente por um losango. O símbolo interno do losango identifica a interpretação lógica representada.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
42 de 64
Gateway exclusivo (Databased Exclusive Gateway) Representa uma condição de fluxo exclusiva, em que apenas um dos caminhos criados a partir do gateway será seguido, de acordo com uma informação a ser testada. Este gateway pode ser representado visualmente como o losango vazio ou com um marcador de “x”. Quando o processo em execução atingir este gateway, o processo deverá verificar a condição indicada, e apenas uma das saídas do gateway dará seguimento. Semanticamente, este gateway funciona como um “ou”, já que ou um ou outro caminho será seguido – nunca mais de um. Os conectores de sequência de saída deste gateway podem apresentar descrições que ajudem a identificar qual a condição para que o fluxo siga por aquele caminho. Além de realizar separação de fluxos, o gateway também pode unificar fluxos distintos em uma única sequência de atividades. Neste caso, o gateway exclusivo implica no entendimento que, dos caminhos que convergem a ele, o primeiro que chegar dará continuidade no fluxo do processo.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
43 de 64
No exemplo acima, o gateway “Resultado da avaliação” testará o resultado da atividade anterior. Se na execução da atividade “Avaliar artigo” o usuário aceitar o conteúdo, o fluxo seguirá pela saída superior “Conteúdo aceito”, e as atividades “Realizar revisão final do artigo” e “Publicar artigo” serão realizadas. Se o usuário rejeitar o conteúdo, o fluxo seguirá pela saída “Conteúdo rejeitado”, e apenas a atividade “Cancelar artigo” será realizada. Por fim, se o usuário optar por requerer ajustes, o fluxo seguirá a sequência “Requer ajustes”, iniciando a atividade “Ajustar artigo”. Ao terminá-la, note que o fluxo seguirá novamente para a atividade de “Avaliar artigo”. Ainda no exemplo acima, note a utilização do gateway exclusivo para convergir dois dos fluxos criados. Isto garante que a atividade “Comunicar partes interessadas” só aconteça depois que a tarefa “Publicar artigo” ou a tarefa “Cancelar artigo” for executada, de acordo com o fluxo iniciado pelo gateway anterior.
Gateway paralelo (Parallel Gateway) A paralelização de trabalho em um diagrama BPMN é possível com a utilização do gateway paralelo. Este gateway representa a divisão de um fluxo em dois ou mais que serão executados paralelamente. Todos os caminhos que saem deste gateway são executados. Este gateway é representado visualmente como o losango com um marcador de “+” dentro dele. Semanticamente, este gateway funciona como um “e”, já que um e outro caminho serão executados. Quando este gateway é utilizado para realizar a convergência de fluxos, ele garantirá que todos os fluxos paralelos sejam concluídos, chegando até ele antes de dar continuidade ao fluxo de saída.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
44 de 64
No exemplo acima, o primeiro gateway paralelo produz dois fluxos que serão executados paralelamente. Enquanto a tarefa “Escrever artigo” é realizada, as atividades “Selecionar imagens” e “Tratar imagens” também podem ser executadas. Ainda no exemplo acima, o segundo gateway faz a convergência dos fluxos, garantindo que a tarefa “Realizar diagramação” só seja executada depois que “Escrever artigo” e “Tratar imagens” tenham sido finalizadas.
Gateway inclusivo (Databased Inclusive Gateway) Representa uma condição de fluxo inclusiva, em que pode haver uma combinação dos caminhos criados a partir do gateway, de acordo com uma informação a ser verificada. Este gateway é representado visualmente como o losango com um marcador de círculo dentro dele. Quando o processo em execução atingir este gateway, o processo deverá avaliar a condição relacionada, e uma ou mais das saídas do gateway poderão dar seguimento. Semanticamente, este gateway funciona como um “e/ou”, já que o caminho a ser seguido pode ser um e/ou outro, de acordo com as informações e a lógica do negócio. Quando este gateway é utilizado para realizar a convergência de fluxos, ele garantirá que todos os fluxos que estiverem em execução sejam concluídos, chegando até ele antes de dar continuidade à sequência de atividades. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
45 de 64
No exemplo acima, o gateway “Documentos necessários” testará o resultado da atividade anterior. Se na execução da atividade “Identificar documentação necessária” o usuário identificar a necessidade de um, dois, ou três dos documentos requeridos, cada um dos fluxos será executado. Por exemplo, se para um processo em execução for identificada a necessidade da Negativa civil e Negativa criminal, mas não a de débitos, o processo seguirá pelas saídas “Negativa civil” e “Negativa criminal”, mas não pela “Certidão negativa de débitos”. Assim, as atividades “Anexar negativa civil” e “Anexar negativa criminal” deverão ser executadas. Em outro processo, pode ser possível que uma combinação diferente de documentos seja requerida. Ainda no exemplo acima, note a utilização do gateway inclusivo para convergir os fluxos criados. Isto garante que a atividade “Analisar validade dos documentos” só aconteça depois que todos os fluxos que forem iniciados pelo gateway anterior sejam executados, para então a atividade ser iniciada. No exemplo citado, a tarefa de analisar validade dos documentos só será iniciada depois que as tarefas “Anexar negativa civil” e “Anexar negativa criminal”, mas sem que ocorra a atividade “Anexar negativa de débitos”. Algumas coisas importantes que devem ser observadas ao utilizar gateways: •
Diferente dos diamantes dos tradicionais fluxogramas, os gateways em BPMN não são apenas pontos de divisão binária do fluxo. É possível (e muito mais
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
46 de 64
vantajoso!) utilizá-los para realizar testes mais complexos do que o tradicional “sim/ não”. Isto vale para todos os tipos de gateway nesta notação. •
Nos gateways exclusivo e inclusivo, onde o fluxo é direcionado com base em uma condição, a informação a ser validada (para identificar que fluxo o gateway deve seguir) já deve ter sido obtida anteriormente no processo.
•
Embora a notação não coloque isto como uma regra obrigatória, é sempre uma boa prática descrever, nos conectores de sequência que saem destes gateways com decisão, que valor resultante da condição deve ser verdadeiro para que o fluxo siga por aquele caminho. (Veja nos exemplos aplicados como os conectores de sequência que saem dos gateways exclusivo e inclusivo possuem descrições associadas às suas linhas.) Isto deixará o diagrama mais claro para a leitura dos que venham a consultá-lo futuramente!
BPMN 2.0 possui outros tipos de gateways, como os baseados em eventos, por exemplo. estes gateways, entretanto, são utilizados em casos mais especializados (a partir do nível 2 – analítico, de acordo com a classificação de Bruce Silver).
Um guia para iniciar estudos em BPMN (III): Eventos de Início e Fim | Blog da iProcess Este é o terceiro artigo de uma série dedicada ao estudo da notação BPMN básica, ou nível descritivo. No artigo anterior, descrevemos um importante elemento na representação de processos nesta notação, os gateways. Este artigo é dedicado ao esclarecimento de outro importante componente de fluxo em BPMN: os eventos. Eventos (Events) são elementos utilizados para representar a ocorrência de fatos em um processo.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
47 de 64
Eventos podem representar a espera de que um fato aconteça para iniciar/prosseguir a execução o processo ou então sinalizar que o processo produzirá a ocorrência de um fato durante ou ao término de sua execução. Os eventos são sinalizados no processo através de um círculo, e dependendo do ponto do processo onde ocorrem podem ser sinalizados de forma diferente: •
Eventos de início (Start events) marcam o ponto onde o processo inicia e são representados por um círculo de linha simples.
•
Eventos intermediários (Intermediate events) marcam ocorrência de eventos no decorrer do processo e são representados por um círculo de linha dupla.
•
Eventos de fim (End events) marcam o ponto onde o processo termina e são representados por um círculo de linha grossa.
Eventos que aguardam fatos e possuem uma causa são chamados “catch”. Eventos que produzem fatos e possuem um resultado são chamados “throw”. A causa ou resultado do evento é chamado “trigger” (gatilho) e sinalizado através de um símbolo dentro do elemento. Os tipos de gatilho variam de acordo com cada tipo de evento.
Evento de início (Start Event) O evento de início marca o ponto onde deve-se iniciar a leitura ou a execução de um processo.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
48 de 64
O evento de início será sempre do tipo catch, pois deve aguardar a ocorrência de um evento para realizar o disparo (início da execução) do processo. É recomendável que todo o processo tenha um evento de início para facilitar a leitura do diagrama, possibilitando a quem lê identificar por onde começa o fluxo de atividades. Os tipos de evento de início mais comuns são:
None
O processo é iniciado sem a definição de um fato específico que gere o seu início. Não possui símbolo.
Timer O processo é iniciado pela ocorrência de um fato temporal, como a chegada de uma data específica (ex. 01 de janeiro) ou relativa (ex. primeira terça-feira do mês). É simbolizado por um relógio.
Message O processo é iniciado com a chegada de uma comunicação de qualquer tipo (um documento, uma mensagem, um telefonema, etc). É simbolizado por um envelope branco (catch).
Conditional
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
49 de 64
O processo é iniciado quando uma determinada condição torna-se verdadeira. É simbolizado por um desenho de página com linhas representando as condições.
Evento de fim (End event) O evento de fim marca o término onde deve-se iniciar a execução de um processo. O evento de fim será sempre do tipo throw, marcando que o processo termina com a geração de um fato. É recomendável que todo o processo tenha ao menos um evento de fim. É possível entretanto simbolizar términos diferentes para o processo usando mais de um evento de fim. Os tipos de evento de fim mais comuns são:
None
O processo termina sem gerar nenhum fato específico. Não possui símbolo.
Message O processo é finalizado com o envio de uma comunicação de qualquer tipo (um documento, uma mensagem, um telefonema, etc). É usado para iniciar um outro processo ou fornecer um resultado a uma comunicação começada no início ou decorrer do processo. É simbolizado por um envelope preto (throw).
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
50 de 64
Terminate
O processo é terminado finalizando por completo, mesmo que existam atividades em fluxos paralelos em execução. Caso existam atividades em execução quando um dos fluxos existentes atinja o evento de fim terminate, as tarefas pendentes são canceladas e o processo é dado como completamente finalizado. É simbolizado por um círculo preto preenchido. No exemplo acima, o evento de fim “Processo arquivado” é do tipo terminate. Se a tarefa “Arquivar processo” for concluída antes das atividades do fluxo paralelo, o processo chegará ao evento terminate e as tarefas que ainda estavam em execução serão interrompidas. Mas se a tarefa “Anexar documentos pendentes” terminar antes de “Arquivar processo”, o processo finalizará com todas as atividades executadas, pois diferente do evento terminate o evento do tipo none não interrompe a execução de atividades no fluxo paralelo. Embora o uso de eventos de início e fim não sejam obrigatórios, são considerados uma boa prática, fundamental para a obtenção de um processo bem mapeado, claro e legível a todos os participantes do processo. Há porém uma regra na especificação que deve ser observada: se for utilizado um evento de início no processo, deve
obrigatoriamente haver ao menos um evento de
fim. Da mesma forma, se for adicionado ao mapeamento do processo um evento de fim, então o processo deve obrigatoriamente possuir ao menos um evento de início. Existem outros gatilhos para eventos de início e de fim do processo. Estes apresentados, porém, são os mais comumente utilizados e que compõem o nível de componentes do nível descritivo da notação BPMN. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
51 de 64
Um guia para iniciar estudos em BPMN (IV): Eventos Intermediários | Blog da iProcess No artigo anterior iniciamos o estudo dos eventos, detalhando os principais tipos de gatilhos para eventos de início e fim de processo. O evento intermediário (Intermediate event) sinaliza um ponto no decorrer do processo no qual é previsto que um fato irá ocorrer. Eventos intermediários podem ser tanto do tipo catch (aguardam a ocorrência do fato para que o processo continue) quando do tipo throw (geram a ocorrência do fato e dão continuidade ao processo). Em geral os eventos intermediários são conectados ao processo através de conectores de fluxo de sequência, dando o contexto de que ocorrem durante o processo. Entretanto, um evento intermediário também pode ser definido para ocorrer durante uma tarefa tarefa específica. Neste caso, o evento intermediário é anexado à borda da atividade, como mostrado em alguns exemplos abaixo. Os tipos de evento intermediário mais comuns são:
Tempo ou Prazo (Timer) Utilizado para representar um fato relacionado a uma condição temporal, como uma data específica (ex. 01 de janeiro), uma data relativa (próxima terça-feira), um intervalo de tempo (em sete dias) ou uma situação de espera de tempo. O evento de timer é simbolizado por um relógio. Quando utilizado no fluxo do processo, o evento intermediário de timer representa que o processo deverá parar naquele ponto do processo e aguardar que a condição de tempo se torne verdadeira. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
52 de 64
Neste exemplo, quando a tarefa “Preparar viagem” for fi n a l i z a d a , o p r o c e s s o realizará uma pausa aguardando a data de início da viagem. Só então o processo continuará, iniciando a tarefa “Realizar viagem”. Quando utilizado na borda de uma atividade, o evento intermediário de timer representa que que, enquanto a atividade estiver em execução, o evento poderá acontecer, e neste caso, o fluxo desenhado a partir do evento será executado. Neste caso, o evento intermediário poderá ser de dois tipos: Timer interrupting Se o evento ocorrer enquanto a atividade estava sendo executada, ela será interrompida, e o fluxo seguirá pelo conector que se origina no evento. A borda do evento é dupla e lisa. N o exem plo ao lado, se a atividade “Confirmar recebimento de mercadorias” for concluída antes da data de entrega prevista, o processo seguirá sua execução pelo fluxo normal do processo. Entretanto, se a data de entrega prevista for atingida e o recebimento das mercadorias não tiver sido confirmado, a tarefa é automaticamente cancelada e o fluxo que sai do evento de timer é disparado, dando início à atividade “Cancelar o pedido”. A atividade de “Confirmar recebimento de mercadorias” não poderá mais ser realizada pois foi interrompida.
Timer non-interrupting Se o evento ocorrer enquanto a atividade estava sendo executada, um fluxo paralelo será iniciado a partir do conector que se origina no evento, mas a tarefa permanece aguardando a sua execução. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
53 de 64
A borda do evento é dupla e tracejada. No exemplo ao lado, se o após dois dias úteis a tarefa “Avaliar pedido” ainda não tiver sido finalizada, o fluxo iniciado no evento é disparado, iniciando a tarefa “Receber aviso de atraso na avaliação”. A atividade de avaliar pedido, entretanto, poderá ser realizada normalmente, dando sequência ao fluxo normal do processo. Se a tarefa “Avaliar pedido” for finalizada antes da ocorrência dos dois dias úteis, então a atividade “Receber aviso de atraso na avaliação” não acontecerá.
Condicional (Conditional) Utilizado para representar um f at o relacionado a uma condição de negócio, pausando o processo até que ela se torne verdadeira. No exemplo ao lado, ações são compradas e então o processo aguarda até que a condição “Valor de venda atingido” se torne verdadeira, dando continuidade ao processo e iniciando a tarefa “Vender ações”. O evento do tipo conditional também pode ser conectado à borda de atividades como demonstrado anteriormente no tipo timer, podendo ser interrupting ou non-interrupting. Neste caso, o evento será acionado quando a condição de negócio associada se torne verdadeira.
Mensagem (Message)
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
54 de 64
Eventos intermediários de tipo message são utilizados para demonstrar um ponto do processo onde ocorre uma comunicação com um outro processo ou agente externo. O evento de “throw message” tem como símbolo um envelope preto e sinaliza o envio da comunicação, enquanto o evento do tipo “catch message” tem como símbolo um envelope branco e sinaliza o recebimento da mesma. No exemplo acima, o Processo de Logística de Treinamentos prevê uma atividade para “Alugar sala de treinamento”. Após alugar a sala, o processo aguarda uma “Comunicação do número de Participantes”. Quando esta comunicação for recebida, a próxima atividade poderá ser iniciada, providenciando cadeiras e mesas para os participantes do treinamento cujas inscrições foram confirmadas.
Este exemplo apresenta o Processo de Inscrições de Treinamento, no qual há uma tarefa para receber as fichas de inscrição e então uma atividade para “Verificar inscrições pagas”. Quando as inscrições pagas forem verificadas, o processo poderá comunicar o número de participantes que estão inscritos, enviando uma mensagem (que será recebida no processo demonstrado anteriormente, no evento com o mesmo nome). Após, o processo segue, iniciando a tarefa de “Providenciar impressão dos certificados”. A identificação de que a mensagem enviada por um processo é a mesma recebida em outro processo deve ser explicitada utilizando-se a mesma descrição para o elemento. É possível ainda demonstrar visualmente esta comunicação, colocando-se os dois processos em um mesmo diagrama BPMN e apresentando como esta mensagem flui de um processo para o outro. Neste caso, utiliza-se um conector especial para demonstrar Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
55 de 64
essa ligação entre processos através da troca de mensagens (envio e recebimento): o conector de fluxo de mensagem (message flow). O conector de fluxo de mensagem pode ser usado apenas para conectar elementos de envio e recebimento de mensagem, e caracteriza-se por uma linha tracejada com uma seta vazada apontando para o destino da mensagem.
É importante ressaltar que para o BPMN, uma comunicação é realizada sempre para fora do processo, nunca entre eventos de mensagem de um mesmo processo. O evento do tipo mensagem também pode ser utilizado à borda de atividades como demonstrado anteriormente no tipo timer, podendo ser interrupting ou non-interrupting. Neste caso, o evento será sempre “catch”, aguardando a chegada de uma mensagem, e será acionado se a mensagem for recebida enquanto a atividade estiver sendo executada.
Ligação (Link) Eventos intermediários de link representam uma ligação entre pontos distantes de um mesmo do processo.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
56 de 64
Este elemento é utilizado frequentemente em processos cujo número de atividades é muito grande e há pontos do processo que estão visualmente distantes ou bloqueados. Assim, para evitar a sobreposição de conectores de fluxo de sequência, pode-se utilizar este evento, criando uma “ponte virtual” entre pontas do fluxo do processo. O evento de “throw” link tem como símbolo uma seta preta e sinaliza a ponta de origem da ligação, enquando o evento do tipo “catch” tem como símbolo uma seta branca e sinaliza o destino da mesma.
O exemplo acima apresenta um exemplo de uso de eventos de ligação (link). Observe que há dois eventos de ligação com o mesmo nome: “Continuar negociação”. O primeiro tem a seta preta, indicando a origem da ligação, e o segundo a seta branca, indicando o destino da ligação. Com isso, a leitura que se faz deste diagrama é de que após a realização da atividade “Verificar condições de férias” o processo dá sequência ao fluxo iniciando a tarefa “Avaliar solicitação de férias”. Para entender melhor o uso de eventos de mensagem e link, leia também estes artigos:
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
57 de 64
BPMN: Diferenças entre eventos de Link, Message e Signal BPMN: Modelando corretamente o fluxo de sequência de atividades
Um guia para iniciar estudos em BPMN (V): Subprocessos | Blog da iProcess Retornando ao tema Atividades (Activities), em nossa série de artigos dedicados ao BPMN Nível 1, há um segundo tipo deste elemento além das tarefas (tasks): são os subprocessos. Tarefas que em conjunto possuam um propósito específico dentro de um processo de negócio podem ser abstraídas em uma outra unidade de processo e representadas no processo maior por um único objeto do tipo atividade, denominado Subprocesso. Subprocessos são representados visualmente como retângulos com bordas arredondadas (como as tarefas), porém apresentam um símbolo [+] na base inferior implicando no entendimento que esta atividade contém um conjunto de tarefas. Subprocessos são conectados ao fluxo do processo da mesma forma que as outras atividades, através de conectores de fluxo de sequência. No exemplo acima, a atividade “Aprovação de exceções de negócio” é um subprocesso, que abstrai um conjunto de atividades cujo propósito é avaliar uma Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
58 de 64
exceção de negócio (por exemplo, crédito para um cliente antigo mesmo que tenha situação financeira negativa) para então dar continuidade à concessão do crédito se esta exceção for autorizada. Abaixo tem-se um exemplo de detalhamento das atividades deste subprocesso.
Em geral, o fluxo que compõe o subprocesso é mapeado em um diagrama separado. Algumas ferramentas permitem criar vínculo entre o diagrama do processo principal e o subprocesso, possibilitando a navegação de um para outro com um ou dois cliques de mouse. Se o processo que está sendo modelado possui muitas atividades e conexões, tornandoo difícil para a interpretação dos leitores, a utilização de subprocessos pode ser um excelente artificio para organizar o fluxo sem interferir diretamente na execução do Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
59 de 64
mesmo, possibilitando criar uma visão mais abstrata e objetiva das atividades que ocorrem no processo. Subprocessos também podem ser úteis para reunir partes de fluxos que podem ser repetidas em momentos distintos do processo, caracterizando reuso.
Um guia para iniciar estudos em BPMN (VI): Swimlanes e Artefatos | Blog da iProcess Este é o último artigo de uma série de seis postagens sobre a utilização dos elementos básicos da notação BPMN. Neste artigo, tratamos alguns elementos utilizados a nível de organização do diagrama do processo: swimlanes para atribuir visualmente responsabilidades sobre as atividades, e artefatos para agregar informações adicionais que possam contribuir com a compreensão da lógica do processo de negócio.
Swimlanes Swimlanes são os elementos de BPMN utilizados para organizar os processos de um diagrama, definindo o escopo de cada processo e possibilitando identificar os papéis responsáveis pela execução de cada atividade do processo. Estes elementos são definidos em uma estrutura semelhante a uma piscina (pool) e suas raias (lanes). Uma pool pode conter apenas um processo de negócio. Processos de negócio distintos devem estar contidos, cada um, em uma pool específica. Uma pool pode conter tantas lanes quantas forem necessárias para caracterizar os participantes envolvidos na realização das atividades do processo.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
60 de 64
A prática comum é desenhar as pools e suas lanes horizontalmente, mas a notação permite a representação vertical.
No exemplo acima, a pool contém todo o processo para conceder crédito. O nome do processo está na borda da pool, que é o retângulo inteiro contendo todo o “Processo de Concessão de Crédito”. Este processo contém atividades que envolvem dois papéis: o Gerente da Conta e o Gerente do Produto. Cada é representado no processo através de uma lane da pool. O diagrama de processos utilizando pools e lanes facilita a identificação visual da troca de mãos da responsabilidade de agir em cada etapa do processo. As pools são nomeadas com a identificação do Processo (quando o processo modelado está em nível de detalhe operacional) ou com a identificação do Participante (por exemplo, uma entidade externa que se envolve de alguma forma com o processo de negócio modelado em outra pool). No exemplo acima temos o exemplo de dois processos que se comunicam através de message flow. Observe que cada processo está contido em uma pool. Uma pool pode conter apenas um processo de negócio. Processos de negócio distintos devem estar contidos, cada um, em uma pool específica. A interação entre processos se dá por comunicação, utilizando-se o conector de message flow.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
61 de 64
Em alguns casos, pools podem não detalhar o seu conteúdo, mas figurar em um diagrama apenas como um apontamento visual de que aquele processo existe no contexto de negócio no qual um processo comunica-se com outros processos ou entidades. Nestes casos, chamamos as pools não detalhadas de collapsed ou black box (caixa preta).
No exemplo acima, o mesmo processo agora é apresentado em um diagrama que demonstra a comunicação do Processo de Concessão de Crédito com os participantes externos Cliente e SERASA. Estes participantes também possuem seus processos, porém o detalhamento das atividades realizadas em cada um é transparente para o Processo de Concessão de Crédito. Por este motivo, estes participantes são representados no processo como pools black box. Observe que a comunicação entre os processos (ou do processo modelado com os outros processos/participantes) é sempre representada através do conector de message flow. Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
62 de 64
Artefatos (Artifacts) Além dos elementos de fluxo (atividades, gateways e eventos), dos elementos conectores (fluxo de sequência e fluxo de mensagem) e dos elementos organizacionais (swimlanes), BPMN oferece elementos adicionais para sinalização visual do processo mas que não influenciam no fluxo do processo. São elementos de anotações, que podem ser utilizados para adicionar informações complementares ao processo. O objeto de dados (data object) é um elemento que representa um conjunto de informações no contexto do processo, de uma atividade ou de uma troca de mãos (através do fluxo de sequência). É representado por uma página com a ponta dobrada. No exemplo, “Lista de alunos” é um objeto de dados que transita da tarefa “Verificar inscrições pagas” para “Providenciar impressão dos certificados”.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
63 de 64
O artefato de anotação de texto (annotation) é um elemento que pode ser utilizado para agregar comentários ao processo ou a um elemento. É representado por uma área de texto marcada com a borda lateral, e pode ou não estar conectado a elementos do diagrama. No exemplo, há uma anotação na tarefa “Preparar cadeiras e mesas” que complementa o entendimento da tarefa. O artefato de grupo (group) é um elemento de anotação visual que pode ser utilizado para sinalizar grupos de atividades dando-lhes algum destaque. O grupo é uma simples anotação e não influencia no fluxo do processo, podendo inclusive ser desenhado cruzando lanes e pools. É representado por um retângulo com bordas arredondadas e linha tracejada. No exemplo, há um grupo denominado “Controle das Inscrições” destacando um grupo de elementos relacionados a este controle. Procure abstrair a existência do grupo e note que o fluxo do processo não se altera se este elemento for ou não utilizado. O conector de associação (association) é um conector específico para conectar os elementos de artefatos ao diagrama, e é representado por uma linha pontilhada, podendo ou não apresentar setas em “v” (ele é distinto do message flow, que tem a linha tracejada e ponta de triângulo). No exemplo, os artefatos de objeto de dados e anotação estão ligados ao fluxo do processo através de conectores de associação. Com este artigo, finalizamos nosso guia para iniciar estudos em BPMN.
Prof. Erwin Alexander Uhlmann - www.institutosiegen.com.br - Guarulhos, 2015
64 de 64