我目前正在处理一个 Oracle SOA 项目,但在将传入消息映射到另一条消息时遇到问题。我是 SOA 和 Oracle 工具集的新手。我正在使用 JDeveloper,以下是“关于”选项卡中列出的版本:
ADF Business Components 11.1.1.62.29
BPMN Editor 11.1.1.6.0.15.53
Java(TM) Platform 1.6.0_24
Oracle IDE 11.1.1.6.38.62.29
SOA Composite Editor 11.1.1.6.0.15.53
Team Productivity Center 11.1.1.6.38.61.92
Versioning Support 11.1.1.6.38.62.29
我的传入消息是一条错误消息,其中包含来自其他服务的失败消息。消息的格式如下:
<Error>
<code />
<service />
...
<Message>
[ORIGINAL MESSAGE HERE]
</Message>
</Error>
我需要将 Message 的内容映射到另一种消息类型。消息标签包含bea:serialize
函数创建的序列化 XML。该消息标签的内容可能因构建错误消息并发送它的服务而异。get-content-as-string function
在我处理映射的 XSL 文件中,使用以下表达式的函数映射消息:
/error-v1:Error/Message
这样做的问题是 Message 标签也被复制了,我真的只想要它的内容。我尝试过使用/error-v1:Error/Message/*
,但 JDeveloper 会产生一个错误,指出该*
节点不是有效节点。如果我忽略错误并进行部署,则在映射发生时进程会出错。我也尝试过使用/error-v1:Error/Message/child::*
,但这会产生相同的错误。
我在网上找到的所有参考资料都说上述方法应该可以工作,但我似乎找不到一个同样适用于 SOA 的解决方案。建议?