Mapeamentos Repetitivos

Mapeamentos repetitivos ocorrem onde uma estrutura ou campo ocorre várias vezes em uma mensagem e é definido no estágio de definição da mensagem.

Por exemplo, na tabela a seguir a mensagem de origem contém uma estrutura denominada cliente com campos de cidade e país. Debaixo dela estão duas estruturas idênticas denominadas nome contendo campos idênticos denominados prenome e sobrenome. Essa é uma estrutura repetitiva e se for mapeada para outra estrutura repetitiva, conforme mostrado no campo de destino, o mapeamento múltiplo de campos da origem para o destino será manipulado automaticamente.
Origem Destino
cliente
  • cidade
  • país
nome[1]
  • prenome
  • sobrenome
nome[2]
  • prenome
  • sobrenome
cliente
  • local

customername[1]

  • prenome
  • sobrenome

customername[2]

  • prenome
  • sobrenome

As origens e os destinos são mapeados utilizando nós de árvore; e um nó de árvore representa um tipo schema (incluindo tipos de mensagem) ou uma tabela ou coluna do banco de dados. Em outras palavras, um nó de árvore representa o contêiner para o tipo de mensagem específico.

Um nó repetível é um nó com as seguintes combinações de ocorrências máximas e mínimas: Os casos * implicam ocorrências máximas não limitadas e ... representa o intervalo. De um ponto de vista de mapeamento, isso implica que o destino utiliza o número de instâncias do lado da entrada como seu limite real em vez de restringi-lo artificialmente.

É possível expandir um nó repetitivo para mostrar as instâncias. Uma instância, ou de forma mais completa, um nó de elemento de instância, é uma ocorrência única de um elemento repetitivo. Por exemplo, se um campo tem 10 ocorrências, cada uma delas pode ser considerada como um nó de elemento da instância. Isso não é equivalente à instância de tempo de execução que é recebida na mensagem real, mas é um marcador para o caso de esta instância do elemento ocorrer na mensagem. Neste tópico, a instância refere-se ao tipo de tempo de implementação da instância em contraposição à instância de tempo de execução.

As instâncias são produzidas no mesmo nível do nó repetível e são irmãos deste. Elas refletem a estrutura do nó e fornecem entidades que podem ser mapeadas para identificar exatamente qual instância o usuário deseja utilizar para o mapeamento. Cada novo irmão recebe um sufixo com o número do índice da instância atual.

O índice tem base 1 para ESQL ao invés de base 0 como em Java.

Como um exemplo, considere a seguinte estrutura:

mensagem1
      |_ top
            |_ middle
                  |_bottom

em que middle e bottom são repetíveis; e middle se repete n1..m1 vezes e bottom se repete n2..m2 vezes

Cada nó de instância expandido pode ser utilizado em um mapeamento exatamente como qualquer outro elemento não-repetível, já que esse nó é não-repetível. Contudo, ele pode conter filhos que são repetíveis no caso de níveis de repetições aninhados. Não é significativo expandir o nível superior de uma estrutura aninhada, como na mensagem mostrada acima, quando os níveis internos não são expandidos, por isso a expansão expande automaticamente os filhos sob ela para ter o número mínimo de instâncias que esses nós repetíveis aninhados exigem. No exemplo, isto significa que uma expansão mínima requerida para middle resulta em n1 instâncias, sendo criadas, porém os filhos de middle não serão um único conjunto com apenas um bottom. As ocorrências mínimas dessa instância serão utilizadas para determinar o número de pedidos.

O exemplo a seguir mostra um nó de árvore completo expandido parcialmente.

mensagem1
      |_ top
            |_ meio[]
                  |_parte inferior[]
            |_ meio[1]
                  |_parte inferior[]
                  |_parte inferior[Todos]
                  |_parte inferior[1]

Nesse exemplo, uma entrada seguida por [] é referida como um nó repetível, uma seguida por [All] é referida como um nó all e uma seguida por [1] é referida como um nó de elemento da instância.

Conceitos relacionados
Condições de Mapeamento
Mapeamentos de Caso

Tarefas relacionadas
Desenvolvendo Mapeamentos
Configurando um Mapeamento

Referências relacionadas
Mapeamentos