我们在BPEL流程中使用Validate活动来验证输入和输出消息,如下所示:
<validate name="validateInput" variables="inputVariable"/>
它工作正常,但是当发生验证错误时,消费者只会遇到这种错误:
<env:Fault xmlns:ns0="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
<faultcode>ns0:invalidVariables</faultcode>
<faultstring>faultName: {{http://docs.oasis-open.org/wsbpel/2.0/process/executable}invalidVariables}
messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}</faultstring>
<faultactor/>
<detail>
<exception/>
</detail>
</env:Fault>
所以我的消费者知道他发送了无效的消息,但他根本没有得到关于究竟出了什么问题的信息。
在企业管理器中,我可以看到验证错误消息,其中包含消息验证失败的原因:
无效数据:变量“inputVariable”的值,部分“有效负载” 与此部分的模式定义不匹配元素'ptSrcIdx' 没想到。
我需要将此验证错误消息返回给我的消费者,以便他可以看到他的消息有什么问题。
我将不胜感激任何帮助。谢谢!
答案 0 :(得分:0)
似乎Oracle对此问题有一些补丁,在11.1.1.7中也应该没问题。
与此同时,我们使用自己用java编写的验证器,并从Embed Java BPEL活动中调用。它稍慢(cca + 20%),但工作正常。