Data-mapping van binaire objecten – Deel 2
Binair objecten – BLOB's – kunnen lastig te beheren zijn in databases. In een eerdere publicatie beschreven we een MapForce-datamapping om binaire objecten in een database op te slaan, met gegenereerde metadata om de BLOB's later te kunnen identificeren. Een gerelateerde uitdaging bij het mappen van binaire objecten is het extraheren van de binaire data en het opslaan ervan in een begrijpelijke vorm die trouw is aan het origineel.
Laten we eens kijken hoe dat in zijn werk gaat.

De ingebouwde MapForce-functie "write-binary-file" haalt BLOB-waarden uit een database en schrijft deze naar bestanden. We zullen het voorbeeld in de online Help van MapForce uitbreiden om een aanvulling te maken op de eerdere publicatie. Onze herziene mapping gebruikt parameters die tijdens runtime worden aangeleverd om één of meerdere binaire objecten uit de database te extraheren.
Het oorspronkelijke doel van de database was het bijhouden van verschillende soorten bestanden die gebruikt werden voor marketingdoeleinden, zoals afbeeldingen, PDF-documenten, screenshots, foto's en video's, die allemaal gerelateerd waren aan specifieke producten. De database gebruikte SQLite en bevatte metadata over het product, het type bestand en de oorspronkelijke bestandsnaam.
We beginnen met het mappen van binaire objecten voor extractie door de database in een nieuwe mapping te plaatsen. Deze keer, in plaats van een tabel te selecteren voor de mapping, gaan we een SQL SELECT-query maken met parameters om de resultaten te filteren op basis van de metadata-velden voor het product- en assettype. De SELECT-statement zal één of meerdere BLOB's en hun oorspronkelijke bestandsnamen retourneren.

Vervolgens klikken we op de SELECT-statement in het configuratiepaneel om de parameters weer te geven die gebruikt kunnen worden voor de mapping

Nu zijn alle individuele parameters en resultaten beschikbaar

Met behulp van de functie "Invoegen" via het hoofdmenu "Invoegen" of het pictogram in de werkbalk, kunnen we een speciaal veld toevoegen voor het uitvoeren van tests tijdens het ontwerp. Later, tijdens de geautomatiseerde uitvoering, kunnen we nieuwe parameterwaarden invoeren om de standaardwaarden te overschrijven.

U kunt een standaardwaarde instellen in het dialoogvenster voor de invoerdefinitie, maar ik geef de standaardwaarde liever als een stringconstante, zoals hierboven te zien is. De standaardwaarde is dan zichtbaar zonder het dialoogvenster te openen, en het is sneller om de waarde aan te passen voor het testen.
We volgen het voorbeeld in de MapForce-handleiding voor het mappen van binaire objecten om de mapping te maken voor het resultaat van de SELECT-query. Hieronder staat de voltooide mapping:

De functie "write-binary-file" die in de documentatie wordt benadrukt, slaat de inhoud van het binaire object op in de database op in een bestand dat wordt opgegeven via het pad in de invoer.
We hebben de voorbeeldmapping verbeterd met twee toevoegingen. In het oorspronkelijke voorbeeld werd een vaste stringwaarde gebruikt voor de bestandsnaam van het binaire object, maar we hebben nu de oorspronkelijke bestandsnaam uit de database gebruikt. Bovendien hebben we een ander invoerobject, genaamd "userPath", toegevoegd om een maplocatie en de bestandsnaam te combineren.
Op dit moment zijn we klaar om de mapping te testen. Klik hiervoor op de knop "Output" onderaan het ontwerpvenster van de mapping. MapForce voert de query uit met de parameters die in de mapping zijn gedefinieerd, en het venster "Output" wordt geopend:

De eerste uitvoer is simpelweg de melding die we aan de functie "schrijf-naar-binair-bestand" hebben toegevoegd. Door op het pictogram met de rechterpijl te klikken, wordt de tweede uitvoer weergegeven. De afbeelding hieronder toont het scherm nadat we op de knop "Openen met..." hebben geklikt om Windows Foto bekijken in te stellen als de applicatie voor het .png-bestand.

Het opgegeven bestandspad was "C:\projects\objects" en de bestandsnaam die in de database is opgeslagen, was "diffdog_2021.png". De bestandsnaam die in het fotovenster wordt weergegeven, "~mf95AE.png", is slechts een willekeurige naam voor de voorbeeldweergave. Het menu "Output" bevat een optie om het bestand permanent op te slaan:

We kunnen de parameters aanpassen en een nieuwe test uitvoeren. Deze keer gebruiken we het wildcard-teken van SQLite voor de parameter "asset" om alles in de database te selecteren:

Wanneer we deze keer op de knop "Output" klikken, worden meerdere binaire objecten opgehaald:

Door alle resultaten van de binaire bestanden te bekijken, zien we een datablad als een PDF-bestand, een screenshot als een .png-afbeelding, en een logo, ook als een .png-bestand

Automatiseer het koppelen van gegevens en binaire objecten
Om onze eisen voor de functionaliteit verder uit te breiden, nemen we aan dat we alle teamleden de mogelijkheid moeten geven om op aanvraag productgegevens uit de database op te halen. MapForce Server voert geautomatiseerde datatransformaties uit, gebaseerd op geoptimaliseerde datamappingen die in MapForce zijn ontworpen.
Een exemplaar van MapForce Server kan op een netwerkserver worden geïnstalleerd en toegankelijk gemaakt voor meerdere gebruikers. Vervolgens hoeven we alleen nog maar de datamapping op te slaan als een MapForce Server uitvoeringsbestand (.mfx) via het MapForce Output-menu. We gebruiken de bestandsnaam extract-product-assets-from-DB.mfx.

De datamapping kan vervolgens vanuit de opdrachtregel worden uitgevoerd door elke geauthenticeerde gebruiker. De parameters voor de invoercomponenten met de namen "product", "asset" en "userPath" worden tijdens de uitvoering toegewezen door de opdracht. We kunnen zelfs een voorbeeld van een opdrachtregel in een batchbestand maken, die gebruikers kunnen bewerken en uitvoeren indien nodig:

Het zou een eenvoudige taak zijn om commentaar toe te voegen met instructies voor het bewerken, waarin de mogelijke waarden voor elk parameter worden vermeld.
Voor een nog meer geautomatiseerde productie kunnen MapForce-mappingen worden geïmplementeerd op de FlowForce Server en uitgevoerd op basis van verschillende triggers. Om aan de slag te gaan met uw eigen project voor data-mapping, -conversie en -transformatie, download een gratis proefversie inclusief tutorials, hulp en nog veel meer voorbeelden!