- From: Roberto Chinnici <Roberto.Chinnici@Sun.COM>
- Date: Wed, 16 Feb 2005 12:02:58 -0800
- To: Anish Karmarkar <Anish.Karmarkar@oracle.com>
- Cc: public-ws-async-tf@w3.org
Anish Karmarkar wrote:
> Roberto Chinnici wrote:
>
>>
>> * Description of the scenario
>>
>> In this use case, a client contacts a server using transport T1. The
>> response is sent back asynchronously using a callback made over a
>> potentially different transport T2. Even if the transports are the
>> same, the request and response messages could use different connections,
>> making this case different from #6.
>>
>> As a working example, let's use Kevin's "submitExpenseReport" operation
>> (see [1]). Its request and response messages are defined as follows:
>> (I made a few edits to make the naming more consistent)
>>
>> <xs:schema ...>
>>
>> <xs:element name="submitExpenseRequest" >
>> <xs:complexType ...> ... </xs:complexType>
>> </xs:element>
>>
>> <xs:element name = "submitExpenseResponse">
>> <xs:complexType>
>> <xs:choice>
>> <xs:element ref = "tns:ApprovalConfirmation"/>
>> <!-- an immediate approval message for
>> amount under $100 -->
>> <xs:element ref = "tns:ManagerDecision"/>
>> <!-- manager decision is required for amount
>> above $100 -->
>> <xs:choice>
>> </xs:complexType>
>> </xs:element>
>> ...
>> </xs:schema>
>>
>> This example highlights some variations on this use case:
>>
>> 3a. The response always uses transport T2.
>> 3b. The response uses sometimes T2a, sometimes T2b. Both are
>> statically described.
>> 3c. The response may use any transport T2, independently from
>> what the service description says.
>>
>> In Kevin's description of the sample service, the response would be
>> sent over HTTP when it's immediately available ("ApprovalConfirmation"
>> case) and over SMTP when it's not ("ManagerDecision"), thus providing
>> an example of (3b).
>>
>> * Can we achieve this case now with the current specs? With how much
>> "squinting"?
>>
>> Almost. At the price of giving up on the idea of having a single
>> sumitExpenseReport operation. One can define two interfaces, each
>> carrying half of the whole interaction modelled as an in-only operation.
>> E.g.
>>
>> <interface name = "expenseReportingService" >
>> <operation name="submitExpenseReport"
>> pattern="http://www.w3.org/2004/03/WSDL/in-only" >
>> <input messageLabel="In"
>> element="tns:expenseRequest" />
>> </operation>
>> </interface>
>>
>> <interface name = "expenseReportingCallback" >
>> <operation name="submitExpenseReportCallback"
>> pattern="http://www.w3.org/2004/03/WSDL/in-only" >
>> <input messageLabel="In"
>> element="tns:expenseResponse" />
>> </operation>
>> </interface>
>>
>
> I interpreted this to mean that usecase 3 (as expressed above) is
> reduced to usecase 5 (correlated 2 one-way messages). Is that correct
> interpretation?
At the description level, yes. There was quite a bit of overlap between
the use cases. Perhaps I should have described use case #3 the way you
described #4, e.g. in terms of the messages exchanged on the wire.
Based on them, the two formulations I described are both valid.
Roberto
Received on Wednesday, 16 February 2005 20:03:44 UTC