Programista Java — Trudniejsze sytuacje
Ponowienie zapisuje drugie zamówienie
Trudniejsze sytuacje · Lekcja 5 z 6
Ponowienie i zapis współbieżny
Zdefiniuj zakres i ważność identyfikatora operacji. Zapisz stan w miejscu, które zapewnia spójne rozstrzygnięcie współbieżnych żądań. Ustal reakcję przy tym samym kluczu i innych danych.
- Co zrobić najpierwRozpoznaj klucz
- Co zrobić dalejPorównaj zawartość
- Jak zakończyćZwróć wynik
Przykład z pracy
Drugie żądanie po chwilowej utracie połączenia odczytuje status pierwszego zapisu.
Ćwiczenie praktyczne
Rozpisz trzy wyniki: pierwsze żądanie, zgodne ponowienie, konflikt danych.
Sprawdź się — opcjonalne pytanie
Co powinno nastąpić po zgodnym ponowieniu zakończonej operacji?
- Zawsze utworzenie kopii zamówienia
- Nadpisanie poprzednich danych z pominięciem walidacji
- Zwrócenie uzgodnionego wyniku bez ponownego skutku
Pokaż odpowiedź i wyjaśnienie
Zwrócenie uzgodnionego wyniku bez ponownego skutku. Klucz operacji jest powiązany z pierwotnym skutkiem.
Trudniejsze sytuacje · Lekcja 6 z 6
Zmiana kontraktu i odbiór
Sprawdź, którzy klienci używają pola i jak reagują na nową wartość. Uzgodnij przejście ze starego formatu oraz warunek wycofania. Odbieraj zachowanie przez interfejs używany przez klienta.
- Co zrobić najpierwUstal klientów
- Co zrobić dalejSprawdź przebieg
- Jak zakończyćWdrażaj zgodnie z planem
Przykład z pracy
Starsza aplikacja ignoruje pole opcjonalne, ale nie rozpoznaje zmienionego znaczenia statusu.
Ćwiczenie praktyczne
Napisz plan wprowadzenia nowego pola i wycofania, gdy starszy klient zgłasza błąd.
Ponowienie zapisuje drugie zamówienie
Wyjaśnij decyzję
W trzech zdaniach przekaż wynik sprawy „Ponowienie zapisuje drugie zamówienie”. Podaj, co potwierdziłeś, jakie działanie wybierasz i kiedy lub pod jakim warunkiem odbiorca powinien wykonać następny krok.
Omówienie decyzji i dopytanie
Przykładowe działanie. Zwracam istniejący wynik po potwierdzeniu zgodności żądania
Klient odzyskuje odpowiedź bez powielania skutku.
Pytanie z rozmowy o tym zawodzie. Dlaczego samo sprawdzenie przed zapisem nie rozwiązuje współbieżności?
Dwa żądania mogą odczytać ten sam stan. Potrzebny jest mechanizm, który wymusza uzgodnione ograniczenie przy zapisie.
Poproś rozmówcę, żeby powtórzył, co już potwierdzono i od jakiej informacji zależy następny krok.
Sprawdź się — opcjonalne pytanie
Jaki dowód potwierdza zgodność z dotychczasowym klientem?
- Klient wykonuje swój przebieg i interpretuje odpowiedź zgodnie z umową
- Nowa wersja kompiluje się bez ostrzeżeń
- Lista klas wygląda jak przed zmianą
Pokaż odpowiedź i wyjaśnienie
Klient wykonuje swój przebieg i interpretuje odpowiedź zgodnie z umową. Zgodność dotyczy zachowania widocznego na granicy systemu.
Zadanie końcowe
Wykorzystaj sposób pracy z przypadku „Ponowienie zapisuje drugie zamówienie” w zadaniu rekrutacyjnym.
Po złożeniu zamówienia klient ponawia żądanie, bo aplikacja nie otrzymała odpowiedzi. Zaprojektuj reakcję na powtórzenie z tym samym identyfikatorem oraz na użycie go z inną zawartością.
- Uzgodnij wejście
- Wykonaj regułę
- Zweryfikuj kontrakt
Pokaż kryteria wykonania
- Rozróżniasz ponowienie od nowego zamówienia.
- Uwzględniasz jednoczesne wykonanie i miejsce przechowania klucza.
- Podajesz oczekiwane odpowiedzi dla ponowienia i konfliktu.
Jak sprawdzić odpowiedź na głos?
Gdzie umieszczasz regułę o zamkniętym zamówieniu?
W logice domenowej lub serwisie. Kontroler mapuje wynik na odpowiedź HTTP.