将复杂类型复制到 BPEL 中的消息

发布于 2024-12-27 06:47:31 字数 771 浏览 1 评论 0 原文

我正在使用 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> 

我总是收到传输的空字符串。非常感谢帮助。

I am using Apache ODE to write some simple BPEL's to connect 2 web services.
One of the WSDL files of my two services contains this complex type:

<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>

How do I make a copy from a service return message (which is just a xsd:string) to the input of a message (inside "str" of type "myObject"?

I have tried to do this, but doesnt seem to work:

<assign name="assign_2">
<copy> 
    <from variable="wsA_output" part="return"/>
    <to variable="wsC_input" part="arg0" query="/arg0/str"/> 
</copy> 

I always get a null string transfered. Help much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北城孤痞 2025-01-03 06:47:31

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.

一向肩并 2025-01-03 06:47:31

刚刚发现错误。你是对的,我们需要查询才能找到这样的字段:

 <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 中的默认命名空间与接收中的命名空间不同时,需要 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:

 <assign name="assign_2">
<copy> 
    <from variable="wsA_output" part="return"/>
            <to>$wsC_input.message/arg0/str</to>
</copy> 
</assign>

Also, we need to initialize the variable like this:

 <assign name="assign_init">
<copy> 
    <from>
        <literal><arg0><str xmlns="">nothing</str></arg0></literal>
    </from>
    <to variable="wsC_input" part="arg0"></to>
</copy> 
 </assign>

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文