OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrm message

[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]