Funkcje węzłów ułatwiają mapowanie hierarchicznych struktur danych
Funkcje węzłów MapForce ułatwiają mapowanie danych hierarchicznych, takich jak węzły XML, pliki CSV, JSON, EDI lub pola baz danych, umożliwiając użytkownikom definiowanie funkcji przetwarzania danych na poziomie węzła i stosowanie jej rekurencyjnie do wszystkich elementów potomnych.
Podobnie, można przypisać wartości domyślne do węzłów, które zostaną automatycznie zastosowane do wszystkich węzłów potomnych.
Domyślne ustawienia i funkcje węzłów są szczególnie przydatne, gdy mapowanie i transformacja danych Zadanie wymaga zastosowania tej samej logiki przetwarzania dla wielu elementów potomnych w strukturze, na przykład:
- Zastąp wartości null inną wartością, rekurencyjnie dla wszystkich elementów potomnych
- Zastąp konkretną wartość (np. "N/A") inną wartością, rekurencyjnie, dla wszystkich elementów potomnych
- Zastąp wszystkie wartości null w bazie danych wartościami domyślnymi podczas odczytu danych z tabeli bazy danych
- Usuń wszystkie zbędne spacje na końcu wszystkich wartości pobranych z bazy danych źródłowej
- Dodawaj niestandardowy prefiks lub sufiks do wszystkich wartości zapisywanych do określonego pliku lub bazy danych
- Formatowanie wartości wyjściowych
- I wielu innych
Domyślne ustawienia i funkcje węzłów ułatwiają mapowanie danych hierarchicznych, eliminując konieczność wielokrotnego kopiowania i wklejania tej samej funkcji w mapowaniu. Powtarzanie tej samej funkcji jest zbędne i utrudnia czytelność oraz modyfikację układu mapowania.
Spójrzmy na przykład.

Poniższe odwzorowanie z formatu XML do CSV, przedstawione jako przykład OrderinUSD.mfd z projektu MapForce Examples, ilustruje zarówno efektywność, jak i elastyczność funkcji węzłów.

Ten przykład pokazuje, jak przekształcić dane z pliku XML do formatu CSV. Dodatkowe wymagania to: cena podana w pliku źródłowym w euro musi zostać przeliczone na dolary, a nazwa każdego zamówionego produktu musi zostać zapisana wielkimi literami.
Funkcja węzła spełnia oba wymagania i jest oznaczona symbolem funkcji znajdującym się po prawej stronie węzła "Artykuł". Kliknięcie dwukrotnie w symbol funkcji otwiera okno dialogowe definiujące funkcje węzła, znajdujące się powyżej panelu mapowania:

Ta pojedyncza funkcja węzła łączy dwie operacje MapForce, aby przeprowadzić zarówno wymagane konwersje walut, jak i operacje na łańcuchach znaków. Można dodać więcej wierszy do tej funkcji węzła, klikając ikony po lewej stronie, aby dodać domyślną wartość lub wiersz z funkcją.
Pierwsza kolumna w każdym wierszu określa, czy dany wiersz dotyczy pojedynczego poziomu dziecka, czy wszystkich potomków danego trybu.
Drugie pole określa, jaki typ danych zostanie zmieniony. Kliknięcie przycisku „…” otwiera okno dialogowe, które jest pokazane tutaj, umożliwiając wybór typu danych:

Naszym przykładzie znajdują się wiersze dla tylko dwóch typów danych, ale funkcja węzła mogłaby być zdefiniowana z wierszami dla każdego możliwego typu danych. Dla każdego potomka węzła nadrzędnego, wiersz odpowiadający danemu typowi danych zostanie wykonany.
Trzecie pole określa, czy w danym wierszu używana jest funkcja, czy wartość domyślna. W każdym przypadku, po kliknięciu przycisku "Edytuj", dany wiersz staje się dostępny do modyfikacji

Definiowanie funkcji w węźle odbywa się poprzez przeciąganie funkcji z okna biblioteki funkcji oraz/lub definiowanie stałych dla tej funkcji i łączenie ich ze źródłami oraz wyjściami.
Element "Amount" w przykładowym pliku wejściowym w rzeczywistości określa ilość zamówioną dla każdego produktu i nie powinien być mnożony przez współczynnik konwersji walut zdefiniowany w funkcji węzła. Łatwo można zdefiniować "Amount" jako wyjątek, klikając prawym przyciskiem myszy na odpowiadający mu symbol funkcji i odznaczając opcję "Dziedzicz funkcje węzła wyjściowego" w menu kontekstowym.

Istnieje jeszcze jedno wymaganie dotyczące pliku wyjściowego w formacie CSV. Cena pojedynczego produktu oraz podsumowanie cen dla każdego produktu muszą być podane z początkowym znakiem dolara. Definicja pliku wyjściowego wskazuje, że kolumny "SinglePrice" i "Price" są zdefiniowane jako dane tekstowe, a MapForce automatycznie konwertuje wartości dziesiętne z danych źródłowych na tekst.
Dodawanie znaków dolara na początku wartości jest realizowane za pomocą dodatkowej funkcji węzła, która jest stosowana do węzła "Rows" komponentu wyjściowego, jak widać tutaj:

Aby zapobiec zastosowaniu tej funkcji do wszystkich kolumn zawierających dane tekstowe, zastosowano wyjątki dla kolumn "Firma" i "Artykuł". Teraz przykład mapowania danych hierarchicznych za pomocą funkcji jest kompletny.
Podobnie jak w przypadku innych przykładów MapForce, do tego mapowania dołączony jest plik z danymi źródłowymi, który pozwala zaprezentować wyniki. Poniżej znajduje się widok tego pliku źródłowego w programie XMLSpy Edytor XML:

Mapowania w MapForce, które wymagają powtarzalnych transformacji, takie jak te używane w systemie przetwarzania zamówień online, mogą być automatyzowane za pomocą MapForce Advanced Server. Aby uruchomić mapowanie w celach testowych lub jednorazowej konwersji, wystarczy kliknąć przycisk "Wyjście" znajdujący się pod oknem projektowania mapowania.
W każdym razie, nasze przykładowe odwzorowanie daje następujący wynik:

Oprócz mapowania danych, o którym mowa w tym artykule, MapForce zawiera również wiele innych przykładów funkcji węzłów. System pomocy zintegrowany z MapForce zawiera nawet instrukcję krok po kroku, która pokazuje, jak stworzyć mapowanie funkcji węzła od podstaw.
Aby przekonać się samodzielnie, jak funkcje węzłów upraszczają mapowanie danych hierarchicznych, kliknij tutaj, aby pobrać bezpłatną wersję próbną MapForce z pełną funkcjonalnością.
AKTUALIZACJA: Zapraszamy do zapoznania się z tym wpisem, który przedstawia kolejną strategię wykorzystania funkcji węzłów w oparciu o metadane węzłów, takie jak nazwa węzła, długość węzła, precyzja typu danych węzła, niestandardowe adnotacje węzłów i inne.