"BizTalk ESB Toolkit 2.0": Serviço de Transformação

Ola ;)

Vamos analisar mais detalhado o serviço de transformação incluindo um exemplo de código. Primeiramente vamos analisar como usar este serviço. De modo geral, podemos definir o seguinte cenário: uma mensagem de entrada precisa ser transformada em uma mensagem nova baseado em um mapa de transformação. Este serviço pode ser consumido em conjunto com o serviço de iterações para garantir a interoperabilidade entre diferentes serviços.

Desenho Físico

image

Produtos:

  • Windows 2008 Server
  • SQL Server 2008 SP1
  • Servidor BizTalk Server 2009
  • Microsoft .NET Framework 3.5 SP1
  • BizTalk Adapter Pack v2
  • Microsoft WCF LOB Adapter SDK SP2
  • Microsoft UDDI Services 3 (Integrado com BizTalk 2009)
  • Visual Studio 2008 com SP1
  • Microsoft Visual Studio 2008 SDK 1.1
  • Enterprise Library 4.0
  • Unity Application Block 1.1
  • Microsoft Chart Controls for Microsoft .NET Framework 3.5
  • Microsoft Office 2007 SP1 (Infopath)
  • Microsoft SQLXML 3.0 SP3
  • Windows Powershell 1.0

 

Fluxo de Transformação

Figura 1

Descrição:

  1. Processo encaminha a mensagem com transformação para o “Enterprise Service Bus”
  2. O “Enterprise Service Bus” entrega a mensagens para o serviço de destino
  3. O “Enterprise Service Bus” inicia a transformação baseado no mapa de transformação associado no fluxo de serviços.
  4. O “Enterprise Service Bus” retorna a mensagem transformada para o consumidor do serviço

            EndPoint: /ESB.TransformServices.WCF/TransformationService.svc">https://<server>/ESB.TransformServices.WCF/TransformationService.svc

 

Mapa de Transformação

image

Descrição:

O exemplo abaixo mostra um mapa de transformação de uma mensagem do tipo “Material Scanner Output” para uma do tipo “MaterialBatchMaster”, que é um formato definido dentro do schema do destino com “Functoids” (funções aplicadas na transformação de campos que ajudam na definição das transformações necessárias como concatenações, somatórios ou scripts mais complexos). A criação de um novo mapa de transformação é feito com o Visual Studio 2008 e as ferramentas de desenvolvimento BizTalk 2009. Os mapas de transformações são executados diretamente usando os assemblies registrados no GAC – Global Assembly Cache.

 

 

Exemplo de Código

    1:  private static void ChamaEsbGuidanceTransformServiceHardcode()
    2:  {
    3:  Console.WriteLine("Chamar Serviço de Transformação");
    4:  TransformationServiceClient client =new TransformationServiceClient 
        ("WSHttpBinding_ITransformationService");
    5:  try
    6:  {
    7:  XmlDocument TestDoc = new XmlDocument();
    8:  TestDoc.LoadXml("<InputOutput xmlns=\"https://ESBTest_Para_ESB_Transformado\">
         <TestId>1</TestId><StageIndicator>Completed</StageIndicator></TestOutput>");
    9:  string xmlString = TestDoc.SaidaXml;
   10:  string mapa = "ESBTest_Para_ESB_Transformado,ESBTest, Version=1.0.0.0, 
        Culture=neutral,PublicKeyToken=112202d160c201ec"; 
   11:  string resultString = client.Transform(xmlString, mapa);
   12:  Console.WriteLine(resultString);
   13:  client.Close();
   14:  }
   15:  catch (System.ServiceModel.CommunicationException) { client.Abort();
   16:  }
   17:  catch (System.TimeoutException) { client.Abort(); }
   18:  catch (System.Exception) { client.Abort(); throw; }
   19:  Console.WriteLine("done");
   20:  Console.ReadLine();
   21:  }

Descrição:

  1. 1.    Gerar um Proxy para o serviço de transformação do “Enterprise Service Bus” 2.    Passar uma referência do mapa de transformação para executar 3.    Transformação da mensagem de entrada via um mapa de transformação referenciada no código 4.    Linha de comando mostra a mensagem transformada

 

Na semana que vem, vamos falar mais sobre as outras capacidades do “BizTalk ESB Toolkit 2.0”

Microsoft BizTalk ESB Toolkit 2.0

Ref.: https://msdn.microsoft.com/en-us/dd876606.aspx

O pacote está disponível no link a seguir:

Download BizTalk ESB Toolkit 2.0
Ref.: https://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090

Abraço Markus