Manipulação de nulos em mapas de mensagens
Uma mensagem pode conter campos que podem conter um valor específico fora do intervalo. Isso é distinto do campo que está vazio. Esses valores são denominados nil ou null e o campo é que seja nillable ou nullable.
Sobre esta tarefa
A árvore de mensagens lógicas suporta o conceito de valores fora do intervalo, usando uma de duas técnicas, dependendo do formato de dados:
- Para XML, o modelo de esquema permite que elementos sejam definidos como nillable para indicar que eles suportam um valor null fora do intervalo. Um elemento XML em um documento é identificado como sendo nilled, representando o valor nulo, tendo um atributo xsi:nil com o valor true. A árvore lógica do analisador XMLNSC para um elemento nilled tem um valor vazio e um atributo filho configurado para xsi:nil, com o valor true. Para elementos que não estão definidos como nillable, não é possível distinguir entre ter um valor vazio ou o valor nulo.
- Para outras mensagens de texto e mensagens binárias que são modeladas com um esquema DFDL ou conjunto de mensagens MRM, os elementos também podem ser definidos como nillable para indicar que eles suportam um valor fora do intervalo. No fluxo de bits da mensagem, um valor reservado é identificado para indicar o estado anulável. A árvore lógica dos analisadores DFDL e MRM para um elemento inexistente tem o valor configurado para o valor especial NULL.
- Para mensagens JSON, os objetos JSON e as matrizes JSON suportam implicitamente o valor nulo JSON para indicar que eles suportam um valor fora do intervalo. No JSON, os dados têm um valor especial chamado null que pode ser configurado em qualquer tipo de dados, incluindo matrizes, objetos, número e tipos booleanos. No editor de Mapeamento de Dados Gráficos, o formato JSON suporta null como um tipo de valor JSON para um objeto ou uma matriz. Quando uma mensagem JSON inclui um objeto com um valor nulo, o valor na árvore de mensagens é configurado para NULL.
Ao mapear valores inexistentes, considere o comportamento quando usar a conversão Mover, Java customizado ou ESQL customizado para configurar um destino.
A tabela a seguir detalha o resultado ao mapear valores inexistentes para diferentes tipos de
destino:
| Origem | Destino (nillable XML) | Destino (XML não nillable) | Destino (nillable não XML) | Destino (objeto ou matriz JSON) |
|---|---|---|---|---|
| Elemento Nillable de XML da Árvore De Mensagens Lógicas | O destino criado como inexistente, terá o atributo xsi:nil 'true', se a origem tiver o atributo xsi:nil 'true'. | Destino criado com valor vazio. | Destino criado com valor NULL, se a origem tiver o atributo xsi:nil 'true'. | Destino criado com valor NULL, se a origem tiver o atributo xsi:nil 'true'. |
| Elemento XML da Árvore de Mensagens Lógicas configurado como NULL | Destino criado com valor vazio. Uma XML de Origem com valor NULL não é considerada um elemento inexistente. | Destino criado com valor vazio. | Destino criado com valor vazio. Uma XML de Origem com valor NULL não é considerada um elemento inexistente. | Destino criado com valor NULL. |
| Árvore de Mensagens Lógicas não XML | Destino criado como inexistente. O destino tem o atributo xsi:nil 'true', se a origem for NULL. | Destino criado com valor vazio. | Destino criado com valor NULL, se a origem for NULL. | Destino criado com valor NULL, se a origem for NULL. |
| Coluna anulável do banco de dados | Destino criado como inexistente. O destino tem o atributo xsi:nil 'true', se a origem for SQL NULL. | Destino criado com valor vazio. | Destino criado com valor NULL, se a origem for NULL de SQL. | Destino criado com valor NULL, se a origem for NULL de SQL. |
| ESQL customizado | Destino criado como inexistente. O destino tem o atributo xsi:nil 'true', se o retorno for ESQL NULL. | Destino criado com valor vazio. | Destino criado com valor NULL, se o retorno for ESQL NULL. | |
| Java personalizado™ | Destino criado como inexistente. O destino tem o atributo xsi:nil 'true', se o retorno for um MbElement com o tipo configurado para "TYPE_UNKNOWN" e um valor de "null" e um elemento-filho xsi:nil 'true'. | Destino criado com valor vazio. | Destino criado com o valor NULL, se o retorno for um MbElement com o tipo configurado para "TYPE_UNKNOWN" e um valor de "null". | |
Expressão XPath customizada: iib:setNull() |
Destino criado como inexistente. O destino tem o atributo xsi:nil 'true', se a origem tiver o atributo xsi:nil 'true'. | Destino criado com valor vazio. | O destino criado como inexistente, terá o atributo xsi:nil 'true', se a origem tiver o atributo xsi:nil 'true'. | Destino criado com o valor nulo JSON. |