将复杂类型复制到 BPEL 中的消息
我正在使用 Apache ODE 编写一些简单的 BPEL 来连接 2 个 Web 服务。 我的两个服务的 WSDL 文件之一包含以下复杂类型:
<types>
<t:schema targetNamespace="http://ws.panos.com/" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<t:complexType name="myObject">
<t:sequence>
<t:element minOccurs="0" name="str" type="t:string" />
</t:sequence>
</t:complexType>
</t:schema>
如何从服务返回消息(只是一个 xsd:string)复制到消息的输入(在“myObject”类型的“str”内)?
我尝试这样做,但似乎不起作用:
<assign name="assign_2">
<copy>
<from variable="wsA_output" part="return"/>
<to variable="wsC_input" part="arg0" query="/arg0/str"/>
</copy>
我总是收到传输的空字符串。非常感谢帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
to-spec
在 BPEL 1.1 和 BPEL 2.0 中无效。正确的等效表达式是:$wsC_input.arg0/arg0/str
或<查询>/arg0/str
。另请确保在为嵌套结构赋值之前初始化变量。The to-spec
<to variable="..." part="..." query="..."/>
is not valid in BPEL 1.1 nor BPEL 2.0. The correct equivalent expression is:<to>$wsC_input.arg0/arg0/str</to>
or<to variable="wsC_input" part="arg0"><query>/arg0/str</query></to>
. Please make also sure that you initialize the variable before assigning values to nested structures.刚刚发现错误。你是对的,我们需要查询才能找到这样的字段:
另外,我们需要像这样初始化变量:
当 bpel 中的默认命名空间与接收中的命名空间不同时,需要 xmlns=""网络服务。
我只是把这些写下来以供将来参考:)
再次感谢您的回答。
一些也可以帮助其他人的链接:
http://ode.apache.org/faq.html
http://jee-bpel-soa.blogspot.com/2009/08/manipulated-ws-bpel-variables-and.html
Just found the mistake. You are right, we need to query in order to find the field like this:
Also, we need to initialize the variable like this:
The xmlns="" is needed when the default namespace in your bpel is different that the namespace in the receiving web service.
I am just writing these down for future reference :)
Again, thanks for you your answer.
Some links that could also help other people:
http://ode.apache.org/faq.html
http://jee-bpel-soa.blogspot.com/2009/08/manipulating-ws-bpel-variables-and.html