+1 to the spirit of the proposal.
Borrowing from other languages, I will find it easier to understand and
articulate if the variable begins life with a known initial value.
Specifically, if I have a process that declares variable X with some
initial value, and the start activity decides to assign the received
message to that variable X. In any language I know, the initial value
can be safely ignored, since the first thing that will happen is that
value being replaced with the received message. In this proposal, the
variable will be set twice and end up with the initial value.
assaf
Yaron Y. Goland wrote:
> 132 - In-line Variable Initialization
>
> Proposal: Allow in-line variable initialization in BPEL
>
> Rationale: Many languages allow for variables to be initialized when
> they are declared so as to allow for an explicit relationship between
> the variable and its initial value. That way no one can accidentally
> insert code between the variable and its initialization thus causing
> various unforeseen problems.
>
> Changes Required:
>
> Section 9.2. Variable
>
> Change the variable syntax declaration to:
> <variables>
> <variable name="ncname" messageType="qname"?
> type=”qname”? element=”qname”?>+
> from-spec?
> </variable>
> </variables>
>
> Insert the following paragraph after the paragraph that ends " However
> the children of the document element MUST exclusively consist of the
> complexType values assigned to the variable.":
>
> A variable can optionally be initialized by using an in-line
> from-spec. From-spec is defined in section 9.3. Conceptually the
> in-line variable initializations are modeled as a virtual sequence
> activity that contains a series of virtual assign activities, one for
> each variable being initialized. The virtual assigns then each contain
> a single virtual copy whose from-spec is as given in the variable
> initialization and the to-spec points to the variable being created.
> For purposes of determining order of execution the virtual sequence
> activity can be treated as executing just before the main activity of
> the scope or process the variables are defined on. This means, for
> example, that the fault handlers for the scope/process will be
> initialized before the variables are initialized. The exception to the
> previous ordering is for a scope or process that contains the initial
> start activity that started a process instance. In that case the
> initial start activity will complete execution before variable
> initialization occurs. But variable initialization will then follow
> immediate after the initial start activity and before any other
> activities are executed.
>
> Change Schema for tVariable to:
>
> <complexType name="tVariable">
> <complexContent>
> <extension base="bpws:tExtensibleElements">
> <sequence>
> <element ref="bpws:from" minOccurs="0"/>
> </sequence>
> <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"/>
> </extension>
> </complexContent>
> </complexType>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:
>
>