Proces rezerwacji pokoju realizowany jest wielokrotnie w danym przedziale czasu i dla tego samego hotelu. Wielu użytkowników w danym momencie przegląda oferty oraz rozpoczyna proces rezerwacji. Jedni przeprowadzają go do końca a inni rezygnuja w trakcie, z różnych wzlędów – komunikatu systemu, zmiany planów lub innych powodów. Może się zdarzyć, że dwóch użytkowników chce zarezerwować pokój określając identyczne parametry graniczne. Uproszczony proces jest zapreznetowany na poniższym diagramie.
W opisanej sytuacji, tylko jeden z użytkowników powinien otrzymać potwierdzenie rezerwacji, więc powinien być w systemie obsługującym rezerwacje stworzony mechanizm, który to zapewni. Fizycznie każda rezerwacja trafia do określonej bazy rezerwacji i patrząc z poziomu tego poziomu możemy mówić o różnych mechanizmach obsługi współbieżności rezerwacji. Istotne jest to, że aplikacja komunikująca sie z użytkownikiem, musi umieć zinterpretować komunikat przesłany przez aplikację obsługującą bazę rezerwacji (danych).
Można wyobrazić sobie przykładowe warianty postępowania w ramach systemu obsługi rezerwacji, oznaczonym na powyższym diagramie:
- wszystkie rezerwacje (dla bazy danych transakcje) przychodzące od użytkowników są umieszczane na kolejce oczekujących do obsłużenia, która jest, co określony czas, sprawdzana, pod kątem istnienia dwóch identycznych rezerwacji. Jeżeli takie są, obydwie odrzuca z odpowiednim komunikatem lub realizuje losowo wybraną.
- wszystkie rezerwacje (czyli transackje) zapisuje w taki sposób jak przychodzą, a w zależności od ustawień bazy danych i obsługi zakleszczeń, któraś z rezerwacji może zostać odrzucona lub nadpisana. Z punktu widzenia aplikacji obsługującej może ona sprawdzać, czy rezerwacja nastąpiła (powiązanie pokoju, rezerwacji i klienta).
Każde rozwiązanie można sprowadzić z perspektywy użytkownika do jednego z dwóch komunikatów: “zapisana” lub “odrzucona”. Dla procesu biznesowego obsługa współbieżności oznacza wystąpienie wyjątków lub dedykowanych komunikatów dla użytkownika. Proces biznesowy może obsługiwać różne sytuacji a sama aplikacja może krokowo sprawdzać w tle, czy pokoje o definiowanej przez użytkownika konfiguracji są dostępne. Powyższe zachowania aplikacji można bardzo łatwo zaobserwować korzystając z mechanizmów/procesów udostępnianych i wykorzystywanych przez szersze grono użytkowników.