Tipo de Relacionamento das Entidades

De BIS Wiki
Ir para navegação Ir para pesquisar

As entidades do BIS (BISVO) se relacionam de forma a configurar os objetos que o sistema precisa. O tipo de relacionamento entre os objetos precisa ser definido claramente na cabeça do desenvolvedor pois essa definição afeta o funcionamento do sistema como um todo, desde a persistência no BISDAO, a validação no BISValidator e durante a confecção das telas pelo desenvolvedor. Evitando erros e BUGs por mal planejamento.


De modo geral, as telas do BIS (telas de cadastro por exemplo) tem a finalidade de manipular uma entidade por vez, por exemplo o cadastro de uma Pessoa. Essa entidade 'pessoa' (PersonVO) por sua vez se relacionará com outras entidades de forma a coletar toda a informação necessária. Esses relacionamentos são divididos em dois tipos:

Composição

Quando o relacionamento é de composição, indica que a segunda entidade NÃO EXISTE sozinha. Isso quer dizer que se a entidade PersonVO deixar de existir, for excluída por exemplo, a segunda entidade também será excluída do sistema.

Um exemplo de composição é a entidade de Endereço (PersonAddressVO). Uma pessoa pode ter vários endereços, esses endereços compõem as informações da pessoa (PersonVO). Porém, se a pessoa for excluída os endereços nada ficam fazendo no sistema, logo devem ser excluídas também.

Números de Composição

  • One to One - Uma composição pode ser feita de um objeto para um objeto, como por exemplo a relação entre a entidade NFVO e a NFeRecipientVO. Cada nota tem 1 e apenas 1 destinatário.
  • One to Many - Uma composição também pode ser feita entre um objeto e uma coleção de outros objetos, como por exemplo a relação entre a entidade ItemVO e a ItemCodeVO. Indicando que cada item pode ter uma coleção de códigos.
  • Many to One e Many to Many - Para estes casos eu acredito não existir um exemplo de composição dentro do BIS, pois considerando que teríamos muitas entidades principais para 1 ou várias entidades dependentes. Teríamos uma maior dificuldade em gerenciar esses objetos, não me vem a cabeça nenhum exemplo que utilizaria essa combinação que não possa ser substituída por um relacionamento OneToOne ou OneToMany de forma a simplificar o sistema.


Associação

Em um relacionamento de associação (também chamado de agregação na literatura) indica que duas entidades se relacionam por algum motivo mas cada uma existe independente da outra no sistema. Mesmo que uma seja excluída, a outra permanecerá no sistema de forma independente.

Seguindo o mesmo exemplo da pessoa: uma pessoa pode ser associada à um convênio e vendas no sistema, porém se a pessoa for excluída do sistema o convênio continua existindo sem problemas. Bem como o contrário, caso o convênio seja excluído, a pessoa continuará existindo.

Números de Associação

  • One to One - Indica um simples relacionamento entre as duas entidades. Este tipo de relacionamento "proíbe" que qualquer um dos objetos se relacione com outros do mesmo tipo. No BIS um relacionamento muito comum deste tipo são os relacionamentos com o FileVO. Isso porque o BISKernel cuida dos arquivos, mas cada arquivo tem apenas um dono, não podendo ser reaproveitado. (Se o BISKernel não cuidasse do arquivo, se ele fosse persistido em cadeia, seria uma composição e não associação). Tirando este exemplo do arquivo, não pude encontrar nenhuma outra associação de 1:1.
  • One to Many - Permite que vários objetos sejam associados à outra entidade, como por exemplo CFOPVO e CFOPCorrelationVO. Esse relacionamento permite que o mesmo CFOPVO esteja associado a múltiplos correlacionamentos.
  • Many to One - Indica que várias entidades podem ser associadas a outra entidade, como por exemplo o Item (ItemVO) e seu tipo (ItemTypeVO).
  • Many to Many - Estes relacionamentos implicam em um relacionamento em que vários objetos podem relacionar com vários objetos ao mesmo tempo. Por exemplo a entidade NaturezaReceitaVO ao se relacionar com o COFINSVO.