Invoking BPEL from c# .NET returns empty value
431235Nov 24 2004 — edited Nov 30 2004Hi,
I'm invoking a very simple BPEL process using c# .NET, but the process seems to return an empty string as return value (also, the input seems to be empty as well). The process works fine from both the BPEL console and a Java client using Axis.
The process is as follows:
**************************************************
<process name="SyncHello" targetNamespace="http://tutorial.oracle.com" suppressJoinFailure="yes" xmlns:tns="http://tutorial.oracle.com" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpelx="http://schemas.oracle.com/bpel/extension" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:cx="http://schemas.collaxa.com/xpath/extension">
<!-- List of services participating in this BPEL process -->
<partnerLinks>
<partnerLink name="client" partnerLinkType="tns:SyncHello" myRole="SyncHelloProvider"/>
</partnerLinks>
<variables>
<variable name="input" messageType="tns:SyncHelloRequestMessage"/>
<variable name="output" messageType="tns:SyncHelloResponseMessage"/>
</variables>
<sequence>
<receive name="receiveInput" partnerLink="client" portType="tns:SyncHello" operation="process" variable="input" createInstance="yes"/>
<assign>
<copy>
<from expression="concat('some','thing')"/>
<to variable="output" part="payload" query="/rating"/>
</copy>
</assign>
<reply name="replyOutput" partnerLink="client" portType="tns:SyncHello" operation="process" variable="output"/>
</sequence>
</process>
*********************************************
The c# code (proxy) is as follows. The process(...) method is then simply called by another c# class which prints out the return value. This return value is an empty string
*********************************************
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Services;
/// <remarks/>
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="SyncHelloSoapBinding", Namespace="http://tutorial.oracle.com")]
public class SyncHelloService : System.Web.Services.Protocols.SoapHttpClientProtocol {
/// <remarks/>
public SyncHelloService() {
this.Url = "http://localhost:9700/orabpel/default/SyncHello";
}
/// <remarks/>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://DefaultNamespace", ResponseNamespace="http://tutorial.oracle.com")]
[return: System.Xml.Serialization.SoapElementAttribute("saveFileReturn")]
public string process(string fileInBase64) {
object[] results = this.Invoke("process", new object[] {
fileInBase64});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult Beginprocess(string fileInBase64, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("process", new object[] {
fileInBase64}, callback, asyncState);
}
/// <remarks/>
public string Endprocess(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
}
*****************************************
NOTE: the code successfully reaches the BPEL process. I've put some java code in a <bpel:exec> to print out to the screen and this works fine. The only problem is that the input and output values to/from the BPEL process are empty
*****************************************
Any help would be greatly appreciated,
Thanks