Quando seu aplicativo envia uma mensagem para um intermediário, a forma como os dados da mensagem são interpretados depende do conteúdo da própria mensagem e da configuração do fluxo de mensagens. Se o seu aplicativo envia uma mensagem a ser interpretada pelo analisador XML genérico ou o analisador MRM, que é ajustado por um formato físico XML, o aplicativo pode incluir dados de data ou hora que são representados por qualquer um dos tipos de dados primitivos de data/hora de Esquema XML.
O tipo de dados do Esquema XML de cada parte dos dados é convertido para um tipo de dados ESQL e o elemento que é criado na árvore de mensagens lógicas é do tipo convertido. Se os dados de datetime em uma mensagem de entrada não corresponderem às regras do tipo de dados do esquema escolhido, os valores que o analisador grava na árvore de mensagens lógicas serão modificados, mesmo que a mensagem esteja no domínio MRM e você tenha configurado o fluxo de mensagens para validar a mensagem de entrada. (A validação não está disponível para mensagens XML genéricas).
Isso tem o seguinte efeito nos subcampos dos dados de data e hora de entrada:
Os seguintes exemplos ilustram esses pontos.
Tipo de dados do Esquema XML de Dados de Entrada | Regras do esquema | Valor de entrada no fluxo de bits | Valor gravado na árvore lógica (tipo de dados ESQL entre colchetes) |
---|---|---|---|
xsd:dateTime | CCYY-MM-DDThh:mm:ss | 2002-12-31T23:59:59 | 2002-12-31 23:59:59 (TIMESTAMP) |
--24 | 1970-01-24 (DATE) | ||
23:59:59 | 23:59:59 (TIME) | ||
xsd:date | CCYY-MM-DD | 2002-12-31 | 2002-12-31 (DATE) |
2002-12-31T23:59:59 | 2002-12-31 (DATE) | ||
-06-24 | 1970-06-24 (DATE) | ||
xsd:time | hh:mm:ss | 14:15:16 | 14:15:16 (TIME) |
xsd:gDay | ---DD | ---24 | 1970-01-24 (DATE) |
xsd:gMonth | --MM | --12 | 1970-12-01 (DATE) |
xsd:gMonthDay | --MM-DD | --12-31 | 1970-12-31 (DATE) |
xsd:gYear | CCYY | 2002 | 2002-01-01 (DATE) |
xsd:gYearMonth | CCYY-MM | 2002-12 | 2002-12-01 (DATE) |
Ao considerar qual tipo de dados de datetime do esquema utilizar, lembre-se de que se a mensagem estiver no domínio MRM e se você configurar o fluxo de mensagens para validaá-las, os subcampos ausentes poderão provocar exceções de validação.
Os tipos de dados do esquema Gday, gMonth, gMonthDay, gYear e gYearMonth são utilizados para registrar períodos de tempo recorrentes específicos. Existe uma confusão potencial quando a validação é ativada, porque os períodos de tempo recorrentes que são utilizados nesses tipos de dados do esquema são armazenados pelo ESQL como pontos específicos no tempo.
Por exemplo, quando o 24º dia do mês, que é um tipo gDay (um dia do mês), é gravado na árvore lógica, os subcampos de mês e ano ausentes são fornecidos a partir da época (janeiro de 1970) para fornecer a data específica 1970-01-24. Se você codificar o ESQL para manipular essa data, por exemplo, incluindo um intervalo de 10 dias e, em seguida, gerar uma mensagem de saída validada, surgirá uma exceção. Isso ocorre porque o resultado do cálculo é 1970-02-03, o que é inválido porque o subcampo de mês da data não corresponde mais à data da época.