Obsługa błędów HTTP podczas automatycznej integracji danych
Analitycy danych i inni specjaliści często muszą generować dane w czasie rzeczywistym poprzez automatyczne wykonywanie operacji mapowania danych, które wysyłają zapytania do usług internetowych i zapisują wyniki. Podczas automatycznego wykonywania ważne jest, aby w sposób kontrolowany obsługiwać wszelkie nieoczekiwane błędy HTTP, zamiast przerywać proces integracji.
W poprzednim wpisie omawialiśmy warunkowe przetwarzanie odpowiedzi usługi internetowej REST, które pozwala na obsługę błędów HTTP, gdzie generowane są oddzielne pliki wyjściowe dla poprawnej odpowiedzi i dla przypadku wystąpienia błędu. Teraz przyjrzyjmy się ulepszonemu rozwiązaniu mapowania dla przykładu statusu lotniska, które generuje pojedynczy plik z wynikami mapowania, zawierający albo żądany status lotniska, albo opis błędu.

Jedną z strategii, która pozwoliłaby uzyskać pojedynczy wynik, byłoby potraktowanie każdego pliku wyjściowego generowanego przez nasze wcześniejsze mapowania w MapForce jako element pośredni, a następnie przekształcenie tych elementów w ostateczny wynik, który uwzględnia obie możliwe opcje.
Jednak prostszym rozwiązaniem jest bezpośrednie mapowanie normalnej odpowiedzi oraz wyniku błędu na jeden element wyjściowy.
Po opublikowaniu naszego poprzedniego wpisu, odkryliśmy, że usługa internetowa FAA (Federal Aviation Administration) dotycząca statusu lotnisk zwraca błąd, jeśli żądanie zawiera puste pole dla kodu lotniska. Powoduje to błąd HTTP 404. Niestety, wynik usługi internetowej w przypadku wystąpienia błędu jest dostarczany w formacie HTML, a nie JSON, pomimo specyfikacji zawartej w nagłówku żądania

Możemy uniknąć analizy błędów HTML, mapując bezpośrednio kody statusu zwracane w odpowiedzi:

Najpierw musimy dodać element do schematu JSON dla docelowego komponentu, który będzie przechowywał komunikat w przypadku wystąpienia jakiegokolwiek błędu. Można to łatwo zrealizować za pomocą programu XMLSpy Edytor schematów JSON z interfejsem graficznym:

W oknie pomocniczym "Szczegóły" opcja "Występowanie" jest ustawiona jako "Opcjonalne", ponieważ ten element będzie generowany tylko w przypadku wystąpienia błędu HTTP.
Teraz możemy tworzyć niestandardowe komunikaty o błędach, opierając się na dowolnym kodzie stanu HTTP większym niż 200:

Funkcja concat przedstawiona powyżej zawiera kod statusu oraz kod lotniska, co pozwala na pełne opisanie przyczyn wystąpienia błędu.
Oto pełny schemat, który pokazuje, jak kod statusu jest przekazywany do komponentu wyjściowego:

Możemy edytować stałą kodu lotniska, znajdującą się w lewym górnym rogu mapy, a następnie kliknąć przycisk "Wyjście" znajdujący się pod głównym oknem mapy, aby przetestować różne wartości wejściowe. Kiedy w żądaniu GET wysyłanym do usługi internetowej zostanie uwzględniony prawidłowy kod lotniska, wynik to plik JSON, którego się spodziewamy:

Możemy wygenerować błąd HTTP, przesyłając pusty ciąg znaków w miejscu, gdzie powinien znajdować się kod lotniska. To spowoduje wygenerowanie pliku odpowiedzi zawierającego błąd, w formacie JSON:

Należy pamiętać, że nasze mapowanie nadal rozróżnia oddzielne sekcje odpowiedzi dla kodów statusu HTTP w zakresie 200-299 oraz dla kodów w zakresie 300-599. Zapewnia to, że do mapowania i wyświetlania są przekazywane tylko poprawne wyniki w formacie JSON. Wyniki błędów otrzymywane w formacie HTML nie są mapowane i są po prostu odrzucane.

Automatyzacja mapowania danych i obsługa błędów HTTP
W naszym poprzednim wpisie opisaliśmy scenariusz automatyzacji, w którym chcemy regularnie sprawdzać i rejestrować stan 50 lotnisk. Aby to osiągnąć, będziemy musieli wywołać usługę internetową i przetworzyć wyniki dla każdego konkretnego kodu lotniska.
Oryginalna definicja mapowania została zaprojektowana z myślą o automatyzacji. Serwer MapForce to narzędzie serwerowe, działające na różnych platformach, które automatyzuje proces wykonywania mapowań danych, zdefiniowanych w MapForce. Komponent znajdujący się w lewym górnym rogu mapowania, po stringu stałym, to parametr wejściowy, który można dostarczyć w czasie działania, aby serwer MapForce mógł go wykorzystać.

Ciąg znaków "PHX" widoczny na zrzucie ekranu jest używany wyłącznie podczas bezpośredniego wykonywania w programie MapForce.
FlowForce Server to wysoce konfigurowalne oprogramowanie Silnik przepływu pracy umożliwiający efektywną automatyzację zadań integracji danych na poziomie przedsiębiorstwa. Zadanie serwera FlowForce może wykonywać transformację danych za pomocą serwera MapForce raz dla każdego wymaganego kodu lotniska i powtarzać to działanie zgodnie z ustalonym harmonogramem. Automatyczne zadanie będzie obsługiwać błędy HTTP, generując pliki wynikowe, które będą zawierać albo najnowszy status, albo opis błędu dla każdego kodu lotniska.
Jeśli dopiero zaczynasz pracę z MapForce, zapoznaj się z tym filmikiem wprowadzającym, który przedstawia możliwości konwersji i integracji danych w formacie dowolnym. Możesz samodzielnie przetestować MapForce, MapForce Server i FlowForce Server, korzystając z bezpłatnej, 30-dniowej wersji próbnej.