![](/img/trans.png)
[英]BPEL Error : [MessageVariableRequired] Cannot use non-message variable
[英]copy complexType to message in 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>
我总是会传输一个空字符串。 帮助非常感谢。
规范<to variable="..." part="..." query="..."/>
在BPEL 1.1或BPEL 2.0中均无效。 正确的等效表达式为: <to>$wsC_input.arg0/arg0/str</to>
或<to variable="wsC_input" part="arg0"><query>/arg0/str</query></to>
。 在将值分配给嵌套结构之前,还请确保初始化变量。
刚发现错误。 没错,我们需要查询才能找到如下所示的字段:
<assign name="assign_2">
<copy>
<from variable="wsA_output" part="return"/>
<to>$wsC_input.message/arg0/str</to>
</copy>
</assign>
另外,我们需要像这样初始化变量:
<assign name="assign_init">
<copy>
<from>
<literal><arg0><str xmlns="">nothing</str></arg0></literal>
</from>
<to variable="wsC_input" part="arg0"></to>
</copy>
</assign>
当bpel中的默认名称空间与接收Web服务中的名称空间不同时,需要xmlns =“”。
我只是写下这些以备将来参考:)
再次感谢您的回答。
一些也可以帮助其他人的链接:
http://ode.apache.org/faq.html
http://jee-bpel-soa.blogspot.com/2009/08/manipulating-ws-bpel-variables-and.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.