Synchronizacja Walut NBP

Facebooktwitterpinterestlinkedinmail

Zewnętrzna aplikacja do synchronizacji walut NBP

Instrukcja w wersjii PDF

Wprowadzenie 

W związku z zakończeniem wsparcia przez NBP dla interfejsu plikowego umożliwiającego pobieranie kursów walut w WEBCON BPS została utworzona implementacja umożliwiająca dalsze działanie synchronizacji walut w BPS, w oparciu o nowe REST API. Dotychczas używane w platformie WEBCON BPS API będzie działać jedynie do końca lutego 2024 r., co za tym idzie w celu dalszego korzystania z tej funkcjonalności należy zaktualizować środowisko WEBCON BPS do najnowszych wpieranych wersji: 2023.1.3 lub 2022.1.4.

W celu zapewniania naszym użytkownikom ciągłości dostępu synchronizacji walut do momentu aktualizacji wersji, zostało przygotowane narzędzie, które realizuje funkcjonalność pobierania kursów walut NBP z wykorzystaniem nowego REST API, niezależnie od zainstalowanej wersji WEBCON BPS. Narzędzie korzysta z nowej zoptymalizowanej implementacji, która jest kompatybilna z wcześniejszym rozwiązaniem.

Do poprawnego działania aplikacji niezbędne jest środowisko wykonawcze .NET 8.0 (zainstalowanie pakietu .NET Runtime 8.0.2 x64 lub wyższy dostępnego na stronie https://dotnet.microsoft.com/en-us/download/dotnet/8.0), umożliwia ono uruchamianie istniejących aplikacji komputerowych systemu Windows.

 

Konfiguracja

Na serwerze na którym uruchamiana będzie synchronizacja kursów walut należy utworzyć dedykowany katalog np. C:\ExchangeRatesBPS.

Zawartość dostarczonego plik archiwum ZIP zawierającego narzędzie do synchronizacji należy rozpakować do utworzonego wcześniej katalogu C:\ExchangeRatesBPS.

Uwaga! Serwer musi mieć sieciowy dostęp do adresu http://api.nbp.pl/api/exchangerates/tables z którego będą pobierane kursy walut oraz do baz danych zawartości systemu WEBCON BPS do których będą zapisywane aktualne kursy.

Archiwum ZIP zawiera dwa pliki:

  • exe – plik wykonywalny
  • json – plik zawierający konfigurację aplikacji

Przed uruchomieniem synchronizacji w pliku appsettings.json w sekcji ConnectionStrings należy wprowadzić konfigurację połączenia do baz danych „zawartości”.

Pozostałe opcje konfiguracyjne dostępne w pliku mogą pozostać niezmienione.

Uwaga! Jeśli instalacja WEBCON BPS zawiera więcej niż jedną bazę „zawartości”, w sekcji ConnectionStrings należy wprowadzić konfigurację połączenia dla każdej z tych baz. W takim przypadku należy zadbać o to by nazwa klucza identyfikującego połączenie do każdej bazy była unikalna.

Przykładowa konfiguracja pliku appsettings.json zawierająca połączenie do dwóch baz “zawartości”.

 

Po wprowadzeniu i zapisaniu zmian, można przeprowadzić ręczną synchronizację w celu weryfikacji poprawności konfiguracji.

Uwaga! Ręczne uruchomienie synchronizacji spowoduje aktualizację kursów walut w bazach danych.

By jednorazowo uruchomić synchronizacje należy uruchomić wiersz poleceń cmd.exe, przejść co katalogu w którym znajduje się plik wykonalny ExchangesRates.exe i go uruchomić.

 

Efektem pomyślnej synchronizacji walut są aktualne wartości walut w tabeli przechowującej kursy walut dbo.ExchangeRates. W przypadku niepowodzenia treść błędu będzie wyświetlona w konsoli oraz zapisana w pliku log.

 

Konfiguracja zaawansowana

Plik appsettings.json pozwala na zdefiniowanie dodatkowej, zaawansowanej konfiguracji dla aplikacji synchronizującej. W pliku dostępne są dwie sekcje:

  1. Settings – zawierająca parametry potrzebne do prawidłowego działania aplikacji:
    • StartDate – określa datę od której aplikacja rozpocznie synchronizację kursów walut. Jeśli dla danego dnia kurs został już wcześniej pobrany do bazy, nie będzie on pobierany ponownie.
    • ConnectionStrings – kolekcja połączeń do bazy danych, parametr umożlwiający dostęp do konkretnej bazy danych. Możliwe jest podanie więcej niż jednego połączenia, ale wymagane jest przynajmniej jedno
    • ApiUrl – opcjonalny – adres API Narodowego Banku Polskiego (domyślna wartość: "http://api.nbp.pl/api/exchangerates/tables")
    • Proxy – opcjonalny – umożliwia przeprowadzenie synchronizacji za pośrednictwem proxy, przy użyciu parametrów: Url, Username, Password
      Przykład:
  2. NLog – zawiera parametry służące do poprawnego logowania wyników oraz potencjalnych błędów. Pozostawienie domyślnej konfiguracji skutkuje zapisywaniem danych w konsoli, a ponadto utworzeniem pliku w folderze Logs, w miejscu uruchomienia pliku wykonywalnego. Konfiguracja logowania nie jest niezbędna, jest też możliwe jej rozbudowanie przy użyciu rozszerzonych ustawień dostępnych dla biblioteki NLog.

 

Automatyzacja synchronizacji z użyciem TaskScheduler

Uruchamianie aplikacji synchronizującej można zautomatyzować przy użyciu systemowego narzędzia TaskScheduler. Umożliwia ono zaplanowanie uruchamiania aplikacji w konkretnych momentach w przyszłości.

Przykładowa konfiguracja w celu uruchamiania aplikacji raz dziennie:

Poleceniem taskschd.msc należy uruchomić TaskScheduler, następnie wybrać akcję Create task (Utwórz zadanie):

W zakładce General (Ogólne) należy podać nazwę zadania. W opcjach zabezpieczeń należy wskazać konto użytkownika na którym będzie uruchamiana aplikacja synchronizująca.

Uwaga! Użytkownik na koncie którego będzie uruchamiana synchronizacja kursów, musi posiadać odpowiednie uprawnienia (dostęp do katalogu w którym znajduje się plik ExchangesRates.exe, uprawnienia „Logowania w trybie wsadowym” oraz dostęp do bazy danych zawartości jeśli w konfiguracji connection string używane jest logowanie zintegrowane).

Należy zaznaczyć parametr Uruchom niezależnie od tego, czy użytkownik jest zalogowany.

 

 

Następnie należy przejść do zakładki Triggers (Wyzwalacze) i nacisnąć przycisk New (Nowy):

 

W konfiguracji  zaznaczyć Codziennie i wybrać godzinę uruchamiania:

 

Zmiany potwierdzić przyciskiem OK.

Następnie przejść  w zakładkę Actions (Akcje), klikając w przycisk New (Nowa) wprowadzić ścieżkę do pliku wykonywalnego ExchangesRates.exe:

 

Konfigurację potwierdzić przyciskiem OK, a następnie całość konfiguracji zapisać ponownie naciskając przycisk OK.

 

Tak skonfigurowane zadanie będzie się uruchamiać każdego dnia o wyznaczonej porze.