Next in thread →
Next in month →
Re: [wsrm] asap/wsrm
John,
A small point specific to WS-Reliability: The various "any" instances in
our schema all support extensibility at the *beginning* of the affected
elements (wsrm:Request, wsrm:Response, wsrm:PollRequest,
wsrm:NonSequenceReply -- not ...Replies, wsrm:SequenceReplies and
wsrm:ReplyRange). In addition, the cardinality of any content inserted at
these points is unbounded. This is also true for the more general
extensibility of the soap:Header element (an element that happens to be
optional in the SOAP schema).
For example, your first pseudo schema should read
Elements Cardinality
soap:Envelope {1}
soap:Header {0,1}
wsrm:Request {0,1}
xsd:any {0,1,..n}
wsrm:MessageId {1}
wsrm:SequenceNum {0,1}
wsrm:ExpiryTime {1}
wsrm:ReplyPattern {1}
wsrm:Value {1}
wsrm:ReplyTo {0,1}
wsrm:AckRequested {0,1}
wsrm:DuplicateElimination {0,1}
wsrm:MessageOrder {0,1}
wsrm:Response {0,1}
xsd:any {0,1,..n}
wsrm:NonSequenceReply {0,1,..n}
xsd:any {0,1,..n}
wsrm:SequenceReplies {0,1,..n}
xsd:any {0,1,..n}
wsrm:ReplyRange {0,1,..n}
xsd:any {0,1,..n}
xsd:any {0,1,..n}
soap:Body {1}
thanx,
doug
On 23-Jul-04 16:10, John Fuller wrote:
> Here's a draft of a position paper for the ASAP TC regarding how ASAP
> can be used with WSRM.
> Any comments or corrections are welcome.
>
>
> ------------------------------------------------------------------------
>
>
> ASAP provides a protocol for managing asynchronous instances of service using SOAP.
> To create a service instance, an Observer sends a request to a Factory containing an extensible context
> data element to provide data for the creation and execution of the service.
> Requests may be made of instances, and Instances may produce messages for Observers
> when states change. When service completes, a completion request message for the instance
> is sent to Observers containing an extensible data element for the result.
> Interactions between Observer and Factory, Observer and Instance, and Instance and Observer
> are all request-response operations, and information model data is conveyed in the extensible
> context and result elements.
>
> WSRM provides a protocol supporting at-least-once, at-most-once and exactly-once message delivery
> for SOAP messages. The protocol specifies the behavior of message producing
> and message consuming Reliable Message Processors which use data provided in
> WS-Reliabilty headers. Reliable Message Processors encapsulate a service layer for
> providing reliability in the web service protocol stack.
> For request-response operations, the message producer submits a request to its
> message processor, the request crosses the wire and is delivered by the message consuming
> message processor to the message consumer. The message consumer responds to
> its message processor with the response message, the request crosses the wire,
> and the message producer is notified by its message processor.
>
> WSRM supports three reply patterns: Response, which uses a single SOAP request-response,
> Callback, where the reply is made as a SOAP request, and Poll, where the reply is
> made as a SOAP request given a Poll SOAP request.
> Callback and Poll reply patterns allow for high-throughput and fire-and-forget scenarios.
> While the service of delivery may be thought of as asynchronous in these cases,
> an application sends a SOAP message to invoke a application layer service operation:
> as far as the application is concerned that operation isn't the quality of service
> feature that the SOAP message arrive at the service.
>
> Creation and completion of asynchronous service are good examples where reliable delivery
> would be desirable and the WSRM protocol could be applied for these messages.
>
> ASAP WSDL provides bindings that define operations for Factory, Observer and Instance
> services. WSRM WSDL provides a way to extend WSDL elements with compositors
> to specify features and properties of the reliability feature for the element.
>
> The factory and observer WSDL could specify their reliability feature support
> with a syntax like that given below.
>
> The factory's WSDL may specify
>
> <operation name="CreateInstance">
> <fnp:compositor uri="http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/all">
> <fnp:feature uri="http://docs.oasis-open.org/wsrm/2004/06/wsrmfp-1.1.xsd">
> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/zero-or-more" name="DeliverySemantics">
> <fnp:property name= "wsrmfp:NoDuplicateDelivery"><fnp:value>true</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:OrderedDelivery"><fnp:value>true</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:GuaranteedDelivery"><fnp:value>true</fnp:value></fnp:property>
> </fnp:compositor>
> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/choice" name="ReplyPatternChoice">
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Response</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Callback</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Poll</fnp:value></fnp:property>
> </fnp:compositor>
> </fnp:feature>
> </fnp:compositor>
> <soap:operation soapAction="http://www.oasis-open.org/asap/0.9/asap/factory/CreateInstance" style="document" />
> <input>
> <soap:body use="literal" />
> <soap:header message="s1:CreateInstanceRequest" part="Request" use="literal" />
> </input>
> <output>
> <soap:body use="literal" />
> <soap:header message="s1:CreateInstanceResponse" part="Response" use="literal" />
> </output>
> </operation>
>
> The observer's WSDL may specify
>
> <operation name="Completed">
> <fnp:compositor uri="http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/all">
> <fnp:feature uri="http://docs.oasis-open.org/wsrm/2004/06/wsrmfp-1.1.xsd">
> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/zero-or-more" name="DeliverySemantics">
> <fnp:property name= "wsrmfp:NoDuplicateDelivery"><fnp:value>true</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:OrderedDelivery"><fnp:value>true</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:GuaranteedDelivery"><fnp:value>true</fnp:value></fnp:property>
> </fnp:compositor>
> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/choice" name="ReplyPatternChoice">
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Response</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Callback</fnp:value></fnp:property>
> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Poll</fnp:value></fnp:property>
> </fnp:compositor>
> </fnp:feature>
> </fnp:compositor>
> <soap:operation soapAction="http://www.oasis-open.org/asap/0.9/asap/observer/Completed" style="document" />
> <input>
> <soap:body use="literal" />
> <soap:header message="s1:CompletedRequest" part="Request" use="literal" />
> </input>
> <output>
> <soap:body use="literal" />
> <soap:header message="s1:CompletedResponse" part="Response" use="literal" />
> </output>
> </operation>
>
>
> In WSRM, Reliable message replies maybe included with requests to allow piggybacking.
>
> Elements Cardinality
> soap:Envelope {1}
> soap:Header {1}
> wsrm:Request {0,1}
> wsrm:MessageId {1}
> wsrm:SequenceNum {0,1}
> wsrm:ExpiryTime {1}
> wsrm:ReplyPattern {1}
> wsrm:Value {1}
> wsrm:ReplyTo {0,1}
> wsrm:AckRequested {0,1}
> wsrm:DuplicateElimination {0,1}
> wsrm:MessageOrder {0,1}
> xsd:any {0,1}
> wsrm:Response {0,1}
> wsrm:NonSequenceReplies {0,1,..n}
> wsrm:SequenceReplies {0,1,..n}
> wsrm:ReplyRange {0,1,..n}
> xsd:any {0,1}
> xsd:any {0,1}
> soap:Body {1}
>
> The simplest implementation maybe the SOAP request-response message exchange pattern and Response
> reliability reply pattern where the reliable message reply for a message rides on the SOAP response,
> so really only the ASAP requests need be WSRM requests and ASAP responses WSRM responses.
>
> Elements Cardinality
> soap:Envelope {1}
> soap:Header {1}
> wsrm:Request {0,1}
> wsrm:MessageId {1}
> wsrm:SequenceNum {0,1}
> wsrm:ExpiryTime {1}
> wsrm:ReplyPattern {1}
> wsrm:Value {1}
> wsrm:ReplyTo {0,1}
> wsrm:AckRequested {0,1}
> wsrm:DuplicateElimination {0,1}
> wsrm:MessageOrder {0,1}
> xsd:any {0,1}
> asap:Request {1}
> asap:SenderKey {0,1}
> asap:ReceiverKey {1}
> asap:ResponseRequired {0,1}
> asap:RequestID {0,1}
> soap:Body {1}
> asap:CreateInstanceRq {1}
> asap:StartImmediately {1}
> asap:Observerkey {0,1}
> asap:Name {0,1}
> asap:Subject {0,1}
> asap:Description {0,1}
> asap:ContextData {1}
>
> Elements Cardinality
> soap:Envelope {1}
> soap:Header {1}
> wsrm:Response {0,1}
> wsrm:NonSequenceReplies {0,1,..n}
> wsrm:SequenceReplies {0,1,..n}
> wsrm:ReplyRange {0,1,..n}
> xsd:any {0,1}
> xsd:any {0,1}
> asap:Response {1}
> asap:SenderKey {1}
> asap:ReceiverKey {0,1}
> asap:RequestID {0,1}
> soap:Body {1}
> asap:CreateInstanceRs {1}
> asap:InstanceKey {1}
>
> Elements Cardinality
> soap:Envelope {1}
> soap:Header {1}
> wsrm:Request {0,1}
> wsrm:MessageId {1}
> wsrm:SequenceNum {0,1}
> wsrm:ExpiryTime {1}
> wsrm:ReplyPattern {1}
> wsrm:Value {1}
> wsrm:ReplyTo {0,1}
> wsrm:AckRequested {0,1}
> wsrm:DuplicateElimination {0,1}
> wsrm:MessageOrder {0,1}
> xsd:any {0,1}
> asap:Request {1}
> asap:SenderKey {0,1}
> asap:ReceiverKey {1}
> asap:ResponseRequired {0,1}
> asap:RequestID {0,1}
> soap:Body {1}
> asap:CompletedRq {1}
> asap:InstanceKey {1}
> asap:ResultData {1}
>
> Elements Cardinality
> soap:Envelope {1}
> soap:Header {1}
> wsrm:Response {0,1}
> wsrm:NonSequenceReplies {0,1,..n}
> wsrm:SequenceReplies {0,1,..n}
> wsrm:ReplyRange {0,1,..n}
> xsd:any {0,1}
> xsd:any {0,1}
> soap:Body {1}
> asap:CompletedRs {1}
>
>
> ------------------------------------------------------------------------
>
>
>
>
>
> ------------------------------------------------------------------------
>
> To unsubscribe from this mailing list (and be removed from the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/wsrm/members/leave_workgroup.php.
Next in thread →
Next in month →