要做好工作以避免“未构建的信息”。编译器错误违反BizTalk消息不变性规则?

时间:2018-02-01 10:42:55

标签: .net biztalk

我现在一直在使用BizTalk,其中一个核心规则是消息是不可变的 - 即一旦创建它们就无法更改。这很有意义。

在BizTalk业务流程中,当使用范围块时,您可能遇到的一个常见方案是使用未构造的消息'编译器错误,其中在范围块内使用的消息未100%确定在范围内初始化。一个常见的解决方法是在作用域块之外创建一个赋值形状,以某种方式初始化消息(通过某种'虚拟地图或使用基本XMLDocument对象填充消息的赋值形状等等。)。编译器很高兴。

但是......当然,这违反了规则?消息被赋予一个超出范围的值,然后在范围块中进一步向下,可以通过映射或其他操作给出另一个消息。

1 个答案:

答案 0 :(得分:1)

不,不是全部。 :)

虽然消息实例是不可变的,但可以像任何其他.Net程序一样(重新)分配变量。

因此,编译器实际抱怨的是一个可能未分配的变量。只是因为XLang编译器认为未分配的Message变量特别糟糕。