---
title: Mapeamento de dados estruturados com funções de nó aprimoradas
date: 2024-05-03
categories:
  - data-integration
  - tools
tags:
  - data-integration
  - data-mapping
  - mapforce
  - software-tools
description: Filtros especiais no MapForce otimizam as funções dos nós para a mapeamento de dados estruturados
---
Status: #blog

Tags:  #data-integration #data-mapping #mapforce #software-tools

Categories: [data-integration](/blog/pt/category/data-integration.md) 
# Mapeamento de dados estruturados com funções de nó aprimoradas

Já mencionámos anteriormente o [suporte para funções de nó](https://www.altova.com/blog/node-functions-simplify-mapping-hierarchical-data-structures/), que simplifica a associação de dados estruturados, eliminando a necessidade de copiar e colar uma função várias vezes numa associação. A repetição desnecessária da mesma função dificulta a compreensão e a revisão do esquema de associação de dados, tornando-o mais confuso.

O MapForce também inclui filtros adicionais que permitem definir funções para os nós. Estes parâmetros permitem aos desenvolvedores aplicar funções e valores padrão a nós específicos, com base em critérios definidos por eles. Por exemplo, é possível aplicar uma função a um nó com base em metadados do nó, como o nome do nó, o comprimento do nó, a precisão do tipo de dados do nó, anotações personalizadas do nó, e muito mais.

Vamos analisar um esquema com funcionalidades de nó aprimoradas.

![](/blog/images/mapping-structured-data-with-node-functions.jpg)

<!--more-->

A [mapeamento de dados](https://www.altova.com/pt/mapforce) apresentado abaixo é um exemplo da função do nó PriceCalculation.mfd, instalado com o MapForc. Este exemplo calcula o preço final de venda de uma lista de artigos, com base no seu custo original e um fator de margem. Os dados de origem são um ficheiro de texto no formato CSV e o resultado é um ficheiro XML.

[![Um exemplo do MapForce que demonstra como mapear dados estruturados utilizando funções de nó](/blog/images/mapping-structured-data-example.png)](mapping-structured-data-example.png)

Nesta configuração, uma [função de nó](https://www.altova.com/pt/mapforce#node-functions) é definida e aplicada ao elemento "Artigos" no ficheiro de saída, bem como aos seus elementos filhos. Clicar duas vezes no ícone da função, em negrito, localizado à esquerda do elemento "Artigos", abre a definição da função de nó.

[![Visualizar uma função de nó numa representação estruturada de dados](/blog/images/open-node-function.png)](open-node-function.png)

O menu suspenso "Aplicar a" no canto superior esquerdo indica que a função se destina a ser aplicada a todos os elementos filhos de "Article". A secção de descrição da função informa que esta função utiliza o elemento de metadados do nó "node_fractionDigits" como parâmetro para a função de arredondamento. Se "node_fractionDigits" não estiver definido para nenhum elemento filho, o valor zero será utilizado em substituição.

Podemos aprofundar a análise da função do nó clicando no botão "Editar", que aparece no centro superior da imagem acima. Isso abre a função numa janela de mapeamento de dados separada, numa visualização semelhante a uma função definida pelo utilizador:

[![Definir uma função de nó para mapear dados estruturados](/blog/images/node-function-definition.png)](node-function-definition.png)

O elemento de mapeamento "node_fractionDigits", localizado no canto inferior esquerdo, fornece um valor de entrada para a função, com base na estrutura dos dados de destino. Vamos analisar um pouco mais os metadados do nó para localizar o elemento "node_fractionDigits".

### Definição de metadados do nó

Os metadados disponíveis para qualquer ficheiro de dados estruturados provêm da própria definição da estrutura de dados. No nosso exemplo, o componente de destino da mapeamento é um documento XML. Portanto, os metadados disponíveis para qualquer nó são definidos no esquema XML.

A imagem abaixo mostra o esquema XML de Cálculo de Preço na visualização gráfica do XMLSpy:

![Visualização gráfica de um esquema XML da Altova, utilizada para definir um alvo para o mapeamento de dados estruturados](/blog/images/altova-xml-schema-view.png)

O elemento XML "SalePrice" destacado no diagrama é definido como uma instância do tipo "Amount", que, por sua vez, é um número decimal com um máximo de 2 dígitos fracionários, como se pode ver na janela "Facets" no canto inferior direito. Portanto, o metadado "node_fractionDigits" para o nó "SalePrice" é 2.

Os parâmetros da função de nó disponíveis para qualquer ficheiro de dados estruturados dependerão sempre do tipo de dados – XML, base de dados relacional, PDF, ficheiro CSV, etc. – e do nível de detalhe incluído na definição do esquema.

### Mapeamento de dados estruturados com parâmetros de funções de nós

Ao criar uma nova função de nó, inicialmente será apresentada uma "valor bruto" e um "valor de resultado" que não estão relacionados. Clique no botão azul "Adicionar detalhes do nó" para inserir um parâmetro da função do nó. Isso abrirá a janela "Detalhes do nó", onde poderá selecionar um parâmetro do nó:

![Adicionar um parâmetro de função para os nós, permitindo a mapeamento de dados estruturados](/blog/images/add-node-function-parameter.png)

Note que existe uma opção para os casos em que um determinado nó não suporta o tipo de metadado selecionado. No mapeamento do cálculo de preços, este comportamento é tratado diretamente na definição da função do nó. A função do nó é aplicada apenas a tipos de dados numéricos, e para qualquer nó em que o parâmetro "fractionDigits" não esteja especificado, a função "substitute-missing" fornece o valor zero em vez.

### Observar a execução da função do nó

Podemos definir um ponto de interrupção a partir do menu de contexto que aparece ao clicar com o botão direito em qualquer nó do componente de saída, e utilizar o depurador MapForce integrado para observar a execução da função.

Na visualização parcial abaixo, o ponto de interrupção foi definido na variável "SalePrice". Executámos o mapeamento a partir do menu de depuração e a execução foi interrompida no ponto de interrupção, com os valores intermédios adicionados à janela de mapeamento principal.

![Visualizar o resultado da execução da função do nó utilizando o depurador MapForce integrado](/blog/images/node-function-debugging.png)

Podemos verificar que o último valor de "SalePrice" calculado pelo mapeamento foi 49,183323875. A função do nó arredondou o valor final para 49,18.

A execução real da função do nó não é exibida nos resultados de depuração na janela principal de mapeamento, mas clicar na janela de mensagens abre a função do nó, mostrando todos os valores intermédios:

![Janela de mensagens no Altova MapForce para mapeamento de dados estruturados](/blog/images/messages-window.png)

![Os detalhes da execução das funções dos nós podem ser visualizados no depurador integrado do MapForce](/blog/images/node-function-debug-result.png)

Os exemplos instalados com o MapForce incluem várias outras mapeamentos de dados de funções de nós. O sistema de ajuda integrado do MapForce inclui até mesmo um tutorial passo a passo para criar um mapeamento de função de nó do zero.

Pode até mesmo modificar o exemplo de mapeamento descrito aqui para verificar por si mesmo como a saída se altera. Por exemplo, pode editar o esquema XML para permitir três dígitos fracionários, ou alterar o mapeamento para permitir que a função do nó seja executada no nó Numérico, que é o primeiro filho de "Article", e analisar o novo resultado.

Para ver as funções de nós em funcionamento, consulte este vídeo de demonstração do MapForce.

![](https://www.youtube.com/watch?v=EvuwgaKOkjA)
