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:
- Agora temos a parte gráfica e podemos debugar a "DLL", como se realmente fosse uma orchestration.
- 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.
- 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.
Seja o primeiro a comentar ;)
Postar um comentário