BizTalk不断要求初始化消息的初始化



在我的编排中,我有各种步骤将平面文件映射到2个中间消息,并最终将其写入SQL。首先,我毫无例外地处理了它,它可以使用有效的输入文件。

                msg0        msg1       msg2
┌──────┐  ┌─────┐  ┌───────┐  ┌───────┐  ┌─────┐
│ PIPE │-►│ RCV │-►│ MAP_1 │-►│ MAP_2 │-►│ SQL │
└──────┘  └─────┘  └───────┘  └───────┘  └─────┘

现在,我正在尝试获取我使用地图的每个范围的异常。在编排开始时,在第一次接收形状之后,我放了一个构造信息形状,以初始化编排中的所有消息。我创建捕获块(每个都带有我的falts_msg及其发送形状的构造形状),文件端口。

                             msg0          msg1          msg2
┌──────┐  ┌─────┐  ┌──────┬──┐  ┌───────┬──┐  ┌───────┬──┐  ┌─────┬──┐
│ PIPE │-►│ RCV │-►│ INIT │ex│-►│ MAP_1 │ex│-►│ MAP_2 │ex│-►│ SQL │ex│
└──────┘  └─────┘  └──────┴──┘  └───────┴──┘  └───────┴──┘  └─────┴──┘

vs即使在地图块中也要求输入已填写的消息(或已填充或任何术语)的消息。为什么是?

edit :我发现BT想要在异常处理过程中初始化的每个味精。因此,我需要构造我的自定义故障消息,该消息将返回空消息以及我的自定义故障消息。为了初始化它们,当然我需要在表达式代码开始时声明:

    unusedMsg.Part = new System.Xml.XmlDocument();

现在是:最后一个映射(SQL)仍然出现问题:

           ┌──────────────────────┐
           │        scope         │
           │  ┌────────────────┐  │ 
┌──────┐   │  │      MAP       │  │    ┌────────┐
│ msg2 │ -►│  │ msg2  > sqlReq │  │ -► │ sqlReq │
└──────┘   │  └────────────────┘  │    └────────┘
           ├──────────────────────┤
           │         ex           │
           │  ┌────────────────┐  │
           │  │   construct    │  │    ┌────────┐
           │  │ msg2  > msgERR │  │ -► │ msgERR │
           │  └────────────────┘  │    └────────┘
           └──────────────────────┘

它不断问这个:

msg2.part':消息部分尚未在construct语句中初始化

但是我确定MSG2是初始化的,因为我没有例外,并且正在进入新范围。怎么可能?

在biztalk

中以下情况下,尚未在构造语句中初始化错误"消息"部分。
  1. 您的构造形状正在构造与源消息之一相同的消息。例如,在以下内容中,您需要从构造的消息中删除MSG2。

                  CORRECT                                  WRONG
           ┌──────────────────────┐               ┌──────────────────────┐
           │   CONSTRUCT MESSAGE  │               │   CONSTRUCT MESSAGE  │
           │ messages constructed │               │ messages constructed │
           │     sqlReq           │               │     sqlReq, msg2     │
           │  ┌────────────────┐  │               │  ┌────────────────┐  │
           │  │      MAP       │  │               │  │      MAP       │  │
           │  │ msg2  > sqlReq │  │               │  │ msg2  > sqlReq │  │
           │  └────────────────┘  │               │  └────────────────┘  │
           └──────────────────────┘               └──────────────────────┘
    
  2. 您正在构造构造形状的多个消息,但是后来的消息取决于您在构造中较早初始化的另一个消息。

                  CORRECT                                  WRONG
           ┌──────────────────────┐               ┌──────────────────────┐
           │        Construct     │               │        Construct     │
           │ messages constructed │               │ messages constructed │
           │     sqlReq, sqlReq2  │               │     sqlReq, sqlReq2  │
           │  ┌────────────────┐  │               │                      │
           │  │      MAP       │  │               │                      │
           │  │ msg2  > sqlReq │  │               │                      │
           │  └────────────────┘  │               │                      │
           │  ┌────────────────┐  │               │  ┌────────────────┐  │
           │  │      MAP       │  │               │  │      MAP       │  │
           │  │sqlReq > sqlReq2│  │               │  │sqlReq > sqlReq2│  │
           │  └────────────────┘  │               │  └────────────────┘  │
           └──────────────────────┘               └──────────────────────┘
    

错误"使用未构造消息"的错误。

  1. 您正在尝试将消息用作范围内的源,该范围既不在范围开始时也不在范围内的构造形状之前初始化。

  2. 您正在尝试在您试图捕获异常的范围内初始化的异常块中使用消息。

  3. 您正在使用仅在某些范围区域构建的范围之后的消息。它需要在所有范围区域构建。

最新更新