Modulo 2 – Introducao ao Biztalk Schema

O Biztalk pode receber as mensagens no formato, XML, Flat File (txt) ou EDI (Electronic Document Interchange), mas sempre vai processar e trabalhar com as mensagem em formato XML.
Isso quer dizer que devemos ter um “esqueleto”, um modelo da mensagem, para saber quais campos esperar e qual estrutura poder validar.
No Visual Studio, utilizamos o Biztalk Schema Editor para criar um schema que representa esse modelo de mensagem. O resultado é um arquivo XSD (XML Schema Definition), onde criar esse arquivo é um dos primeiros passos no desenvolvimento de um novo projeto em Biztalk.

Terminologia do XML


No XML nós temos:

Root: É o elemento Pai do schema. Por definição, o schema de um projeto em Biztalk, sempre deve conter um Root Node.

Namespace: É usado para identificar o schema de forma única, conforme padrão do W3C. Dentro do Biztalk, a mensagem é identificada pelo Namespace + Root Node. É recomendado que essa combinação seja única dentre todos os projetos publicados.

Elemento: Usado para armazenar um dado de forma hierarquica.

Atributo: Usado para associar uma informação adicional ao Elemento e não pode ser aninhado.
Como no exemplo:

<Cliente ID=”12345>Contoso</Cliente>

Nesse exemplo,  dentro do schema a tag Cliente seria o Elemento e o ID dentro da tag, seria o Atributo.

XSDL (XML Schema Definition Language): É uma linguagem usada para criar schemas, a qual representa o formato da mensagem que o Biztalk irá processar.

XPath (XML Path Language): É uma linguagem usada para navegar através da hierarquia de um documento XML.

Biztalk XML Schema


Dentro do nosso projeto no Visual Studio, um schema é representado visualmente da seguinte forma:

image

Se abrirmos o arquivo Schema1.xsd em um editor de texto, vamos encontrar:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://POC_EDI_ACK.Schema1" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://POC_EDI_ACK.Schema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="POC">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Teste" type="xs:string" />
              <xs:element name="Teste2" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Nesse schema, reparem no Root Node, que eu chamei de Root e no namespace que é http://POC_EDI_ACK.Schema1. Nesse schema tenho um Elemento que eu chamei de POC e dentro dele tenho mais dois elementos, que eu chamei de Teste e Teste2.

Segue o equivalente de uma mensagem baseado nesse schema:

<ns0:Root xmlns:ns0="http://POC_EDI_ACK.Schema1">
  <POC>
    <Teste>Teste_0</Teste>
    <Teste2>Teste2_0</Teste2>
  </POC>
</ns0:Root>

Essa mensagem é o que chamamos de Instância de XML.

No Biztalk Schema Editor, conseguimos facilmente alterar qualquer propriedade do schema e seus elementos. Segue a propriedade que representa o Namespace no schema.

image

Como já falei no post anterior, esse Biztalk Schema Editor é muito útil e uso mesmo em outros projetos, pois posso criar meu schema de uma maneira bem facil e intuitiva e depois posso usar o XSD.exe para transformar esse schema em classes .NET.

Namespaces dentro do Biztalk


No nosso exemplo anterior o Namespace aparece na tag xmlns com o seguinte valor http://POC_EDI_ACK.Schema1

Podemos notar também que a mensagem tem um Root Node, o qual está representada pelo elemento Root, mas poderia ser qualquer outro nome.

Para o Biztalk processar as mensagens corretamente, ele deve conseguir identifica-las e assim endereçá-las para o seu destinatario. Dessa forma, conseguimos identificar as mensagens através do seu Namespace#Root Node. Os valores são concatenados com o caracter especial ‘#’.

Voltando ao nosso exemplo, a nossa mensagem seria identificada da seguinte maneira:

http://POC_EDI_ACK.Schema1#Root
Se a mensagem for enviada com o Namespace ou Root Node diferente do que foi publicado, o Biztalk vai lançar uma série de erros e não vai processar a instancia.

Por esse motivo é muito importante e recomendado que nossos schemas sempre tenha um Namespace.

Ao criar um novo schema o Biztalk já sugere um Namespace apropriado, e se esse Namespace gerado não for o ideal, basta mudá-lo na propriedade Target Namespace.

Agora vamos, repita comigo:

DEVO SEMPRE INCLUIR NAMESPACES NO MEU SCHEMA.
DEVO SEMPRE INCLUIR NAMESPACES NO MEU SCHEMA.

Nesse artigo, vimos uma pequena introdução aos Schemas do Biztalk e as mensagens XMLs, além de aprender a importancia de se usar os Namespaces no schema.


Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog