[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [wsbpel] Issue 2 - A modest proposal
irrelevancy: the literary allusion of this subject line would suggest that the process should swifly eat its own sub-processes. I'm trying to work out the connection :-) Peter > -----Original Message----- > From: Trickovic, Ivana [mailto:ivana.trickovic@sap.com] > Sent: 28 September 2004 18:23 > To: 'Maciej Szefler' > Cc: wsbpel@lists.oasis-open.org > Subject: RE: [wsbpel] Issue 2 - A modest proposal > > > 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/le > ave_workgroup.php. > >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]