OSB:将 $header 中的值分配给错误处理程序中的变量

OSB: Assign a value from $header to variable in error handler

亲爱的 Whosebugers,

这是我的第一个 post,所以我会努力做到每件事都正确。

在 OSB 组件的错误处理程序中,我需要将现有 $originalHeader 中的值分配给另一个变量以重用它,而无需将值作为文本输入。

在分配操作中,表达式 $originalHeader/privateMetaAttributesHeader/LoggingCategory 对于变量 originalLoggingCategory 执行以下 return:

Debugging_VariablesScreen

我不明白为什么 LoggingCategory 的值没有分配给变量 originalLoggingCategory。请帮我解决这个问题。

$originalHeader 的内容:

<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><v1:privateMetaAttributesHeader xmlns:v1="http://www.example.org/scintilla/meta/v1"><SwingMonitoring>...</SwingMonitoring><LoggingCategory>com.schenker.scintilla.AirOcean.WWTAN.LoadPlanInstructionService.v1</LoggingCategory></v1:privateMetaAttributesHeader></soapenv:Header>

提前致谢。 帕特里克

<privateMetaAttributesHeader><v1:privateMetaAttributesHeader> 之间存在差异,OSB 正确地尊重这一点。

例如

  • $originalHeader/privateMetaAttributesHeader/LoggingCategory 可能为空
  • $originalHeader/v1:privateMetaAttributesHeader/v1:LoggingCategory 可能会 return 您想要的(首先尝试只选择 header,然后继续选择日志记录类别,以防 LoggingCategory 不是在 v1 命名空间中)

您可以定义 OSB 代理阶段中的命名空间 'v1',或者如果您不知道,可以使用 $originalHeader/*:privateMetaAttributesHeader/*:LoggingCategory,但不推荐这样做。