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/