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

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [wsbpel] Issue - 280 - discussion


My concern is that the existing rules for determining the type of fault data
are ambiguous. Alex's reading is that the rules are based on the fault data.
My reading is that rule #2 and #5 involve the declaration of message part.
Thomas' reading is that it is based on the declared type of the variable or
message part.

Forgive me if I misread your interpretations but at the very least there is
more than one interpretation so it's something that needs to be addressed. 

If we change the existing text to make it explicit that the data type is
determined by the declaration of the fault variable and/or message part (for
rule #2 and #5) then it seems that we could allow support for throwing and
catching type based variables without any problems.

One thing that we would lose with this approach is the ability to throw a
variable with some base type and have it match against some derived type
based on the actual Qname of the root element. I'm not convinced that this
is a bad thing.

I think that it's possible to close this issue without bringing up any new
issues like inheritance or keepSrcElement. Catching faults by an identical
match of their declared Qname seems like a reasonable first pass. Perhaps a
future version of the spec could enhance this to include support for
matching based on inheritance but this doesn't seem incompatible with
adopting a strict declared Qname approach at this point.

-----Original Message-----
From: Thomas Schulze [mailto:ThomasSchulze@de.ibm.com] 
Sent: Saturday, June 03, 2006 12:30 PM
To: Alex Yiu
Cc: Alex Yiu; Dieter Koenig1; Mark Ford; wsbpel@lists.oasis-open.org
Subject: Fw: [wsbpel] Issue - 280 - discussion

Resending this note with hopefully better formatted examples...

Best regards/Mit freundlichen Grüßen,

       Thomas Schulze

----- Forwarded by Thomas Schulze/Germany/IBM on 03.06.2006 18:28 -----
                                                                           
             Thomas                                                        
             Schulze/Germany/I                                             
             BM                                                         To 
                                       Alex Yiu <alex.yiu@oracle.com>      
             03.06.2006 17:22                                           cc 
                                       Alex Yiu <alex.yiu@oracle.com>,     
                                       Dieter Koenig1/Germany/IBM@IBMDE,   
                                       Mark Ford                           
                                       <mark.ford@active-endpoints.com>,   
                                       wsbpel@lists.oasis-open.org         
                                                                   Subject 
                                       Re: [wsbpel] Issue - 280 -          
                                       discussion(Document link: Thomas    
                                       Schulze)                            
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           



Hi Alex,

this keepSrcElementName attribute is really very odd. What's the result of
the following assign if both variables are element-typed and the element
QNames are not equal?

<assign validate="yes">
   <copy keepSrcElementName="yes">
      <from variable="var1"/>
      <to variable="var2"/>
   </copy>
</assign>

Doesn't this ALWAYS result in the bpel:invalidVariables fault?

For a second example how odd this attribute is, assume there's no
validate="yes" on that assign, but in another activity after that assign
there's a XPath query/expression into var2. I assume the XPath
query/expression is written by the modeller upon the assumption that the
content of the variable is the one as declared. So the XPath
query/expression will result in a fault. Additionally, this fact makes it
impossible for a static analysis tool to validate any XPath
queries/expressions in a BPEL 2.0 process (Btw. that would be one of the
cases where BPEL 2.0 is not backwards-compatible with BPEL 1.1 where such
checks were possible ;-)

IMO, this attribute is the only reason why we currently need a catch logic
based on the concrete fault data type and not on the declared data type of
the thrown variable, right? I would prefer to change the catch logic to
QName matching based on the declared data type of the thrown variable and
remove the attribute keepSrcElementName from <copy>. In addition, the catch
logic for elements then would be consistent with the logic for rule 2 and 5.
But I think such changes should be subject of another issue.

So when catching types, the logic should be as equal as possible to that
what we already have when catching elements. This still means, the existing
catch rules 1 and 4 would be sufficient, as outlined by Dieter. No
additional rule nor a change at the existing rules would be needed (and too
no clarification, I think). For the following example, you've send it some
notes ago, this would mean that the second <catch> gets it.

Example #2
---------------------------
<scope>
  ...
  <catch faultType="foo:addressType"> ... </catch>
  <catch faultType="foo:usAddressType"> ... </catch>
  ...
  <variable name="addrVar" type="foo:addressType" />
  <variable name="usAddrVar" type="foo:usAddressType" />
  ...
  <assign>
    <copy>
      <from variable="usAddrVar"/>
      <to variable="addrVar" />
    </copy>
  </assign>
  ...
  <throw name="throw1" faultVariable="addrVar" /> </scope>
---------------------------

Best regards/Mit freundlichen Grüßen,

       Thomas Schulze



                                                                           
             Alex Yiu                                                      
             <alex.yiu@oracle.                                             
             com>                                                       To 
                                       Thomas Schulze/Germany/IBM@IBMDE    
             30.05.2006 23:37                                           cc 
                                       Dieter Koenig1/Germany/IBM@IBMDE,   
                                       Mark Ford                           
                                       <mark.ford@active-endpoints.com>,   
                                       wsbpel@lists.oasis-open.org, Alex   
                                       Yiu <alex.yiu@oracle.com>           
                                                                   Subject 
                                       Re: [wsbpel] Issue - 280 -          
                                       discussion                          
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           





Hi Thomas,

[a]
Regardless whether we want to support faultType in BPEL 2.0, you mentioned
another good corner case that we need to clarify - i.e. when element
variable contains an element data which is NOT identical to the element
QName used in variable declaration. (similar to Mark's case)

E.g.:
---------------------
<scope>



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]