1

当我运行 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 确实包含一些值,但我无法将该值分配给另一个模式。请指教

谢谢,马尤尔

4

3 回答 3

2

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

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

    msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
}
于 2017-11-30T07:30:12.390 回答
0

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

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

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

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

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

于 2013-12-04T16:52:30.097 回答
0

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

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

高温高压

于 2013-12-02T08:18:12.480 回答