Mapeamento de Dados de Objetos Binários – Parte 2

Objetos binários – BLOBs – podem ser difíceis de gerir em bases de dados. Numa publicação anterior, descrevemos um mapeamento de dados no MapForce para inserir objetos binários numa base de dados, com metadados gerados para identificar os BLOBs posteriormente. O desafio complementar no mapeamento de objetos binários é extrair os dados binários e guardá-los numa forma compreensível, que seja fiel ao original.

Vamos analisar como isso é feito.

A função integrada do MapForce, "write-binary-file", extrai valores do tipo BLOB de uma base de dados e escreve-os em ficheiros. Vamos expandir o exemplo na ajuda online do MapForce para criar um complemento ao artigo anterior. O nosso mapeamento atualizado utiliza parâmetros fornecidos em tempo de execução para extrair um ou mais objetos binários da base de dados.

O objetivo inicial da publicação era utilizar uma base de dados SQLite para monitorizar diversos ficheiros binários que continham elementos gráficos para produtos, destinados a um departamento de marketing. Estes dados binários podem incluir, por exemplo, ficheiros de imagens de logótipos, documentos PDF com fichas técnicas de produtos, capturas de ecrã do produto em utilização, fotografias, ficheiros de vídeo, etc. A nossa tabela de base de dados inclui metadados sobre o produto, o tipo de elemento gráfico e o nome original de cada ficheiro.

Começamos o mapeamento de objetos binários para extração, importando a base de dados para um novo mapeamento. Desta vez, em vez de selecionar uma tabela para o mapeamento, vamos criar uma consulta SQL SELECT com parâmetros para filtrar os resultados com base nos campos de metadados do produto e do tipo de ativo. A instrução SELECT irá retornar um ou mais objetos BLOB e os seus nomes de ficheiro originais.

Em seguida, clicamos na instrução SELECT no painel de mapeamento para exibir os parâmetros que podem ser utilizados no mapeamento

Agora, cada parâmetro e resultado individualmente está disponível:

Utilizando a opção "Inserir Entrada", seja através do menu "Inserir" principal ou do ícone na barra de ferramentas, podemos inserir um campo especial para testes durante o processo de design. Posteriormente, durante a execução automatizada, podemos fornecer novos valores de parâmetros para substituir os valores padrão.

Pode especificar um valor padrão no momento do design no diálogo de definição da entrada, mas prefiro definir o valor padrão como uma constante de texto, como mostrado acima. O valor padrão fica visível sem precisar abrir o diálogo, e é mais rápido alterar o valor para fins de teste.

Vamos seguir o exemplo da ajuda do MapForce para mapeamento de objetos binários para criar o mapeamento do resultado da consulta SELECT. Aqui está o mapeamento completo:

A função "write-binary-file" destacada no esquema permite guardar o conteúdo do objeto binário na base de dados num ficheiro especificado no caminho fornecido como entrada.

Refinámos o exemplo de mapeamento com duas melhorias. O exemplo utilizava um valor de texto fixo para o nome do ficheiro do objeto binário, mas nós mapeámos o nome de ficheiro original proveniente da base de dados. Além disso, fornecemos outro objeto de entrada, chamado "userPath", para concatenar a localização de uma pasta e o nome do ficheiro.

Neste momento, estamos prontos para testar a transformação clicando no botão "Saída" (Output) que se encontra na parte inferior da janela de design da transformação. O MapForce executa a consulta com os parâmetros definidos na transformação e a janela de saída é aberta:

A primeira saída é simplesmente a mensagem que associámos à função "write-binary-file". Clicar no ícone da seta para a direita abre a segunda saída. A imagem abaixo mostra o que aparece depois de clicarmos no botão "Abrir com..." para definir o Visualizador de Fotografias do Windows como a aplicação para o ficheiro .png.

O caminho do ficheiro fornecido foi "C:\projects\objects" e o nome do ficheiro armazenado na base de dados foi "diffdog_2021.png". O nome do ficheiro exibido na janela de visualização da imagem, "~mf95AE.png", é apenas um nome aleatório usado para a pré-visualização do resultado. O menu "Saída" inclui uma opção para guardar o ficheiro permanentemente:

Podemos editar os parâmetros e tentar outro teste. Desta vez, vamos usar o caractere curinga do SQLite para o parâmetro de ativo, de forma a corresponder a qualquer valor na base de dados:

Quando clicamos no botão "Saída" desta vez, são recuperados vários objetos binários:

Ao analisar todos os resultados dos ficheiros binários, vemos que um deles é uma folha de dados em formato PDF, outro é uma captura de ecrã em formato .png, e um terceiro é um logótipo também em formato .png:

Automatizar o mapeamento de dados em objetos binários

Para expandir os requisitos de utilização, vamos supor que precisamos permitir que qualquer membro da equipa aceda aos recursos de produtos na base de dados, sempre que necessário. O MapForce Server realiza transformações de dados automatizadas, com base em mapeamentos de dados otimizados, criados no MapForce.

Uma cópia do MapForce Server pode ser instalada num servidor de rede e disponibilizada a vários utilizadores. Depois, basta guardar o mapeamento de dados como um ficheiro de execução do MapForce Server (.mfx) através do menu "Saída" do MapForce. Utilizaremos o nome de ficheiro "extract-product-assets-from-DB.mfx".

Os dados podem então ser mapeados a partir da linha de comandos por qualquer utilizador autenticado. Os parâmetros para os componentes de entrada, designados "produto", "ativo" e "userPath", são atribuídos em tempo de execução pelo comando. Podemos até criar um exemplo de comando na linha de comandos num ficheiro de lote que os utilizadores podem editar e executar conforme necessário:

Seria uma tarefa simples adicionar comentários com instruções de edição para listar os valores possíveis para cada parâmetro.

Para uma produção ainda mais automatizada, as configurações do MapForce podem ser implementadas no servidor FlowForce e.. executado com base numa variedade de fatores desencadeadores. Para começar o seu próprio projeto de mapeamento, conversão e transformação de dados, Descarregue uma versão de avaliação gratuita incluindo tutoriais, ajuda e muitos outros exemplos!