如何动态调用BizTalk Orchestration

时间:2008-09-16 13:36:20

标签: biztalk biztalk-2006

如何在知道业务流程名称的情况下动态调用BizTalk业务流程?

调用Orchestration形状需要在设计时知道Orchestrations的名称和参数。我尝试过使用'call'XLang关键字,但它也需要Orchestration名称作为设计时间,就像在表达式中一样,我们可以写成

call BizTalkApplication1.Orchestration1(param1,param2);

我正在寻找一些方法来指定调用业务流程名称,来自传入消息或来自SSO配置存储。

编辑:我正在使用BizTalk 2006 R1(ESB指南适用于R2而我没有得到它如何解决我的问题)

2 个答案:

答案 0 :(得分:4)

我在过去完成类似工作的方式是在业务流程中使用直接绑定端口,让MsgBox为我做脏工作。基本上,它是这样的:

  1. 使可调用业务流程使用附加到激活接收形状的直接绑定端口。
  2. 使用自定义的基于上下文的属性在激活的接收形状上设置过滤器表达式,并将其设置为唯一标识业务流程的值(例如业务流程名称或其他)
  3. 在调用业务流程中,创建您要用于触发新业务流程的消息。在该消息中,将您的自定义上下文属性设置为与您要触发的特定业务流程中使用的过滤器匹配的值。
  4. 通过直接绑定的发送端口发送消息,以便它直接发送到MsgBox,BizTalk中的Pub / Sub机制将负责其余部分。
  5. 在第4步中需要注意的一件事:要使其正常工作,您需要创建一个包含自定义上下文属性的新关联集类型,然后确保直接绑定的发送端口“跟随”发送上的相关集。否则,只会将自定义属性写入(而不是提升)到msg上下文,并且路由将失败。

    希望这有帮助!

答案 1 :(得分:-1)

请参阅ESB Guidance(www.codeplex.com/esb)此软件包提供您正在寻找的功能