Ir al contenido principal

Venta en Gradas

Venta en Gradas fue el proyecto que me mantuvo ocupado (muy ocupado) durante el verano pasado. El objetivo era que los asistentes a un partido de fútbol pudieran realizar pedidos desde sus asientos en las gradas del Ramón Sánchez-Pizjuán.

Actualmente, varios operarios repartidos por las gradas, portan PDAs y mediante una interfaz sencilla e intuitiva realizan pedidos de productos asociados a una zona del estadio, una fila y un asiento. Simultáneamente se imprime un ticket-resguardo para el cliente (a través de una impresora portátil bluetooth que lleva cada operario) con estado pendiente, y un ticket análogo en la impresora de la barra más próxima. En ésta se prepara el pedido, que otro operario lleva a la Zona-Fila-Asiento indicados. En el momento de entregar el pedido, se realiza el intercambio de tickets, quedándose el cliente con el que tiene estado "entregado".

La arquitectura de la aplicación es la siguiente:


El software del cliente se desarrolló en .NET C#, y se usó una base de datos SQL Server Compact Edition v3.5. Se utilizaron componentes IntTheHand.Net para implementar la impresión por bluetooth en la impresora portátil. El canal de comunicación puede ser wifi, GPRS, HSDPA...

Para el servidor se desarrolló un Java Restlet que recoge los pedidos (XML), los inserta en una base de datos MySQL 5 (a través del framework Ibatis), y envía el pedido a la impresora de barra asociada. Si se produjera algún error (falta de papel, tapa de impresora abierta...), se recogería por el servidor, y se notificaría a la PDA correspondiente.

Por último se programó una aplicación web en PHP, que a través de consultas a la base de datos del servidor, ofrece al administrador todo tipo de estadísticas sobre las ventas (producto más vendido, partido en el que más se ha vendido,...).

Después del trabajo realizado, fue muy gratificante poder leer esto en la web del Sevilla F.C.. El pasado 28 de abril, pude leer en ABC el artículo Aperitivos Telemáticos donde vuelve a aparecer. Como comprenderéis, como "padre de la criatura", el orgullo es tremendo, y espero que pronto lo podamos usar en otros estadios y en todo tipo de espectáculos.

Comentarios

  1. Muy interesante. El otro día, estando en el RSP, pedí un perrito y una cocacola y pude comprobar que "tu" sistema funciona a las mil maravillas.

    ResponderEliminar
  2. Hola. Estaba leyendo tus posts y me ha surgido una duda: en este proyecto de Venta en Gradas comentas que usaste Sql Server CE 3.5 para la aplicación cliente, pero también cuentas (o yo lo entiendo así) que los datos de ésta los consumías y los enviabas desde/hacia el servidor usando un servicio web. Entonces, ¿es realmente necesario usar Sql Server CE?, ¿qué te aporta?. Quiero decir que si podías recoger XML's desde el servidor con todos los datos necesarios para la aplicación (artículos, precio, stock, ...) y guardarlos en un DataSet local realmente no veo necesario almacenar dichos datos de forma persistente, ya que la aplicación simplemente podría consumirlos cada vez que fuera iniciada y refrescarlos cada X tiempo.
    Si estuviésemos hablando de que esos datos son modificados en la aplicación cliente y luego hay que sincronizarlos con la BD del servidor o que se tratase de datos de gran volumen entonces tendría sentido, pero en el escenario que tú planteas no termino de ver la necesidad del Sql Server CE. ¿Tú qué piensas?.

    Salu2!

    ResponderEliminar
  3. Buenos días eccho, es bastante sencillo, se hizo así por varios motivos, pero el más importante sería este:

    - Tu me hablas de escenarios ideales, y créeme que un campo de fútbol con 40000 personas, dista mucho de serlo. Pueden darse periodos de falta de conectividad, y los pedidos no pueden irse al limbo. Es decir, en el momento de hacer el pedido, un hilo se encarga de enviarlo en segundo plano. Por tanto se puede seguir realizando otro pedido, y si el hilo envía el pedido con éxito, el pedido se guardará en la base de datos local como enviado, y se notificará el éxito de la operación por pantalla. Si por el contrario, no se ha podido enviar (falta de conectividad), el pedido se guardará como no enviado, y se notificará, de manera que el operario pueda recuperarlo y reenviarlo... hay más casuística, pero creo que con esto ya se entiende.

    Un saludo.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Lenguajes: Pasado, Presente y Futuro

Escribo este post al hilo del artículo que he leido en dosideas.com. En él, se habla de las habilidades que debería tener un programador para tener un currículum relevante en los próximos cinco años: 1. Uno de los "3 Grandes" (Java, .NET, PHP) 2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications) 3. Desarrollo web 4. Servicios web 5. Habilidades humanas 6. Un lenguaje de programación dinámico y/o funcional 7. Metodologías ágiles 8. Conocimiento de dominio 9. "Higiene" de desarrollo 10. Desarrollo móvil A partir de este artículo, estuve debatiendo con algunos compañeros y saqué algunas conclusiones que quiero plasmar aquí. Pienso que el artículo es un poco mejorable, dada la arbitrariedad con la que se han escogido los conocimientos a adquirir. De hecho, muchas de esas habilidades hay que tenerlas en el presente (yo cumpliría de 9 a 10). Me voy a centrar en el punto 1, uno de los "3 Grandes" (Java, .NET, PHP). Antes de hablar de "gran...

Métrica v3 vs Metodologías Ágiles

Métrica v3: Metodología de Planificación, Desarrollo y Mantenimiento de sistemas de información que propone el Ministerio de Administraciones Públicas. Cualquier defensor de la técnicas, metodologías y herramienta ágiles sostendrá que Métrica v3 es un sistema demasiado pesado, tanto en su implementación, como en sus procesos de mantenimiento. Yo lo corroboraría, pero sin demonizarla. Estoy acostumbrado a que en este mundo de la informática se creen auténticos "dogmas de fe", que acarrean sus propias "guerras religiosas". Algunos ejemplos podrían ser: Software privativo vs Software libre, Windows vs Linux, Web Services vs Rest, Oracle vs MySQL, Explorer vs Firefox, Apache vs IIS, Eclipse vs Netbeans, y así podríamos seguir con un largo etcétera. En vez de buscar la mejor solución, o soluciones universales, yo propongo realizar un intenso análisis, y respondernos ciertas preguntas. Por regla general, no hay una solución que valga "para todo". La pregunta que...

Huelga Ingeniería Informática

Son varios los compañeros (y sin embargo amigos ;-)) que me llevan pidiendo mi opinión sobre las reivindicaciones de la Ingeniería Informática desde hace algún tiempo. Ya me "he dejado querer" bastante, así que en este post, intentaré expresarme de la manera más clara posible. Como titulado, pienso que a nivel académico, la Ingeniería Informática se debe tratar como el resto de Ingenierías. Si bien, creo que hay muchas carencias en los temarios que se imparten, y la Universidad debería adaptar el currículo, para que los titulados salieran con algunos conocimientos, que en mi opinión, son indispensables. Sobre los contenidos que deberían recogerse se podría escribir mucho, y me lo pongo como tarea para futuros posts. En éste, me quiero extender sobre las competencias y atribuciones profesionales del Ingeniero Informático. En cuanto al nivel académico parece que los Directores y Decanos, ya tienen bastante controlado el tema . En primer lugar, y para los despistados, me gustarí...