Modulo 2 – Introducao ao Biztalk Schema
sexta-feira, 29 de agosto de 2014
|
|
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.
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
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:
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.
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