PREVIOUS ABDOMINAL SURGERY
DISCUSSION
Para el desarrollo de la aplicación Web Móvil (que cumpla con las características de las aplicaciones de HM) se optó por una solución simple como es el uso de Servlets65
y JSPs66 (Java Server Pages). Los Servlets son los encargados de resolver los
requerimientos (Web) realizados por los usuarios mediante un Browser, mientras que las JSPs permiten la visualización de la información adecuada.
Este tipo de aplicación (Web Móvil) requiere que los usuarios envíen un requerimiento al servidor para obtener la información del Punto de Interés. Para realizar esto se puede, por ejemplo, leer un código de barra que tenga la URL correspondiente al Punto de Interés y recibir como respuesta la información del mismo. La ubicación del usuario se actualiza cada vez que lee un código de barra. Es decir, hasta que no se lee un código de barra no se puede determinar donde se encuentra el usuario. Esta forma de posicionamiento es imprecisa cuando, por ejemplo, el usuario realiza una navegación en el mundo real ya que no se lo puede asistir mientras realiza el camino, a menos que lea un código de barra intermedio.
La aplicación Web Móvil se desarrolló para correr sobre un servidor Tomcat67(versión
5.5), por simplicidad se optó por crear un Servlet por cada requerimiento diferente que realiza el usuario. Esto facilita la resolución del requerimiento ya que, según la URL del requerimiento, es el Servlet que se ejecuta. Cada Servlet es el punto de entrada a la aplicación, luego se le pasa el control al Dispatcher, el cual arma el DTO (Data Transfer Object) correspondiente y luego redirecciona el control a la JSP adecuada. Los DTOs representan clases que no tienen comportamiento sino que definen variables con setters y getters. Estas clases sirven para el intercambio de información entre los diferentes componentes de la aplicación.
Las JSPs toman los datos del DTO para generar la página que visualiza el usuario. Algunas JSPs le muestran al usuario sólo información, otras, imágenes de mapa. En la Figura 8.9 se pueden observar todos los Servlets creados para la aplicación (Web Móvil), todos extienden de la clase Servlet, la cual define el comportamiento común que deben tener los Servlets. Se pueden visualizar las cuatro JSPs que se crearon y los DTOs que se necesitaron especificar, también se puede observar en el diagrama la clase Dispatcher.
65 Página con información sobre Servlet:
http://www.oracle.com/technetwork/java/servlet-138661.html 66 Página con información sobre JSP:
http://www.oracle.com/technetwork/java/javaee/jsp/index.html 67 Página de Tomcat: http://tomcat.apache.org/
Figura 8.9: Clases creadas para la aplicación Web Móvil.
Veamos en detalle que función cumple cada Serlvet dentro de la aplicación:
Welcome, es el punto inicial de la aplicación y se encarga de crear todos
los datos necesarios para que la aplicación funcione correctamente. Este
Servlet le pasa el control al Dispatcher, éste arma el WelcomeViewDTO y redirecciona el control a la JSPWelcomeView.
InFrontOf, es invocado cada vez que el usuario está frente a un Punto de
Interés y lee, por ejemplo, un código de barra. Este Servlet busca la información del nuevo Punto de Interés (guardándolo en el historial del usuario) y luego le pasa el control al Dispatcher que se encarga de armar el
DTO correspondiente según la vista actual del usuario.
o Si el usuario estaba en la vista de información, el Dispatcher arma
un DigitalViewDTO y redirecciona el control a la JSP InFrontOfDigitalView.
o Si el usuario estaba en la vista del mapa (sin un camino
establecido), el Dispatcher arma un PhysicalViewDTO y
redirecciona el control a la JSPInFrontOfPhyscialView.
o Si el usuario estaba en la vista del mapa (con un camino
establecido), el Dispatcher arma un TravelViewDTO y redirecciona el control a la JSPTravelView.
ChangeDigitalConcern, cuando el usuario cambia de concern digital, se
invoca este Servlet que busca la información del concern seleccionado (guardándolo en el historial del usuario) y le pasa el control al Dispatcher, el cual arma un DigitalViewDTO con la información del concern seleccionado y redirecciona el control a la JSPInFrontOfDigitalView.
DigitalLink, es invocado cuando el usuario selecciona un link digital, este Servlet busca la información del target (guardándolo en el historial del usuario) para luego pasarle el control al Dispatcher, que arma con esta
información un DigitalViewDTO y luego redirecciona a la JSP
InFrontOfDigitalView.
PlannedWalkingLink, se ejecuta cuando el usuario selecciona un link
caminable predefinido, este Servlet busca el target (guardándolo en el historial del usuario) y redirecciona el control al Dispatcher que arma un
TravelViewDTO e invoca a la JSPTravelView.
SuggestionWalkingLink, se ejecuta cuando el usuario selecciona un link
caminable derivado, este Servlet busca el target (guardándolo en el historial del usuario) y redirecciona el control al Dispatcher que arma un
TravelViewDTO e invoca a la JSPTravelView.
CancelTravel, cuando el usuario decide cancelar un camino, se ejecuta
este Servlet, dejando el Modelo del Usuario en un estado consistente y redirecciona el control al Dispatcher, este arma un PhysicalViewDTO con la información del Punto de Interés actual y luego pasa el control a la JSP
InFrontOfPhyscialView.
ChangeToInformationView, este Servlet es ejecutado cada vez que el
usuario decide pasar de la vista del mapa a la vista de información. Este
Servlet busca la contraparte digital y le pasa el control al Dispatcher que arma un DigitalViewDTO, con la información de la contraparte digital y luego redirecciona el control a la JSPInFrontOfDigitalView.
ChangeToMapView, este Servlet es ejecutado cada vez que el usuario
decide pasar de la vista de información al mapa. Este Servlet busca la contraparte física, y le pasa el control al Dispatcher que arma el mapa acorde a última información física que estuvo visualizando el usuario.
o Si el usuario tenía la vista del mapa sin un camino establecido, el
Dispatcher arma un PhysicalViewDTO, y redirecciona el control a la
JSPInFrontOfPhyscialView.
o Si el usuario tenía la vista del mapa con un camino establecido, el
Dispatcher arma un TravelViewDTO, y redirecciona el control a la
JSPTravelView.
El DigitalViewDTO contiene la información digital del Punto de Interés junto a sus links digitales y los concerns digitales del mismo. El PhysicalViewDTO contiene la información de un mapa con la posición actual del usuario, junto a los links caminables predefinidos y derivados. El TravelViewDTO contiene la información del camino que debe realizar el usuario junto a su posición actual.
Tanto PhysicalViewDTO como TravelViewDTO interactúan con la clase
GoogleStaticMapAPI (presentada en la Figura 8.3) para crear la imagen con el mapa que se le muestra al usuario. Además, TravelViewDTO interactúa con la clase
GoogleDirectionsAPI (presentada en la Figura 8.3) para realizar la búsqueda de caminos.
Se puede observar que la descripción realizada (de la aplicación Web Móvil) se define en forma general para cualquier aplicación que cumpla con las características de una aplicación de HM. Este tipo de aplicación está definida para permitir que cuando el usuario está en un Punto de Interés, visualice su información digital, sus links digitales y sus concerns digitales. Además, cuando está en un Punto de Interés puede visualizar un mapa junto a los links caminables predefinidos y derivados, permitiéndole navegar digitalmente, cambiar de concerns y navegar en el mundo real (seleccionar un link caminable y el sistema le calcula el camino al target, cuando llega al target se completa esta navegación).
La aplicación descripta en esta sección se usa como base para la derivación de cada una de las aplicaciones de Web Móvil que genera la herramienta. En este tipo de aplicación, se detecta que el usuario está en un Punto de Interés, por ejemplo, porque leyó un código de barra que representa una URL. A partir de la misma se hace un requerimiento al servidor y como resultado se obtiene una página con la información del Punto de Interés.