Na emula¸c˜ao do servi¸co de atendimento a emergˆencias, implementamos o comporta- mento a ser executado pelas diversas entidades no sistema atrav´es de a¸c˜oes. Dividimos o tratamento deste comportamento em duas partes: (a) no lado do cliente e (b) no lado do servidor. No cliente, as entidades possuem o comportamento de movimenta¸c˜ao e o processamento de eventos implementado. Desenvolvemos no prot´otipo os compor- tamentos dos componentes utilizando uma comunica¸c˜ao de forma ass´ıncrona (AJAX) atrav´es de trˆes principais conceitos: (a) a¸c˜oes ou comandos de execu¸c˜ao (Action), (b) tratadores de eventos (Handler ) e (c) tratadores de retorno (Callback ).
No DECS, cada a¸c˜ao ´e respons´avel por executar uma tarefa ou atividade e tratar sua resposta, caso haja alguma requisi¸c˜ao a ser enviada para o servidor remoto. Por exemplo, para carregar as entidades do sistema na interface do mapa, a a¸c˜ao respons´avel pela execu¸c˜ao desta tarefa solicita ao servidor remoto de dados a listagem de todas as entidades que devem ser renderizadas no mapa. Ao receber a listagem das entidades no formato XML, a a¸c˜ao processa a mensagem recebida de tal forma a possibilitar a leitura dos dados recebidos do servidor e a renderiza¸c˜ao das entidades na interface da mapa localizada no cliente. Uma vis˜ao geral das classes e interfaces presentes no sistema pode ser visualizada nas Figuras 5.10, 5.11 e 5.12.
No caso do servi¸co de contexto para emergˆencias, a cada requisi¸c˜ao e mudan¸ca de estado, o cliente Web recebe uma mensagem no formato XML. Esta mensagem cont´em os dados necess´arios para a execu¸c˜ao das atividades a serem empenhadas, como por
5.4. Detalhes de Implementa¸c˜ao 117
exemplo, a movimenta¸c˜ao da entidade m´ovel de um ponto a outro no mapa. Al´em da recep¸c˜ao dos dados vindos do servidor remoto, o cliente tamb´em envia informa¸c˜oes de perfil e contexto da entidade m´ovel localizada no mapa. Por exemplo, ao chegar em um destino, podendo ser o evento de emergˆencia ou marco fixo, o cliente Web envia para o servidor remoto de dados informa¸c˜oes para que o servidor possa determinar os pr´oximos passos a serem executados pelas entidades apresentadas no cliente Web. A Figura 5.11 apresenta as principais classes que fazem parte das a¸c˜oes de emergˆencia do servi¸co DECS.
Os tratadores de eventos ou Handlers s˜ao respons´aveis por tratar cliques de co- mandos efetuados pelo usu´ario. Estes tratadores podem acionar ou n˜ao a¸c˜oes definidas no sistema, como por exemplo, a atualiza¸c˜ao das entidades no mapa. Esta atualiza¸c˜ao exigir´a a execu¸c˜ao da a¸c˜ao respons´avel por requisitar a lista de entidades do servidor e processar a mensagem recebida do servidor. Al´em dos tratadores de comandos, exis- tem tamb´em os tratadores relacionados `a eventos presentes na interface do mapa. Estes tratadores tˆem como objetivo capturar eventos gerados pelo mapa e seus elementos. Exemplos de eventos no mapa incluem o clique na ´area do mapa para a cria¸c˜ao de um novo evento e o clique direto em uma entidade renderizada no mapa. A figura 5.10 apresenta as principais classes que comp˜oem os tratadores de eventos.
Os tratadores de retorno ou Callbacks s˜ao respons´aveis por tratar mensagens de retorno vindas do servidor remoto. Eles s˜ao utilizados em casos onde a l´ogica de processamento da mensagem recebida ´e um pouco mais complexa, exigindo uma separa¸c˜ao l´ogica entre a a¸c˜ao de envio de dados e o tratamento da resposta entre o cliente Web e o servidor remoto de dados. Neste caso, para cada a¸c˜ao de execu¸c˜ao existe um objeto que implementa a interface Action e um outro objeto que implementa a interface AsyncCallback. Ao criar o objeto respons´avel pela a¸c˜ao, informamos o objeto respons´avel pelo tratamento do retorno de dados do servidor remoto, passando assim a referˆencia dele para o objeto respons´avel pela a¸c˜ao.
5.4.3
Processamento de Mensagens em XML
Na comunica¸c˜ao entre o cliente o servidor remoto de dados, o DECS utiliza na requi- si¸c˜ao a passagem de parˆametros do tipo String e no retorno o envio de documentos no formato XML sobre a resposta HTTP. Para o processamento das mensagens enviadas do servidor para o cliente, utilizamos o processador de XML XMLParser dispon´ıvel no GWT para a leitura das propriedades de entidades representadas no documento. A partir da leitura do documento XML retornado, transferimos as propriedades encon- tradas no documento para objetos no cliente respons´aveis por representar cada uma
Figura 5.10. Diagrama resumido de classes do Sistema DECS relativo ao trata- mento de eventos.
das entidades. Estes objetos podem ser eventos gerais do sistema (EventMessage), eventos de emergˆencia (EmergencyEvent), usu´arios m´oveis e fixos. No tratamento das emergˆencias, por exemplo, cada um dos objetos (e.g., evento de emergˆencia, usu´ario m´ovel e marco fixo) est˜ao associados a uma a¸c˜ao de execu¸c˜ao, representados na classe AbstractEmergencyAction, conforme visualizado na Figura 5.11. Isto possibilita a busca pelo evento de emergˆencia corrente, usu´ario m´ovel respons´avel e marco fixo relacionado e mantˆem informa¸c˜oes de contexto atualizadas para cada a¸c˜ao em execu¸c˜ao.
Para a constru¸c˜ao de uma aplica¸c˜ao ub´ıqua qualquer utilizando o conjunto de tecnologias utilizadas pelo servi¸co DECS, ´e necess´aria a defini¸c˜ao das opera¸c˜oes tanto no lado cliente quanto no lado servidor. Devido ao fato de cada a¸c˜ao (Action) ou retorno (Callback ) possuir um objetivo claro e espec´ıfico, ´e necesss´ario que o desen- volvedor implemente seu comportamento, j´a que o tratamento de mensagens deve ser implementado de forma expl´ıcita na recep¸c˜ao dos dados vindos do servidor. Por ex- emplo, no caso do DECS, quando se espera a sele¸c˜ao de uma unidade m´ovel para o atendimento de um evento de emergˆencia, teremos duas situa¸c˜oes poss´ıveis. A primeira define um retorno de um identificador de uma unidade m´ovel para casos onde haja uma unidade m´ovel de emergˆencia dispon´ıvel e a segunda um retorno sem um nome definido. Sendo assim, caso haja um retorno bem sucedido, o tratamento da resposta da a¸c˜ao dever´a executar a pr´oxima a¸c˜ao que despachar´a a unidade m´ovel para o evento. Caso
5.4. Detalhes de Implementa¸c˜ao 119
Figura 5.11. Diagrama resumido de classes do Sistema DECS relativo `as a¸c˜oes de emergˆencia.
contr´ario, o tratamento da resposta deve notificar o servi¸co de contexto de emergˆen- cias de que n˜ao tratar´a o evento de emergˆencia neste momento, por exemplo, devido `a indisponibilidade das unidades m´oveis logadas no sistema naquele momento.