Knooppuntenfuncties vereenvoudigen het omzetten van hiërarchische datastructuren
MapForce-knufuncties vereenvoudigen het omzetten van hiërarchische gegevens, zoals XML-elementen of CSV-, JSON-, EDI-bestanden of databasevelden, doordat gebruikers een dataverwerkingsfunctie op knoopniveau kunnen definiëren en deze recursief kunnen toepassen op alle onderliggende elementen.
Op dezelfde manier kunnen standaardwaarden worden toegewezen aan knooppunten en automatisch worden toegepast op de onderliggende elementen.
Standaardinstellingen en knooppuntfuncties zijn met name nuttig wanneer een taak voor data-mapping en -transformatie dezelfde verwerkingslogica vereist voor meerdere onderliggende elementen in een structuur, bijvoorbeeld:
- Vervang lege waarden door een andere waarde, en dit recursief voor alle onderliggende elementen
- Vervang een specifieke waarde (bijvoorbeeld "N/A") recursief door een andere waarde voor alle onderliggende elementen
- Vervang alle lege waarden in de database wanneer u gegevens uit een database-tabel leest
- Verwijder alle onnodige spaties aan het einde van alle waarden uit een brondatabase
- Voeg een aangepast voorvoegsel of achtervoegsel toe aan alle waarden die naar een doelbestand of database worden geschreven
- Formattering van uitvoerwaarden
- En nog veel meer
Standaardinstellingen en knooppuntfuncties vereenvoudigen het verwerken van hiërarchische gegevens doordat de noodzaak om dezelfde functie meerdere keren te kopiëren en plakken in een verwerking wegvalt. Het herhaaldelijk gebruiken van dezelfde functie is onnodig en maakt de structuur van de verwerking onoverzichtelijk, waardoor deze moeilijker te begrijpen of aan te passen is.
Laten we eens een voorbeeld bekijken.

De conversie van XML naar CSV, zoals hieronder weergegeven, is een voorbeeld genaamd OrderinUSD.mfd, afkomstig uit het MapForce Examples project, en illustreert zowel de efficiëntie als de flexibiliteit van knooppuntfuncties.

Dit voorbeeld converteert een order uit een bron-XML-bestand naar een CSV-tekstbestand. Daarnaast zijn er aanvullende eisen: de prijs in euro's in de bron moet worden omgezet naar dollars, en de naam van elk besteld artikel moet worden omgezet naar hoofdletters.
Een knooppuntfunctie vervult beide vereisten en wordt aangegeven door het functiesymbool rechts van de artikelknoop. Door dubbel te klikken op het functiesymbool opent zich het dialoogvenster voor de definitie van de knooppuntfuncties, boven het paneel voor de mapping:

Deze enkele knooppuntfunctie combineert twee MapForce-bewerkingen om zowel de benodigde valuta- als tekstconversies uit te voeren. U kunt meer rijen toevoegen aan de knooppuntfunctie door op de pictogrammen aan de linkerkant te klikken om een standaardwaarde of een functie toe te voegen.
De eerste kolom in elke rij bepaalt of de rij betrekking heeft op een specifiek niveau van een kind of op alle nakomelingen van de bovenliggende modus.
Het tweede veld bepaalt welk gegevenstype gewijzigd wordt. Door op de knop "..." te klikken, wordt het hieronder getoonde dialoogvenster geopend, waarmee u het gegevenstype kunt selecteren:

Ons voorbeeld bevat rijen voor slechts twee datatypes, maar een knooppuntfunctie zou gedefinieerd kunnen worden met rijen voor elk mogelijk datatype. Voor elk kind van het bovenliggende knooppunt wordt de rij met het overeenkomende datatype uitgevoerd.
Het derde veld geeft aan of de rij een functie gebruikt of een standaardwaarde. In beide gevallen opent de knop "Bewerken" die rij voor bewerking:

Het definiëren van een knooppuntfunctie gebeurt door functies uit het functiebalkvenster te slepen en/of door constanten voor de functie te definiëren en deze te verbinden met bronnen en uitvoerpunten.
Het element "Amount" in het voorbeeldinvoerbestand vertegenwoordigt in werkelijkheid de bestelde hoeveelheid voor elk artikel en mag niet vermenigvuldigd worden met de valutaconversiefactor die is gedefinieerd in de bijbehorende functie. Het is eenvoudig om "Amount" als een uitzondering aan te merken door met de rechtermuisknop op het bijbehorende functiesymbool te klikken en vervolgens "Overnemen functies van het uitvoerknooppunt" uit te vinken in het contextmenu.

Er is nog een vereiste voor het CSV-uitvoerbestand. De individuele prijs per artikel en de tussen totaalprijs voor elk artikel moeten worden weergegeven met een voorloopteken dollar ($). De definitie van het uitvoerbestand laat zien dat de kolommen "SinglePrice" en "Price" zijn gedefinieerd als tekstgegevens, en MapForce converteert automatisch decimale waarden van de bron naar tekst.
Het toevoegen van de voorlooptekens ($) wordt gerealiseerd door een extra knooppuntfunctie die wordt toegepast op de "Rijen"-knoop van het uitvoercomponent, zoals hier te zien is:

Om te voorkomen dat deze knooppuntfunctie van toepassing is op alle kolommen die stringgegevens bevatten, zijn er uitzonderingen toegepast op de kolommen "Bedrijf" en "Artikel". Nu is het voorbeeld voor het mappen van hiërarchische gegevens met behulp van knooppuntfuncties compleet.
Net als bij andere MapForce-voorbeelden, wordt bij deze mapping een bronbestand geleverd om de resultaten te demonstreren. Hieronder ziet u het bronbestand, bekeken in de XMLSpy XML-editor:

MapForce-transformaties die repetitieve bewerkingen vereisen, zoals bij een systeem voor online orderverwerking, kunnen worden geautomatiseerd met MapForce Advanced Server. Om de transformatie uit te voeren voor testen of eenmalige conversie, klikt u eenvoudigweg op de knop "Uitvoer" onder het venster voor het ontwerp van de transformatie.
Hoe dan ook, onze voorbeeldtoepassing levert dit resultaat op:

Naast de datamapping die in dit artikel wordt beschreven, bevat MapForce verschillende andere voorbeelden van knooppuntfuncties. Het geïntegreerde hulpsysteem van MapForce bevat zelfs een stapsgewijze handleiding om een knooppuntfunctie-mapping vanaf nul op te bouwen.
Om zelf te ervaren hoe knooppunten het verwerken van hiërarchische data vereenvoudigen, klik hier om een volledig functionele proefversie van MapForce gratis te downloaden.
UPDATE: Bekijk dit artikel voor een andere strategie om knelfuncties toe te passen op basis van metadata van de knopen, zoals de naam van de knoop, de lengte van de knoop, de precisie van het gegevenstype van de knoop, aangepaste annotaties voor de knoop, en meer.