AthosRFID - EventManagerRFID

O EventManager é o módulo responsável por se comunicar diretamente com o leitor, ou seja, ele representa o leitor no sistema. A união de leitor + EventManagerRFID foi denominada de base. Este componente é também responsável por enviar os dados ao centralizador de informações. Para inicializar o Athos-RFID utiliza-se a classe AbstractFactoryReader que irá tentar criar um leitor e uma comunicação através do método createTagReader.
Primeiro o AbstractFactoryReader busca no arquivo XML (figura abaixo) e instancia o leitor utilizando a técnica de reflexão. Após o leitor ser instanciado o sistema busca também no arquivo XML qual a comunicação a ser instanciado e quais os seus parâmetros.
O sistema instancia o leitor, seta todos os parâmetros e invoca o método initComunication() localizado na interface ComunicationReqListener (Figura abaixo).

Quando o leitor é criado, por ser um ComunicationRespListener é enviado ao RandonManager pelo método addComunicationRespListener, também localizado no ComunicationReqListener. Por ter uma instância do leitor, assim que uma mensagem chega ao componente ComunicationRandom, repassa para o leitor usando o ComunicationRespListener. Isso garante que tanto a saída das mensagens do leitor para a comunicação, no caso de tentar enviar uma mensagem, como o inverso
Para este projeto foram contemplados os leitores Sunion e NBDE para RFID, ambos usando a comunicação serial e os leitores ComtacReader com a comunicação USB e o GertecReader com a comunicação ethernet. Para os leitores NBDE e Sunion, foi necessária a utilização de um conversor de serial RS 485 para o RS 232.
O GenericReader foi construído para a simulação de um leitor, como ele é apenas uma simulação, ele não é considerado nem como RFID e nem como leitor de código de barras e para ele a comunicação será a RandomComunication.
A Figura abaixo apresenta o diagrama de componentes que demonstra como os componentes estão interligados e realizam a comunicação entre eles.


O EventManagerRFID está dividido nos seguintes pacotes:
Na Raiz do projeto estão as classes com testes básicos do funcionamento de cada módulo.

  • modulos.cadastro – este pacote tem a responsabilidade de cadastrar todas as tags tanto no EventManagerRFID como no RFIDWebService. Assim, ao se cadastrar a tag, ela fica disponível para o sistema.

  • modulos.sincronizador - Módulo responsável por fazer a sincronia dos eventos ocorridos, que ainda não foram enviados ao web service.

  • persistência – Módulo responsável por fazer a persistência dos dados. Para o EventManagerRFID o “banco” utilizado foi o Prevayler (site oficial do Prevayler, mais informações sobre o Prevayler). A classe FacadePrevayler é responsável por persistir e buscar informações no banco. Todos os acessos devem ser feitos através desta classe.

  • persistencia.bens - pacote detentor de todos os beans, cada bean representa uma tabela para o banco de dados como também representa o objeto transitável entre as camadas.

  • rfid – Este pacote possui a classe que contém o máximo da abstração da base representada por: AbstractBaseRFID (a base contém o leitor, mais as tags válidas, as propriedades da base entre outras). A FactoryRFID_Device é uma fábrica de leitores, ela tem a responsabilidade de instanciar qualquer leitor, assim a cada leitor novo “plugado” no sistema, tem que introduzi-lo nesta fábrica. A interface IF_FactoryRFIDDevice deve ser implementada pelas factorys de dispositivos RFID.

  • rfid.base – sua única classe é BaseRFID representa uma base RFID com suas propriedades, cada base vai ser um objeto deste tipo.

  • rfid.device.tag - sua única classe é RFIDTag representa uma tag RFID com suas propriedades, cada tag vai ser um objeto deste tipo.

  • rfid.device.tagreader – Este pacote contém a classe que representa um leitor abstrato e a interface utilizada para escutar os eventos ocorridos no leitor.

  • rfid.device.tagreader.custom – Classe que contém os leitores. Cada leitor novo “plugado no sistema” terá que ser criado uma classe referente a ele neste pacote. A classe com o novo leitor terá que estender da classe AbstractTagReader e assim por conseqüência implementar os métodos do IF_TagReader.

  • rfid.exception - pacote que contém as classes responsáveis pelas possíveis exceções do sistema. Serial – Responsável por toda a comunicação serial entre o leitor e o EventManagerRFID. Todos os acessos ao leitor devem ser feitos através desta classe.

  • util – pacote que serve como um utilitário para todo o sistema. Neste pacote temos a classe que busca as propriedades da base no arquivo base.inf, a classe que realiza conversões de byte para hexadecimal, e a classe que copia arquivos fisicamente.

Qualquer dúvida ou sugestão sobre o projeto: silvio@reconcavotecnologia.org.br ou aziz@reconcavotecnologia.org.br