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 2 - A modest proposal


Ivana,

By "another abstraction" I meant that the <scopeDeclarations> element
can occur in a <scope> or a <scopeDeclaration>. For example:

<scope>
  <scopeDeclarations>
    <scopeDeclaration typeName="fooType">
      <scopeDeclarations>
        <scopeDeclaration typeName="barType">
          <empty/>
        </scopeDeclaration>
      </scopeDeclarations>
      <SCOPE name="bar" type="barType" />
    </scopeDeclaration>
  </scopeDeclarations>
  
  <SCOPE name="foo" type="fooType" />
</scope>

yields:

<scope>
  <scope name="foo"> 
    <scope name="bar">
      <empty/>
    </scope>
  </scope>
</scope>


-maciej


On Tue, 2004-09-28 at 12:23, Trickovic, Ivana wrote:
> Maciej,
> 
> I find the proposal interesting (at least for locally defined reusable pieces of BPEL code). Would you give an example of an "another abstraction" where the scope abstractions can be declared?
> 
> Regards,
> 
> Ivana
> 
> 
> > -----Original Message-----
> > From: Maciej Szefler [mailto:mbs@fivesight.com]
> > Sent: Samstag, 25. September 2004 21:51
> > To: Trickovic, Ivana
> > Cc: wsbpel@lists.oasis-open.org
> > Subject: [wsbpel] Issue 2 - A modest proposal
> > 
> > 
> > Ivana,
> > 
> > Keeping in mind the understandable desire by certain members 
> > of the committee to make these things macros and your desire 
> > to address this issue, what do you think about the following approach:
> > 
> > We create the notion of a "parameterized scope" an "abstraction" of a
> > scope. These scope abstractions must be declared (in a scope, or in
> > another abstraction), using a syntax nearly identical to that 
> > of scopes:
> > <scope>
> >    <variables>?
> >    <correlationSets>?
> >    <partnerLinks>?
> >    <faultHandlers>?
> >    <compensationHandlers>?
> > 
> >    <scopeDeclerations>
> >      <scopeDeclaration typeName="typeName">
> >        <parameters>
> > 	 <param name="paramName" {message,element,}type="" />*
> >        </parameters>
> >        <faultHandlers?>
> >        <compensationHandlers?>
> >        <variables?>
> >        <correlationSets?>
> >        <partnerLinks?>
> >        <any-activity>
> >      </scopeDeclaration>
> >    </scopeDeclerations>
> >    ...
> > </scope>
> > 
> > To use a scope abstraction we have a new "concretion" activity:
> > <SCOPE name="scopeName" type="typeName">
> >    <arg paramName="paramname" replacement="visibleVarName" />*
> > </SCOPE>
> > 
> > So the construction:
> > <scope>
> >   <scope name="foo">
> >      <empty/>
> >   </scope>
> > </scope>
> > 
> > is equivalent to;
> > 
> > <scope>
> >   <scopeDeclerations>
> >     <scopeDecleration typeName="fooType">
> >       <empty/>
> >     </scopeDecleration>
> >   </scopeDeclerations>
> > 
> >   <SCOPE name="foo" type="fooType" />
> > </scope>
> > 
> > 
> > In the other direction, the concretion <SCOPE name="foo" 
> > type="bar"  can
> > be defined simply in terms of an XML re-write rule: it is 
> > equivalent to
> > writing <scope name="foo"> with the body found in scopeDecleration of
> > typeName="bar" subject to renaming of names found in the <parameters>
> > block to the names specified in the <arg> elements. In order to keep
> > this a pure "macro" we have to disallow recursion, and we 
> > must disallow
> > free variable or link names in the scope declarations (i.e. parameters
> > are the only way to pass data around). 
> > 
> > To do functions: 
> > 
> > <scope> 
> >    <scopeDecls>
> >       <scopeDecl typeName="multiply">
> >           <parameters>
> >              <vararg name="x" ../>
> >              <vararg name="y" ../>
> >              <vararg name="product"  ../>
> >           </parametrs>
> >           <assign>
> >              <to variable="product" />
> >              <from>$x * $y</from>
> >           </assign>
> >       </scopeDecl>
> >    </scopeDecls>
> > 
> >    <scope>
> >       <variables>
> >         <variable name="a1"/>
> >         <variable name="a2"/>
> >         <variable name="a3"/>
> >         <variable name="a4"/>
> >         <variable name="a5"/>
> >         <variable name="a6"/>
> >       </variables>
> >       <sequence>
> >           <SCOPE name="s1" type="multiply">
> >              <vararg paramName="x" varName="a1" />
> >              <vararg paramName="y" varName="a2" />
> >              <vararg paramName="product" varName="a3" />
> >           </SCOPE>
> >           <SCOPE name="s2" type="multiply">
> >              <vararg paramName="x" varName="a2" />
> >              <vararg paramName="y" varName="a3" />
> >              <vararg paramName="product" varName="a4" />
> >           </SCOPE>
> >           <SCOPE name="s3" type="multiply">
> >              <vararg paramName="x" varName="a4" />
> >              <vararg paramName="y" varName="a5" />
> >              <vararg paramName="product" varName="a6" />
> >           </SCOPE>
> > 
> >       </sequence>
> >    </scope>
> > </scope>
> > 
> > 
> > The appeal of this approach is that it gives you parameterization, and
> > can be done completely on the XML re-writing level (simple XSLT can do
> > it) without introducing any new "native" BPEL constructs.
> > 
> > If you want to get even fancier, you can also have link parameters. 
> > 
> > -maciej
> > 
> 
> 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/wsbpel/members/leave_workgroup.php.
> 
> 

This is a digitally signed message part



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