【问题标题】:BizTalk: Getting error in Promoted PropertyBizTalk:在提升的属性中出现错误
【发布时间】:2013-12-17 17:51:21
【问题描述】:

当我运行 Orchestration 并尝试通过读取另一个提升属性的值来为提升的属性分配值时,我遇到了错误。

暂停编排错误:

内部异常:消息中没有与属性 BankProcesses.Schemas.Internal_ID' 关联的值。

详情

我有 2 个 XSD 架构,1 个用于调用存储过程并读取其响应,另一个用于将其写入平面文件。需要将 SP 响应中返回的内部 ID 传递给另一个 XSD 架构中的节点以写入平面文件格式。

我已经提升了响应架构中的一个元素,还提升了架构中的一个元素以写入平面文件。我将值分配给提升的属性,如下所示:

strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;

但是当我运行编排时,我得到了上面提到的错误。我已经检查了存储过程的响应,响应 XML 确实包含一些值,但我无法将该值分配给另一个模式。请指教

谢谢, 马尤尔

【问题讨论】:

  • 如果您只想将它​​从一条消息复制到另一条消息并且不需要提升它(因此可以从消息上下文中访问它),那么您最好区分它而不是比推广。推广有较高的处理成本。 Internal_ID 是什么数据类型?

标签: xsd biztalk biztalk-2010 orchestration biztalk-orchestrations


【解决方案1】:

您可以使用exists 来检查属性是否存在。

if(BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response)
{
    strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

    msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
}

【讨论】:

    【解决方案2】:

    可能导致此错误的一种情况是您尝试修改的消息中没有 Header_Internal_ID 元素。您能否在修改之前检查消息以确保存在应更改其值的元素 - 将消息拖放到文件位置,也许。

    如果是这种情况,那么只需确保在第一次实例化 r 消息时创建此元素 - 即使您最初将其设置为空元素。

    HTH

    【讨论】:

      【解决方案3】:

      要检查属性是否存在,可以使用以下语法:

      BMWFS.LS.BizTalk.CFS.BankProcesses.Schemas.Internal_ID 存在 msgCallHeaderSP_Response

      但是,如果源字段始终存在,则必须向后查找属性未出现在上下文中的原因。

      如果它来自端口,消息是否通过 XmlDisassembler 组件传递?如果它来自另一个业务流程,您实际上是在设置属性吗?

      查看上下文的最简单方法是将消息 msgCallHeaderSP_Response 路由到已停止的发送端口。然后您可以在 BizTalk Administrator 中查看上下文。

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多