Quan des de la plana d’una agència on-line un usuari sol.licita informació d’hotel i du a terme una reserva, no és conscient del vaivé de missatges electrònics que es desencadena entre els diferents actors i sistemes. Amb aquesta entrada començam una sèrie de posts per aprofundir en la descripció de les especificacions tècniques Caval. La primera, i una de les més rellevants, és la interfície del HotelBookingService. Aquest servei està especialment dissenyat per canals de venda que necessiten comunicar amb proveïdors d’hotel (centrals de reserva) per distribuir productes d’allotjament on-line seguint un model pull (la informació sobre disponibilitat d’hotel s’extreu en temps real de la central de reserves, en el mateix moment en que el client la demana a través del canal de venda). Aquest és el típic procés que es du a terme en el cas del canals de distribució anomenats IDS (Internet Distribution Systems), i que es descriu en el següent diagrama de seqüència:
Seguint el diagrama de seqüència, el client final inicia el procés de reserva enviant una sol.licitud al canal de distribució (a la figura indicat com IDS) per demanar la disponibilitat. A continuació, la sol.licitud és remesa immediatament al proveïdor de servei d’hotel, invocant el mètode getAvailableHotels(). La invocació pot incloure els paràmetres necessaris per a restringir els resultats a les preferències d’allotjament de l’usuari, com el rang de dates de l’estada, nombre d’habitacions i ocupants per habitació. També pot incloure paràmetres per filtrar els resultats, principalment per nom de l’hotel, ciutat, i la categoria de l’hotel. La consulta també es pot limitar a la cerca de disponibilitat d’un hotel específic, passant un paràmetre ID d’establiment.
La resposta indica a l’usuari els hotels que es troben disponibles, incloent tots els detalls de preus per habitació. Una vegada que el client tria un hotel i el preu, el mètode getDetailedValuation() s’invoca per obtenir detalls complementaris: suplements opcionals disponibles, les observacions especials de l’hotel, i les despeses de cancel.lació de la reserva.
A continuació, l’usuari confirma la reserva d’hotel, proporcionant informació dels ocupants. Aquesta acció provoca la invocació del mètode confirmHotelBooking() des del canal de distribució. La resposta torna el localitzador de reserva. Abans d’enviar el localitzador cap a l’usuari, es sol executar un mètode getBooking(), inclòs en el CommonsBookingService, per demanar els detalls de la reserva i comprovar que tot quadra.
Finalment, per cancel.lar una reserva, el canal de distribució pot enviar un misstage cancelBooking() al proveïdor de servei d’hotel, passant el localitzador de reserva com a paràmetre. Després d’això, es recomana executar un getBooking() per obtenir les despeses de cancel.lació associades a la reserva.