[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: 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.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]