Chamar dinamicamente uma orchestration com shape “Call Orchestration”

Usar o shape de “Call Orchestration” nos obriga a adicionar a referencia do projeto que inclui a Orchestration que vai ser chamada. Mas isso tem um grande inconveniente: se 100 projetos usarem essa Orchestration, quando houver alguma atualização, vou precisar excluir as 100 Orchs do Console para conseguir fazer o Update.

Então quais seriam as opções disponíveis chamar a orchestration dinamicamente?

  1. Publicar a orchestration como Web Service. Problemas: Envolve o IIS, que em caso de grande demanda poderá ficar fora.
  2. Usar direct port. Apesar de cair um pouco a performance, seria uma boa opção se a orchestration não retornasse nenhuma mensagem, exigindo uma porta de request-response.
  3. No caso de request-response usar a direct port com self-correlation. Problemas: volta ao problema original de criar uma dependência entre os projetos, pois devemos usar a mesma porta nas duas orchestration.

Pesquisando na internet encontrei em um blog a solução perfeita: uma forma de passar o Assembly da Orchestration de forma dinâmica para o shape “Call Orchestration”.

No blog, ele sugere criar uma Dll que imita uma orchestration, ou seja, fazer uma orchestration customizada sem a parte gráfica. Nessa “orchestration”, recebe dois parâmetros, o Assembly da orchestration e um ArrayList com os parâmetros que deverão ser passados.

Muito inteligente a solução e realmente funciona. No blog o autor coloca um link para baixar o exemplo, com a Dll, orchestrations e exemplo de como utilizar o shape Expression para chamar a orchestration (precisa adicionar referência).

Segue o endereço do blog.

http://www.jonfancey.com/default.aspx?key=2007-03-07T09:08:12Z

Eu também disponibilizei um exemplo, baseado no que ele fez. Segue o link.

http://dynamicinvocation.codeplex.com/

Até a próxima! Espero que tenham gostado. :)

3 Comentários:

felipe disse...

Muito interessante o blog!!!
Materiais importantes e disponibilizados em portugues ótima idéia!! Pioneiros com este nivel de conteudo! não deixem o blog morrer!!

abraços

Ruth Resende disse...

Por favor leiam a segunda parte desse artigo:
http://biztalkbrasil.blogspot.com/2009/11/chamar-dinamicamente-uma-orchestration.html

Ruth Resende disse...

Esta solução contem um bug quando usado com portas do tipo Request-Response, por favor leiam a Parte 2 deste post.

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog