Integracja faktur z ponowieniami bez duplikatów wymaga rozróżnienia dokumentu od komunikatu, który go przenosi. Brak odpowiedzi połączenia nie oznacza automatycznie, że system docelowy niczego nie zapisał. Jeżeli kolejna próba tworzy nowy dokument bez sprawdzenia wcześniejszego wyniku, zwykła awaria sieci może doprowadzić do dodatkowej pracy administracyjnej i niejednoznacznego stanu procesu.
Rozważmy fikcyjną firmę usługową, która przekazuje zaakceptowane rozliczenie z portalu do narzędzia używanego przez administrację. Odbiorca przyjmuje dane, ale połączenie zostaje przerwane przed potwierdzeniem. Operator widzi błąd i uruchamia ponowienie. Potrzebuje informacji, czy kontynuuje istniejącą sprawę, czy wprowadza nową wersję, której skutki zostały wcześniej uzgodnione z osobą odpowiedzialną za dokumenty.
Ustal tożsamość i źródło prawdy
Zdefiniuj identyfikatory dokumentu źródłowego i rekordu docelowego oraz sposób ich powiązania. Kwota i nazwa kontrahenta nie powinny samodzielnie stanowić dowodu, że dwa wpisy dotyczą tego samego zdarzenia. Ustal, który system zarządza poszczególnymi polami i gdzie operator sprawdza ostateczny stan. Takie decyzje należą do opisu procesu przed przygotowaniem integracji.
Oddziel wersję dokumentu od próby jego wysłania. Ta sama wersja może być przesyłana ponownie, natomiast zmiana treści może wymagać odrębnej decyzji. Nie utożsamiaj korekty biznesowej z techniczną aktualizacją rekordu. Wymagania dotyczące dokumentów i ich obsługi powinny zostać potwierdzone przez kompetentne osoby w organizacji oraz w aktualnej dokumentacji wykorzystywanych usług.
Zachowaj stan po przerwaniu
Zarejestruj, jaki etap został rozpoczęty i jakie potwierdzenie faktycznie odebrano. Przyjęcie do kolejki, przekazanie do systemu i zaakceptowanie dokumentu mogą być różnymi zdarzeniami. Operator musi móc odczytać ich znaczenie. Pojedynczy status błąd nie wyjaśnia, czy można ponowić wysyłkę, czy najpierw potrzebna jest kontrola po stronie odbiorcy.
Poproś wykonawcę o wskazanie granicy awarii między zapisaniem wyniku a potwierdzeniem wykonania. W tym miejscu potrzebna jest właściwa dla wybranych systemów ochrona przed powtórzeniem skutku. Samo przechowywanie numeru komunikatu nie wystarczy, jeżeli rzeczywista operacja może zostać wykonana wcześniej i pozostać bez powiązanego zapisu potwierdzającego jej zakończenie.
Zaprojektuj kontrolowaną obsługę różnic
Udostępnij uprawnionym pracownikom widok dokumentu, prób przekazania i ostatniego sprawdzonego wyniku. Pokaż sytuacje wymagające korekty danych albo kontaktu z administratorem usługi. Oddziel przejściową niedostępność od odrzucenia wynikającego z reguły dokumentu. Nie każda przyczyna zostanie rozwiązana kolejną próbą wysłania tych samych informacji do tego samego odbiorcy.
Określ, kto może ponowić operację i kto może zmienić jej dane. Historia powinna wyjaśniać podstawę działania oraz jego wynik bez ujawniania zbędnych informacji w ogólnych logach. Wyjątek nie powinien kończyć się niewidoczną zmianą w bazie, po której pozostali pracownicy muszą zgadywać, co zostało rzeczywiście zatwierdzone i dlaczego.
Sprawdź dokument po kilku próbach
W środowisku testowym przerwij połączenie po przyjęciu danych przez odbiorcę. Ponów wysłanie i porównaj tożsamość dokumentu, historię oraz widok operatora. Następnie przygotuj świadomie zmienioną wersję i sprawdź, czy aplikacja odróżnia ją od zwykłego powtórzenia. Wynik powinien być zgodny z regułami ustalonymi przez odpowiedzialny zespół administracyjny.
Na rozmowę z Brainbaby Labs przynieś anonimowy przykład dokumentu i opis trudnej sytuacji z jego przekazywaniem. Pozwoli to określić zakres identyfikacji, kontroli i wznowienia pracy. Pierwszą integrację warto odbierać na zakończonym procesie wraz z jego wyjątkiem, z jasnym podziałem decyzji między software, operatora i właściciela systemu docelowego.