Chamar dinamicamente uma orchestration com shape “Call Orchestration” - Parte 2

Há algum tempo atrás apresentei aqui, no blog, uma solução para evitarmos a dependência entre orchestration ao utilizar o shape “Call Orchestration”.

O artigo pode ser lido em: http://biztalkbrasil.blogspot.com/2009/10/chamar-dinamicamente-uma-orchestration.html.

Pois bem. Qual não foi minha surpresa ao utilizar o código disponibilizado pelo Jon Facey, e me deparar com um erro, toda vez que a orchestration chamada, ficava com o status dehydrate.

Segue o erro:

DehydrationFailedException Type 'System.Xml.XmlDocument' in Assembly 'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.

Então percebi que se na orchestration chamada houvesse uma porta de uma única direção (request) a solução funcionava bem. Mas se houvesse uma porta de direção dupla (Request/Response), a orchestration ao mudar seu status para dehydrate o exception era acionado.

Para resolver criei outra solução, baseado na idéia do Jon mas com diferenças significativas:

  1. Agora temos a parte gráfica e podemos debugar a "DLL", como se realmente fosse uma orchestration.
  2. Criei 3 parâmetros: 1 string de entrada TipoProcesso, que representa o Assembly a ser passado; MsgIn parâmetro de entrada do Tipo XMLDocument; MsgOut parametro de saida do tipo XMLDocument.
  3. Com esses novos parâmetros a orchestration que será chamada deverá obrigatoriamente conter o parâmetro de entrada do tipo XMLDocument e parâmetro de Saída do tipo XMLDocument.

Por favor, postem um comentário, caso tenham algum outro problema com a DLL.

Disponibilizei um novo release do projeto. Segue o link.

http://dynamicinvocation.codeplex.com/

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog