Nie wiedziałem jak nazwać do końca temat. Więc jak ktoś wpadnie na lepszy pomysł to prosiłbym o propozycje
Założenie:
Mam do zrobienia następującą rzecz.
- Pobrac dane
- Przetworzyc je
3.1) Wyslać na maila
3.2) Wysłać do zewnetrznego systemu
3.3) Zweryfikowac dane z zewnetrznym systemem
wszystkie podpunkty zawierające 3 mogą być uruchomione jak chcą (nawet nie musi być w ogole 3 wykonywany)
Co potrzebuje
Gdy któryś z skonfigurowanej ścieżki (planu) zawiedzie chcę
- automatycznie ponowic próbę X razy
- jeżeli po X razach nie udało się to przechodzi w stan zły i trzeba ten konkretny plan poprawić ręcznie (np email był niepoprawny i chciałbym go zmienić)
- Ręcznie odpalić dany plan (ale nie cały, tylko od tego stanu gdzie się zatrzymał)
Co wymyśliłem
Command Pattern z "Steps". Czyli https://www.dofactory.com/net/command-design-pattern Invoker bedzie dodawal odpowiednie command (zapewne dodam jakiegos buildera, ktory mi przygotuje invokera)
Jeżeli kod uruchamia dany command, to taki status (parametry) zapisuje w bazie (by pozniej moc je pobrac i zmodyfikowac gdy bedzie wymagana reczna edycja)
Sam command będzie wiedział czy wykonał się dobrze czy nie. Zapisuje ten status (w bazie)
Gdzieś z zewnatrz robie view do tabeli z "planami" i wyswietlam wszystkie te które nie posiadaja że każdy command został wykonany poprawnie
W Bazie tworze status dla calego planu. Pomysł jaki mam to mieć tabele z tymi stepsami + planId. PlanId będzie miał jakies FK która ścieżka (plan) byłą wkorzystana.
Jeżeli chodzi o uruchamianie commandu to mam WebJoba i wrzuce do niego na Queue
dany step i on jakoś się tam uruchomi.
To rozwiązanie wydaje mi się skomplikowane i szukam lepszego