[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [wsbpel] Next Meeting of the "Informal" Abstract BPEL ClarificationWorking Group
Hi Phil and others, My action item this week is to resend a snapshot of email what a group of TC people discussed about Issue 24 few months ago. I attached the ".eml" file here in this email for your reference. A recap of what we did so far in Feb: - identify the preliminary list of syntactic differences between abstract and exec BPEL: some of them are already a part of the spec; some are not in the spec yet (e.g. if query for assign is optional in abstract, how about expression?) ; those differences do not cover Issue 91, 97, 99 and 107. - we also annotate the XSD with special syntax comment to make it easier for us to refer from the preliminary list of syntactic differences to the corresponding part of XSD. (If someone has problem openning this eml file, please let me know. I tried both Outlook and Mozilla, they both work fine) Thanks! Regards, Alex Yiu Rossomando, Philip wrote:
|
--- Begin Message ---
- From: Alex Yiu <alex.yiu@oracle.com>
- To: Francisco Curbera <curbera@us.ibm.com>
- Date: Tue, 10 Feb 2004 17:56:03 -0800
Hi, Paco and all others, Here is the version of XML Schema which got further annotated by me (first round draft). (well-formed and validated by XMLSpy) Markup 09 - 20 are added. ----------------------------------- Regarding to Paco's questions: Paco wrote: (A) "every process will have at least one partner link (on the assumption that no processes w/o external interaction will be defined, either abstract or executable)." (B) "I also don't understand the point about making 'expression' part of executable processes only, because it uses XPath. Can you explain?" For (A), I am actually referring to "[xsd] #ayiu-09". <element name="partnerLinks" type="bpws:tPartnerLinks" minOccurs="0"/> Somehow, the minOccurs is zero there. Actually, it make senses to me that BPEL will always have at least ONE pLink no matter whether it is abstract or executable. I raised my original question / suggestion by assuming the zero minOccurs in the existing schema might be meaningful for abstract BPEL. For (B), The reason behind sugesting expression becoming executable only is: I guess the reason behind make "query" attribute executable only is to hide / encapsulate: (i) the query language (XPath) details or (ii) message/variable structure details from Abstract BPEL developers. That is: (i) whether the final executable BPEL is using XPath or other query languages to do query on messages and variables. (ii) what exactly is the message / variable structures. Because the message may come from an abstract WSDL or abstract Schema Type. Using the same principles / reasons, the expression used in BPEL should be marked as executable only. For example: consider these: <assign> <from variable="PO" query="/po/amt" /> <to ... /> </assign> <assign> <from expression="getVariableData(orderDetails)/po/amt * 0.9" /> <to ... /> </assign> If query attribute needs to be executable only, then expression may need to be executable only also. Related markups are: "[exec] #ayiu-13" "[exec] #ayiu-14" "[exec] #ayiu-15" "[exec] #ayiu-17" "[exec] #ayiu-18" "[exec] #ayiu-19" ----------------------------------- ----------------------------------- "[xsd] #ayiu-09": we may want to increase the minOccurs to 1, no matter for abstract or executable BPEL. "[question] #ayiu-10": the usage of "partners" definition / declaration are under-specified in the spec. Anyone to shred some light on that? So, I am not sure whether it should be abstract / executable / both. Or, I should send this question to the general OASIS BPEL email list? "[xsd] #ayiu-11": Similar to "[xsd] #ayiu-09" for variables. Is BPEL always stateful? "[xsd] #ayiu-12": I tend to think we should actually have two different QNAMES for Abstract or Executable BPEL instead of just a boolean attribute. "[exec] #ayiu-13" "[exec] #ayiu-14" "[exec] #ayiu-15" "[exec] #ayiu-17" "[exec] #ayiu-18" "[exec] #ayiu-19": These markups are covered in (B) section above. And, if needed and agreed, we may want to add "opaqueExpression" or "opaque*Condition" attribute of "xsd:string" to the abstract version of above elements. "[question] #ayiu-16": I have some minor reservation for making some variables compulsory for now. Because, it is related to WSDL 1.1 and 2.0. "[question] #ayiu-20": If expression can be opaque in abstract BPEL , then variableAccessSerializable is meaningful only in executable BPEL?? ----------------------------------- Thanks for reading this email! Regards, Alex Yiu Francisco Curbera wrote: > > >This is my first cut at the list of differences, those thta are explicitly >mentioned in the spec; I annotated them in the schema as Alex suggested. >Note that I added a fourth type of difference ([xsd]) which represents >schema rather than language artifacts that are different for the executable >and abstract cases. > >1. [exec] "query" attribute in <from> and <to> element only allowed for >executable processes. >2. [abstract] "opaque" attribute in <from> element allowed only for >abstract processes. >3. [xsd] Restricting "opaque" attribute from appearing in <to> element >unnecessary for executable processes. >4. [diff] "inputVariable" attribute on <invoke> required in executable >processes. >5. [diff] "variable" attribute on <receive> required in executable >processes. >6. [diff] "inputVariable" attribute on <reply> required in executable >processes. >7. [exec] <terminate> activity only allowed in executable processes. >8. [diff] "abstractProcess" attribute holds difference values. > >I don't understand example 2 in Alex' mail, since partner links are >required in all service interaction activities (receive, reply, invoke, >onEvent), which leads me to believe that every process will have at least >one partner link (on the assumption that no processes w/o external >interaction will be defined, either abstract or executable). I also don't >understand the point about making "expression" part of executable processes >only, because it uses XPath. Can you explain? > >Paco > >(See attached file: wsbpel-annotated.xsd) > > > [stuff deleted]<?xml version="1.0" encoding="UTF-8"?> <schema targetNamespace="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <import namespace="http://schemas.xmlsoap.org/wsdl/" schemaLocation="http://schemas.xmlsoap.org/wsdl/"/> <complexType name="tExtensibleElements"> <annotation> <documentation> This type is extended by other component types to allow elements and attributes from other namespaces to be added. </documentation> </annotation> <sequence> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <anyAttribute namespace="##other" processContents="lax"/> </complexType> <element name="process" type="bpws:tProcess"/> <complexType name="tProcess"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="import" type="bpws:tImport" minOccurs="0"/> <element name="partnerLinks" type="bpws:tPartnerLinks" minOccurs="0"/> <!-- [xsd] #ayiu-09 --> <element name="partners" type="bpws:tPartners" minOccurs="0"/> <!-- [question] #ayiu-10 --> <element name="variables" type="bpws:tVariables" minOccurs="0"/> <!-- [xsd] #ayiu-11 --> <element name="correlationSets" type="bpws:tCorrelationSets" minOccurs="0"/> <element name="faultHandlers" type="bpws:tFaultHandlers" minOccurs="0"/> <element name="compensationHandler" type="bpws:tCompensationHandler" minOccurs="0"/> <element name="eventHandlers" type="bpws:tEventHandlers" minOccurs="0"/> <group ref="bpws:activity"/> </sequence> <attribute name="name" type="NCName" use="required"/> <attribute name="targetNamespace" type="anyURI" use="required"/> <attribute name="queryLanguage" type="anyURI" default="http://www.w3.org/TR/1999/REC-xpath-19991116"/> <attribute name="expressionLanguage" type="anyURI" default="http://www.w3.org/TR/1999/REC-xpath-19991116"/> <attribute name="suppressJoinFailure" type="bpws:tBoolean" default="no"/> <attribute name="enableInstanceCompensation" type="bpws:tBoolean" default="no"/> <attribute name="abstractProcess" type="bpws:tBoolean" default="no"/> <!-- [exec] #8 --> <!-- [xsd] #ayiu-12 --> </extension> </complexContent> </complexType> <group name="activity"> <choice> <element name="empty" type="bpws:tEmpty"/> <element name="invoke" type="bpws:tInvoke"/> <element name="receive" type="bpws:tReceive"/> <element name="reply" type="bpws:tReply"/> <element name="assign" type="bpws:tAssign"/> <element name="wait" type="bpws:tWait"/> <element name="throw" type="bpws:tThrow"/> <element name="terminate" type="bpws:tTerminate"/> <element name="flow" type="bpws:tFlow"/> <element name="switch" type="bpws:tSwitch"/> <element name="while" type="bpws:tWhile"/> <element name="sequence" type="bpws:tSequence"/> <element name="pick" type="bpws:tPick"/> <element name="scope" type="bpws:tScope"/> <!-- [exec] #7 --> </choice> </group> <complexType name="tImport"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="namespace" type="anyURI"/> <attribute name="location" type="anyURI"/> <attribute name="importType" type="bpws:importedURI"/> </extension> </complexContent> </complexType> <complexType name="tPartnerLinks"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="partnerLink" type="bpws:tPartnerLink" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tPartnerLink"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="name" type="NCName" use="required"/> <attribute name="partnerLinkType" type="QName" use="required"/> <attribute name="myRole" type="NCName"/> <attribute name="partnerRole" type="NCName"/> </extension> </complexContent> </complexType> <complexType name="tPartners"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="partner" type="bpws:tPartner" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tPartner"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="partnerLink" maxOccurs="unbounded"> <complexType> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="name" type="NCName" use="required"/> </extension> </complexContent> </complexType> </element> </sequence> <attribute name="name" type="NCName" use="required"/> </extension> </complexContent> </complexType> <complexType name="tFaultHandlers"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="catch" type="bpws:tCatch" minOccurs="0" maxOccurs="unbounded"/> <element name="catchAll" type="bpws:tActivityOrCompensateContainer" minOccurs="0"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tCatch"> <complexContent> <extension base="bpws:tActivityOrCompensateContainer"> <attribute name="faultName" type="QName"/> <attribute name="faultVariable" type="NCName"/> </extension> </complexContent> </complexType> <complexType name="tActivityContainer"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <group ref="bpws:activity"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tActivityOrCompensateContainer"> <complexContent> <extension base="bpws:tExtensibleElements"> <choice> <group ref="bpws:activity"/> <element name="compensate" type="bpws:tCompensate"/> </choice> </extension> </complexContent> </complexType> <complexType name="tEventHandlers"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="onMessageonEvent" type="bpws:tOnMessage" minOccurs="0" maxOccurs="unbounded"/> <element name="onAlarm" type="bpws:tOnAlarm" minOccurs="0" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tOnMessage"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="correlations" type="bpws:tCorrelations" minOccurs="0"/> <group ref="bpws:activity"/> </sequence> <attribute name="partnerLink" type="NCName" use="required"/> <attribute name="portType" type="QName" use="required"/> <attribute name="operation" type="NCName" use="required"/> <attribute name="messageType" type="QName" use="required"/> <attribute name="variable" type="NCName" use="optional"/> </extension> </complexContent> </complexType> <complexType name="tOnAlarm"> <complexContent> <extension base="bpws:tActivityContainer"> <attribute name="for" type="bpws:tDuration-expr"/> <attribute name="until" type="bpws:tDeadline-expr"/> </extension> </complexContent> </complexType> <complexType name="tCompensationHandler"> <complexContent> <extension base="bpws:tActivityOrCompensateContainer"/> </complexContent> </complexType> <complexType name="tVariables"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="variable" type="bpws:tVariable" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tVariable"> <attribute name="name" type="NCName" use="required"/> <attribute name="messageType" type="QName" use="optional"/> <attribute name="type" type="QName" use="optional"/> <attribute name="element" type="QName" use="optional"/> <anyAttribute namespace="##other" processContents="lax"/> <!-- variable does not allow extensibility elements because otherwise its content model would be non-deterministic --> </complexType> <complexType name="tCorrelationSets"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="correlationSet" type="bpws:tCorrelationSet" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tCorrelationSet"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="properties" use="required"> <simpleType> <list itemType="QName"/> </simpleType> </attribute> <attribute name="name" type="NCName" use="required"/> </extension> </complexContent> </complexType> <complexType name="tActivity"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="targets" type="bpws:tTargets" minOccurs="0" maxOccurs="unbounded"/> <element name="sources" type="bpws:tSources" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="name" type="NCName"/> <attribute name="joinCondition" type="bpws:tBoolean-expr"/> <!-- [exec] #ayiu-13 --> <attribute name="suppressJoinFailure" type="bpws:tBoolean" default="no"/> </extension> </complexContent> </complexType> <complexType name="tTargets"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="target" type="bpws:tTarget" maxOccurs="unbounded"/> </sequence> <attribute name="joinCondition" type="bpws:tBoolean-expr"/> <!-- [exec] #ayiu-14 --> </extension> </complexContent> </complexType> <complexType name="tSources"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="source" type="bpws:tSource" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tSource"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="linkName" type="NCName" use="required"/> <attribute name="transitionCondition" type="bpws:tBoolean-expr"/> <!-- [exec] #ayiu-15 --> </extension> </complexContent> </complexType> <complexType name="tTarget"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="linkName" type="NCName" use="required"/> </extension> </complexContent> </complexType> <complexType name="tEmpty"> <complexContent> <extension base="bpws:tActivity"/> </complexContent> </complexType> <complexType name="tCorrelations"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="correlation" type="bpws:tCorrelation" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tCorrelation"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="set" type="NCName" use="required"/> <attribute name="initiate" type="bpws:tBoolean" default="no"/> </extension> </complexContent> </complexType> <complexType name="tCorrelationsWithPattern"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="correlation" type="bpws:tCorrelationWithPattern" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tCorrelationWithPattern"> <complexContent> <extension base="bpws:tCorrelation"> <attribute name="pattern"> <simpleType> <restriction base="string"> <enumeration value="in"/> <enumeration value="out"/> <enumeration value="out-in"/> </restriction> </simpleType> </attribute> </extension> </complexContent> </complexType> <complexType name="tInvoke"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="correlations" type="bpws:tCorrelationsWithPattern" minOccurs="0"/> <element name="catch" type="bpws:tCatch" minOccurs="0" maxOccurs="unbounded"/> <element name="catchAll" type="bpws:tActivityOrCompensateContainer" minOccurs="0"/> <element name="compensationHandler" type="bpws:tCompensationHandler" minOccurs="0"/> </sequence> <attribute name="partnerLink" type="NCName" use="required"/> <attribute name="portType" type="QName" use="required"/> <attribute name="operation" type="NCName" use="required"/> <attribute name="inputVariable" type="NCName" use="optional"/> <!-- [diff] #4 --> <!-- [question] #ayiu-16 --> <attribute name="outputVariable" type="NCName" use="optional"/> </extension> </complexContent> </complexType> <complexType name="tReceive"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="correlations" type="bpws:tCorrelations" minOccurs="0"/> </sequence> <attribute name="partnerLink" type="NCName" use="required"/> <attribute name="portType" type="QName" use="required"/> <attribute name="operation" type="NCName" use="required"/> <attribute name="variable" type="NCName" use="optional"/> <!-- [diff] #5 --> <attribute name="createInstance" type="bpws:tBoolean" default="no"/> </extension> </complexContent> </complexType> <complexType name="tReply"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="correlations" type="bpws:tCorrelations" minOccurs="0"/> </sequence> <attribute name="partnerLink" type="NCName" use="required"/> <attribute name="portType" type="QName" use="required"/> <attribute name="operation" type="NCName" use="required"/> <attribute name="variable" type="NCName" use="optional"/> <!-- [diff] #6 --> <attribute name="faultName" type="QName"/> </extension> </complexContent> </complexType> <complexType name="tAssign"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="copy" type="bpws:tCopy" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tCopy"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element ref="bpws:from"/> <element ref="bpws:to"/> </sequence> </extension> </complexContent> </complexType> <element name="from" type="bpws:tFrom"/> <complexType name="tFrom"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="variable" type="NCName"/> <attribute name="part" type="NCName"/> <attribute name="query" type="string"/> <!-- [exec] #1 --> <attribute name="property" type="QName"/> <attribute name="partnerLink" type="NCName"/> <attribute name="endpointReference" type="bpws:tRoles"/> <attribute name="expression" type="string"/> <!-- [exec] #ayiu-17 --> <attribute name="opaque" type="bpws:tBoolean"/> <!-- [abstract] #2 --> </extension> </complexContent> </complexType> <element name="to"> <complexType> <complexContent> <restriction base="bpws:tFrom"> <attribute name="expression" type="string" use="prohibited"/> <attribute name="opaque" type="bpws:tBoolean" use="prohibited"/> <!-- [xsd] #3 --> <attribute name="endpointReference" type="bpws:tRoles" use="prohibited"/> </restriction> </complexContent> </complexType> </element> <complexType name="tWait"> <complexContent> <extension base="bpws:tActivity"> <attribute name="for" type="bpws:tDuration-expr"/> <attribute name="until" type="bpws:tDeadline-expr"/> </extension> </complexContent> </complexType> <complexType name="tThrow"> <complexContent> <extension base="bpws:tActivity"> <attribute name="faultName" type="QName" use="required"/> <attribute name="faultVariable" type="NCName"/> </extension> </complexContent> </complexType> <complexType name="tCompensate"> <complexContent> <extension base="bpws:tActivity"> <attribute name="scope" type="NCName"/> </extension> </complexContent> </complexType> <complexType name="tTerminate"> <complexContent> <extension base="bpws:tActivity"/> </complexContent> </complexType> <complexType name="tFlow"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="links" type="bpws:tLinks" minOccurs="0"/> <group ref="bpws:activity" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tLinks"> <complexContent> <extension base="bpws:tExtensibleElements"> <sequence> <element name="link" type="bpws:tLink" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tLink"> <complexContent> <extension base="bpws:tExtensibleElements"> <attribute name="name" type="NCName" use="required"/> </extension> </complexContent> </complexType> <complexType name="tSwitch"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="case" maxOccurs="unbounded"> <complexType> <complexContent> <extension base="bpws:tActivityContainer"> <attribute name="condition" type="bpws:tBoolean-expr" use="required"/> <!-- [exec] #ayiu-18 --> </extension> </complexContent> </complexType> </element> <element name="otherwise" type="bpws:tActivityContainer" minOccurs="0"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tWhile"> <complexContent> <extension base="bpws:tActivity"> <sequence> <group ref="bpws:activity"/> </sequence> <attribute name="condition" type="bpws:tBoolean-expr" use="required"/> <!-- [exec] #ayiu-19 --> </extension> </complexContent> </complexType> <complexType name="tSequence"> <complexContent> <extension base="bpws:tActivity"> <sequence> <group ref="bpws:activity" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="tPick"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="onMessage" type="bpws:tOnMessage" maxOccurs="unbounded"/> <element name="onAlarm" type="bpws:tOnAlarm" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="createInstance" type="bpws:tBoolean" default="no"/> </extension> </complexContent> </complexType> <complexType name="tScope"> <complexContent> <extension base="bpws:tActivity"> <sequence> <element name="variables" type="bpws:tVariables" minOccurs="0"/> <element name="correlationSets" type="bpws:tCorrelationSets" minOccurs="0"/> <element name="faultHandlers" type="bpws:tFaultHandlers" minOccurs="0"/> <element name="compensationHandler" type="bpws:tCompensationHandler" minOccurs="0"/> <element name="eventHandlers" type="bpws:tEventHandlers" minOccurs="0"/> <group ref="bpws:activity"/> </sequence> <attribute name="variableAccessSerializable" type="bpws:tBoolean" default="no"/> <!-- [question] #ayiu-20 --> </extension> </complexContent> </complexType> <simpleType name="importedURI"> <restriction base="anyURI"> <enumeration value="http://www.w3.org/2001/XMLSchema"/> <enumeration value="http://schemas.xmlsoap.org/wsdl/"/> </restriction> </simpleType> <simpleType name="tBoolean-expr"> <restriction base="string"/> </simpleType> <simpleType name="tDuration-expr"> <restriction base="string"/> </simpleType> <simpleType name="tDeadline-expr"> <restriction base="string"/> </simpleType> <simpleType name="tBoolean"> <restriction base="string"> <enumeration value="yes"/> <enumeration value="no"/> </restriction> </simpleType> <simpleType name="tRoles"> <restriction base="string"> <enumeration value="myRole"/> <enumeration value="partnerRole"/> </restriction> </simpleType> </schema>--- End Message ---
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]