WSO2 BPS:如何在BPEL调用中作为消息的一部分传递头值

WSO2 BPS:如何在BPEL调用中作为消息的一部分传递头值,wso2,bpel,wso2carbon,Wso2,Bpel,Wso2carbon,我的web服务操作定义如下。其中我还有一个header参数 public void method(@WebParam(name="OrderNo", mode=WebParam.Mode.IN) String order_no_, @WebParam(name="user", mode=WebParam.Mode.IN, header=true) String user) 现在,当我部署这个服务时,我得到了一个如下所示的WSDL <?xml ve

我的web服务操作定义如下。其中我还有一个header参数

public void method(@WebParam(name="OrderNo", mode=WebParam.Mode.IN) String order_no_,
                    @WebParam(name="user", mode=WebParam.Mode.IN, header=true) String user) 
现在,当我部署这个服务时,我得到了一个如下所示的WSDL

<?xml version="1.0" ?>
<wsdl:definitions ... >
    <wsdl:types>
        </xs:schema>
            ...
            <xs:element name="method" type="tns:method"></xs:element>
            <xs:complexType name="method">
                <xs:sequence>
                    <xs:element minOccurs="0" name="OrderNo" type="xs:string"></xs:element>
                </xs:sequence>
            </xs:complexType>  
            ...
            <xs:element name="user" nillable="true" type="xs:string"></xs:element>
            ...
        </xs:schema>
    </wsdl:types>
    ...
    <wsdl:message name="method">
        <wsdl:part element="tns:method" name="parameters" />
        <wsdl:part element="tns:user" name="user" />
    </wsdl:message>
    ...
    <wsdl:portType name="CustomerOrderService">
        <wsdl:operation name="method">
            <wsdl:input message="tns:method" name="method" />
            <wsdl:output ... /> 
            <wsdl:fault ... />
        </wsdl:operation>
    </wsdl:portType>
    ...
    <wsdl:binding name="OrderSoapBinding" type="tns:OrderService">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
        <wsdl:operation name="method">
            <soap:operation soapAction="" style="document" /> 
            <wsdl:input name="method">
                <soap:header message="tns:method" part="user" use="literal" /> 
                <soap:body parts="parameters" use="literal" /> 
            </wsdl:input>
            <wsdl:output name="...">
                <soap:body use="literal" /> 
            </wsdl:output>
            <wsdl:fault name="...">
                ...
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
</wsdl:definitions>  
正如您所见,标头是用作服务请求输入的消息的一部分。Hwen I使用soap UI测试此WSDL—它生成了一条适当的soap消息,其中用户属性作为头的一部分

当我将此服务用作Carbon BPEL流程中的合作伙伴链接,并在调用消息中为用户部分分配一个值时,该值不包含在头中

<bpel:variable name="method_Input" messageType="ns0:method" />  

<bpel:assign name="...">
   ...
   <bpel:copy>
      <bpel:from>$input.payload/tns:TaskReceiver</bpel:from>
      <bpel:to>$method_Input.user</bpel:to>
   </bpel:copy>
</bpel:assign>
您可以看到消息部分被分配了正确的值

问题是绑定到soap消息头的消息部分从未包含在soap头中

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <method xmlns="http://customerorder.service.test/">
            <OrderNo xmlns="">ORD00011</OrderNo>
        </method>
    </soapenv:Body>
</soapenv:Envelope>  
提前感谢您提供的任何帮助