Ir para o conteúdo

Estruturas Hierárquicas para Planas

Mapeamento de Instância

Uma "Instância" pode ser uma linha em uma tabela de banco de dados ou um elemento XML que pode ter um valor, atributos ou subelementos. Quando o mapeamento de uma instância de destino depende possivelmente de mais de uma instância de origem, chamamos de "Mapeamento de Instância". Um bom exemplo é o mapeamento de uma origem representada por itens de linha especificando o custo e a quantidade mapeada para um campo de destino que representa o custo total. Outro exemplo é o mapeamento de uma origem que contém várias instâncias de pares de valor de nome para um campo de destino que representa um nome de usuário. "Mapeamento de instância" permite que o usuário defina um mapeamento para reduzir a origem de várias instâncias a uma única instância de destino. Ele basicamente permite que o usuário mova dados orientados por linha para dados orientados por coluna, com o número de registros gerados ditados pelo nível dos dados que estão sendo mapeados. Isso pode ser demonstrado por mapeamentos de Estruturas Hierárquicas para Planas, onde você precisará resolver algumas informações de um ou mais registros anteriores ou de "nível superior".

Duas situações de exemplo são fornecidas abaixo para ilustrar como obter transformações hierárquicas para planas.

Exemplo de Situação 1

Considere a seguinte situação, em que um documento XML de origem contém uma estrutura de loop com muitos níveis, com um documento de destino desnormalizado (simples). Isso pode ocorrer em outros tipos de transformações, como texto complexo para banco de dados, etc.

Estruturas e Dados do Documento

  • Estrutura do Documento de Origem: O documento de origem é um documento XML com muitos níveis, alguns dos quais em loop.

  • Dados do documento de origem: Este arquivo contém dados de amostra que espelham a estrutura do arquivo DTD.

  • Estrutura do documento de destino: o documento de destino é um arquivo de texto.

Cenário

O desafio de mapear os documentos de origem e destino é mapear corretamente os níveis da origem com os níveis do destino, certificando-se de que os dados corretos sejam colocados no destino.

Neste cenário de mapeamento, um registro para cada número de item precisa ser criado. Para fazer isso, um número de item no documento XML de origem deve ser mapeado para a coluna de número de item do destino. Quando fazemos isso, estamos criando um registro (destino) para cada entrada de item de estoque (origem).

Nota

Os itens listados mais de uma vez criarão registros adicionais. Neste exemplo simples, isso equivalerá a 4 registros (ABC-123, ABC-456, ABC-123, DEF-456).

Em seguida, a quantidade de cada número de item de origem deve ser mapeada para o campo de quantidade do destino. Depois de concluído, o destino ficaria assim:

Número do item Quantidade Cor Peso Custo Código de armazém Estado de depósito
ABC-123 450
ABC-456 210
ABC-123 65
DEF-456 75

Mapeie o atributo de custo

Para obter o atributo Cost, mapeie o elemento attributevalue da tag de atributo para o campo Cost do destino. Como pode haver mais de uma entrada de código/valor de atributo sob a tag de atributo, você deve especificar qual atributo será mapeado para o campo Custo do destino. Assim, você deve definir qual atributo exato usar para o campo Custo. Neste exemplo, é o código de atributo de custo.

Cuidado

Os elementos de dados da fonte que são candidatos devem ser elementos de dados que estão no mesmo nível do elemento de dados mapeado, o que significa que só pode ser attributecode. Usar qualquer outro nível acima ou abaixo deste não faria sentido.

Agora que sabemos quais são as opções, precisamos de uma maneira de defini-las. Neste exemplo, seria para identificar que queríamos o attributevalue onde o attributecode é igual a Cost. Também pode ser que os atributos sejam entregues em uma determinada ordem e que sua posição determine a instância correta do atributo.

Siga estas etapas para mapear o custo corretamente:

  • Selecione [V] sob o elemento attributevalue no painel de origem.

  • Clique em Custo no painel de destino.

  • Clique no ícone Mapa.

  • Clique no ícone Fórmula para exibir o Construtor de Fórmulas.

hf mapandcreateformula

  • O Construtor de Fórmulas deve aparecer. Abra a pasta Instance no painel esquerdo e selecione a função FindValue().

  • Clique no botão Inserir para adicionar esta função à sua expressão.

  • A nova expressão aparece no painel na parte superior da caixa de diálogo.

instancemappingsample2 2of4

  • Agora você precisa configurar corretamente os parâmetros da função:

    • Destaque cuidadosamente o primeiro <arg> na sua expressão no topo da janela. Este parâmetro deve ser o nome do atributo, então digite COST, substituindo o <arg> na expressão.

    • Este parâmetro fornece o código usado no elemento de dados de origem. Certificando-se de que o segundo da expressão <arg>estiver realçado, substitua-o clicando duas vezes no elemento de dados [V] do attributecode.

    • O último parâmetro retorna o valor do elemento de dados de origem. Certificando-se de que a expressão é a última <arg>estiver realçado, substitua-o clicando duas vezes no elemento de dados [V] de attributevalue.

  • Compare sua expressão com a figura abaixo e clique em OK para fechar a janela quando terminar.

instancemappingsample 1 3of4

Complete a amostra

Repita as etapas listadas acima para mapear os atributos WEIGHT e COLOR na origem para suas contrapartes de destino.

A saída de dados final seria a seguinte:

Número do item Quantidade Cor Peso Custo Código de armazém Estado de depósito
ABC-123 450 AZUL 13 450,00 WH123 WA
ABC-456 210 VERDE 5 525,00 WH123 WA
ABC-123 65 AZUL 13 450,00 WH456 Tx
DEF-456 75 - 23 1250,00 WH456 Tx

Você concluiu o exercício do Exemplo 1. Compare seu trabalho com a figura abaixo.

hf 1 mapa completo

Exemplo de Situação 2

Este exemplo é semelhante ao da Situação de Exemplo 1, exceto que a estrutura do documento de origem é um pouco diferente. Além disso, em vez de mapear as informações do item, iremos montar códigos de armazém baseados em registros.

Estruturas e Dados do Documento

  • Estrutura do documento de origem: O documento de origem é um documento XML com muitos níveis, alguns dos quais em loop. Observe que esta DTD é diferente da Situação Amostra 1: Nesta DTD, as informações do armazém são separadas dos itens em estoque.

  • Dados do documento de origem: Este arquivo contém dados de amostra que espelham a estrutura do arquivo DTD.

  • Estrutura do documento de destino: o documento de destino é um arquivo de texto. Essa estrutura de destino difere do destino da Amostra 1 porque usa uma coluna separada para identificar cada depósito.

Cenário

Semelhante à Amostra 1, queremos criar um registro para cada número de item, mas queremos que cada um dos armazéns seja listado por colunas no destino. Para fazer isso, precisamos criar um registro para cada entrada de item de estoque no arquivo XML de origem. Neste exemplo, isso equivalerá a 3 registros (ABC-123, ABC-456, DEF-456).

Temos os atributos de instockitem, que contém os armazéns onde o item é estocado (instockat). Dentro deste atributo pode haver 0 ou mais entradas para identificar todos os armazéns onde o item pode ser encontrado, bem como a quantidade no armazém. O que precisamos fazer é colocar todos os de WH123, etc. na coluna apropriada.

A lógica para o número do item ABC-123 e armazém WH123 seria:

Obtenha o valor do atributo "quantidade" do item "ABC-123" onde o atributo "whcode" é igual a "WH123".

Por exemplo, a resposta a ser fornecida para WH123 para o item número ABC-123 seria 450.

Siga estas etapas para mapear e configurar corretamente o número do item:

  • Mapeie o elemento de dados itemnumber da origem para o itemnumber do destino.

  • Mapeie o elemento de dados itemquantity da origem para o elemento de dados WH123 do destino.

  • Os dados do WH123 precisam ser qualificados. Selecione o elemento de dados WH123 do alvo e clique no botão Fórmula para iniciar o Formula Builder.

hf2 criar fórmula

  • O Construtor de Fórmulas deve aparecer. Abra a pasta Instance no painel esquerdo e selecione a função FindValue().

  • Clique no botão Inserir para adicionar esta função à sua expressão.

  • A nova expressão aparece no painel na parte superior da caixa de diálogo.

instancemappingsample2 2of4

  • Agora você precisa configurar corretamente os parâmetros da função:

    • Destaque cuidadosamente o primeiro <arg> na sua expressão no topo da janela. Este parâmetro deve ser o nome do atributo, então digite WH123, substituindo o <arg> na expressão.

    • Este parâmetro fornece o código usado no elemento de dados de origem. Certificando-se de que o segundo da expressão <arg>estiver realçado, substitua-o clicando duas vezes no elemento de dados [V] do attributecode.

    • O último parâmetro retorna o valor do elemento de dados de origem. Certificando-se de que a expressão é a última <arg>estiver realçado, substitua-o clicando duas vezes no elemento de dados [V] de attributevalue.

  • Compare sua expressão com a figura abaixo e clique em OK para fechar a janela quando terminar.

instancemappingsample2 3of4

Complete a amostra

Repita as etapas acima para os dois armazéns restantes, WH456 e WH789, definindo seus valores de acordo. Você terá concluído o exercício do Exemplo 2. Compare seu trabalho com a figura abaixo.

hf2 completo0