BizTalk表达式中的案例表达

时间:2014-04-08 15:59:52

标签: expression biztalk biztalk-2010 biztalk-2009 biztalk-orchestrations

如何在BizTalk Orchestration中以表达式形状编写CASE语句?

我试过使用下面的代码但是,它说“未命名的标识符情况是否缺少程序集引用?”

switch case <value>
{
   case "1":
       construct message1
       {
             message1=message2;
        }
       break;
   case default:
       break;
}

2 个答案:

答案 0 :(得分:3)

BizTalk业务流程表达式编辑器有variety of limitations,最值得注意的是,您通常在其他地方编写的许多C#代码都不被接受:switch语句就是一个例子。

只要使用正常的表达式形状(即,不是消息赋值形状),就可以使用IF-ELSE语句(减去if谓词中的赋值)。 Microsoft仅允许C#子集的原因是“to keep code for the business process separate from its implementation code.”

因此,如果您想进行复杂的消息分配,则不应将其打包成单个表达式形状(Microsoft会尽力阻止您)。您可以使用Decide shape作为您的案例的等价物,每个分支都会将您带到相应的消息分配/表达式。

如果您需要的不仅仅是几个可能的分支,那么您可以考虑编写一个带有所有消息分配逻辑的C#帮助程序集,以避免过于复杂的编排。

答案 1 :(得分:1)

除了其他方面,

switch在表达式形状中不受支持。

更多信息:http://msdn.microsoft.com/en-us/library/aa559103.aspx

Orchestration等效项通常是Decide Shape。