Sprawdź zawód
Lekcje kursu · Trudniejsze sytuacje

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.

Tok pracy w tej lekcji
  1. Co zrobić najpierwRozpoznaj klucz
  2. Co zrobić dalejPorównaj zawartość
  3. 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.

Tok pracy w tej lekcji
  1. Co zrobić najpierwUstal klientów
  2. Co zrobić dalejSprawdź przebieg
  3. 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ą.

Plan pracy nad zadaniem
  1. Uzgodnij wejście
  2. Wykonaj regułę
  3. 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.