Test cases are based on JUnit, you could use any existing one from
iTest or iTest/bpel as an example. If you find issues or have
questions, don't hesitate to ask.

On Thu, May 1, 2008 at 9:01 PM, Ashwini Kumar Jeksani
<[EMAIL PROTECTED]> wrote:
>
> Thanks mike. That was very useful information, I will try to implement it and 
> get back to you.
> Regarding the Test cases could you tell me if there is any standard 
> format/template that we use in Tuscany for writing test cases.
>
> Thanks & Regards
> Ashwini Kumar Jeksani
>
>
> -----Original Message-----
> From: Mike Edwards [mailto:[EMAIL PROTECTED]
> Sent: Thursday, May 01, 2008 5:19 PM
> To: tuscany-user@ws.apache.org
> Subject: Re: Reg: Asynchronous Webservice in BPEL
>
> Ashwini Kumar Jeksani wrote:
>> Hi,
>>
>> I'm trying to create a BPEL for asynchronous web service call. A snippet of 
>> it is shown below:
>>
>> <!-Receive request from client -->
>> <receive createInstance="yes" operation="initiate " 
>> partnerLink="ApprovalProcessClient" portType="ns1:approvalProcessPT" 
>> variable="approvalProcessRequestMessage"/>
>>
>> <!-Asynchronous Web Service Invoke -->
>> <invoke inputVariable="asyncApprovalRequest" operation="submitForApproval" 
>> partnerLink="AsyncApprovalPartner" portType="ns2:asyncApprovalServicePT">
>>          <correlations>
>>             <correlation initiate="yes" pattern="request" set="CS1"/>
>>          </correlations>
>> </invoke>
>> <!-Receive Response from Asynchronous Web Service invoked above -- >
>> <receive operation="onResult" partnerLink=" AsyncApprovalPartner " 
>> portType="ns1:asyncApprovalCallbackPT" variable="asyncApprovalResponse">
>>          <correlations>
>>             <correlation initiate="no" set="CS1"/>
>>          </correlations>
>> </receive>
>>
>> The first receive in the above BPEL snippet is called by a client and 
>> therefore I have declared it as a 'service' in componentType file.
>> The invoke is for invoking an asynchronous web service operation. The 
>> portType of that I have declared as 'reference' in the componentType file.
>> The second receive in the above BPEL snippet acts as a callback to receive 
>> response from an asynchronous web service. Where and How do I specify that 
>> this is a callback? Is there way of specifying callbacks in componentType 
>> file.?
>>
>> Thanks & Regards
>> Ashwini Kumar Jeksani
>
> Ashwini,
>
> ** WARNING - Long Post **
>
> You're certainly going in the right direction here.
>
> One way of specifying that a callback interface is in use is to declare
> it in the SCDL files - in particular in the componentType file, using
> something like this:
>
> <interface.java interface="services.invoicing.ComputePrice"
>                 callbackInterface="services.invoicing.InvoiceCallback"/>
>
> This isn't the only way of specifying the callback, at least for Java
> interfaces, since it is possible to use annotations within the interface
> files, such as:
>
> @Remotable
> @Callback(MyServiceCallback.class)
> public interface MyService {
>
>     @OneWay
>     void someMethod(String arg);
> }
>
> ...and...
>
> @Remotable
> public interface MyServiceCallback {
>
>     void receiveResult(String result);
> }
>
> Note the @Callback annotation in the forward call interface, which
> points at the callback interface.
>
> However, there is nothing like this available in WSDL.
>
> Instead, a WSDL file can contain multiple service definitions (ie
> PortTypes) - and so a single WSDL can hold both the forward and callback
> interfaces, which might look something like this:
>
> ....
>
>     <wsdl:portType name="MyService">
>         <wsdl:operation name="someMethod">
>             <wsdl:input message="tns:someMethodRequest"
>                         name="someMethodRequest"/>
>         </wsdl:operation>
>     </wsdl:portType>
>
>     <wsdl:portType name="MyServiceCallback">
>         <wsdl:operation name="receiveResult">
>             <wsdl:input message="tns:receiveResultRequest"
>                         name="receiveResultRequest"/>
>             <wsdl:output message="tns:receiveResultResponse"
>                          name="receiveResultResponse"/>
>         </wsdl:operation>
>     </wsdl:portType>
>
> ....
>
> In the SCDL which references a WSDL like this, in the component type and
> in any relevant composite file, then it would look like this:
>
> <interface.wsdl
> interface="http://simplecallback#wsdl.interface(MyService)"
> callbackInterface="http://simplecallback#wsdl.interface(MyServiceCallback)"
> />
>
> When you set up a component which uses Web services the SCDL will look
> something like this:
>
> <component name="MyServiceComponent">
>   <implementation.java class="simplecallback.MyServiceImpl" />
>   <service name="MyService">
>     <interface.wsdl
>       interface="http://simplecallback#wsdl.interface(MyService)"
>
> callbackInterface="http://simplecallback#wsdl.interface(MyServiceCallback)"/>
> <binding.ws
> wsdlElement="http://simplecallback#wsdl.port(MyServiceSoapService/MyServiceSoapPort)"/>
> <callback>
> <binding.ws
> wsdlElement="http://simplecallback#wsdl.port(MyServiceCallbackSoapService/MyServiceCallbackSoapPort)"/>
> </callback>
> </service>
> </component>
>
> Excuse the formatting - it does not fit well into the width limits.
>
> Of course, the WSDL that you produce will also have to have the BPEL
> PartnerLinkType elements pointing to the appropriate PortType elements.
>
> I think that's it...
>
> ...you can see an example of this in the simple-callback-ws sample in
> Tuscany.
>
> BTW, what I am working on right now is the code to eliminate the need to
> build the componentType file.  The BPELDocumentProcessor code is bing
> modified to read the BPEL process file and also to follow the links to
> the WSDL files and to resolve the PartnerLink -> PartnerLinkType ->
> PortType chains.  This will result in the generation of the component
> type interface definition as above, with a reference to the PortType for
> forward and callback interfaces.
>
> I should post some code in the next couple of days.
>
>
> Yours,  Mike.
>
>
>
>
>
>
>
> **************** CAUTION - Disclaimer *****************
> This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely 
> for the use of the addressee(s). If you are not the intended recipient, 
> please notify the sender by e-mail and delete the original message. Further, 
> you are not to copy, disclose, or distribute this e-mail or its contents to 
> any other person and any such actions are unlawful. This e-mail may contain 
> viruses. Infosys has taken every reasonable precaution to minimize this risk, 
> but is not liable for any damage you may sustain as a result of any virus in 
> this e-mail. You should carry out your own virus checks before opening the 
> e-mail or attachment. Infosys reserves the right to monitor and review the 
> content of all messages sent to or from this e-mail address. Messages sent to 
> or from this e-mail address may be stored on the Infosys e-mail system.
> ***INFOSYS******** End of Disclaimer ********INFOSYS***
>



-- 
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

Reply via email to