W3C home > Mailing lists > Public > xml-dist-app@w3.org > May 2001

Re: An analysis of mustUnderstand and related issues

From: Mark Jones <jones@research.att.com>
Date: Mon, 14 May 2001 16:34:49 -0400 (EDT)
Message-Id: <200105142034.QAA24467@glad.research.att.com>
To: Noah_Mendelsohn@lotus.com, moreau@crf.canon.fr
Cc: xml-dist-app@w3.org
I also wondered about disjunction.  It seems like it might be a
coomon case that a pool of potential actors could carry out similar
functionality, but with slightly different parameters.  You might,
e.g., be required to do SASL-like authentication with some (only
one) actor, but different actors may support different mechanisms.

How about the following mechanism for disjunction, exactly-one-of
or other logical dependencies?

   <SOAP-ENV:Header ID="A"
       SOAP-ENV:Actor="uriA"
       SOAP-ENV:mustUnderstand="true"
       SOAP-ENV:markHappened="true">
     <nsa:DoThisForA xmlns:nsa="http://nsa.gov/uriA">
     ...
     </nsa:DoThisForA>
   </SOAP-ENV:Header>

   <SOAP-ENV:Header ID="B"
       SOAP-ENV:Actor="uriB"
       SOAP-ENV:mustUnderstand="true"
       SOAP-ENV:markHappened="true">
     <nsb:DoThisForB xmlns:nsb="http://nsb.gov/uriB">
     ...
     </nsb:DoThisForB>
   </SOAP-ENV:Header>

   <SOAP-ENV:Header ID="C"
       SOAP-ENV:Actor="uriLogic"
       SOAP-ENV:mustUnderstand="true"
       SOAP-ENV:mustHappen="true">
      <logic:Or xmlns:logic="http://logic.gov/logic">
         <logic:CheckHasHappened href="A"/>
         <logic:CheckHasHappened href="B"/>
      </logic:Or>
   </SOAP-ENV:Header>

Note the markHappened (not mustHappen) attribute to indicate that we
want a block marked hasHappened to be inserted after processing.
Neither headers A or B mustHappen but we want to know if either
hasHappened.  If you want another header "D" that depends on the
disjunction being satisfied, it can specify depndsOn="C".

You could have a standard "logic" module or it could be any sort of
extensible manifest.  I use the "uriLogic" Actor to match any
processor which implements the logic extension.  The important enabler
for this extensibility is getting either the processor or the modules
to insert a block to reflect the hasHappened condition.  Note that the
"C" block would have to reinsert itself at each uriLogic actor until
it was satisfied.

--mark

   > From: Noah_Mendelsohn@lotus.com
   > To: "Jean-Jacques Moreau" <moreau@crf.canon.fr>
   > Cc: xml-dist-app@w3.org
   > Date: Mon, 14 May 2001 10:22:50 -0400
   > Subject: Re: An analysis of mustUnderstand and related issues

   > Jean-Jacques Moreau writes:

   > >>  So we would not be able to express 
   > >> "headerA OR headerB" ? (That's
   > >> fine; just wondering.)

   > Right, in this proposal.  I tried to indicate that among the many reasons 
   > to be suspicious of this proposal is that it indeed heads one down the 
   > slippery slope leading to, for example, a Turing-complete language for 
   > expressing dependency rules.  I don't think we want to go there.  If we 
   > think that a simpel facility like this hits an 80/20 or 90/10 point, then 
   > I think it's interesting to consider.  If not, I don't think we should try 
   > it at all.

   > ...
Received on Monday, 14 May 2001 16:35:11 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:01 GMT