You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by Rich Taylor <bh...@gmail.com> on 2007/10/23 01:24:40 UTC

Inline variable initialization?

I'm trying to take advantage of "inline" variable initalization from the
BPEL 2.0 spec, but I must be missing something.

My variable is a WSDL Message Type, with a single part, called
"parameters".  When I use a good old "assign" activity to set a fixed value
on the variable things work fine.  I'm able to specify which _part_ of the
message to set the literal value on, as below:

<bpws:variable messageType="ns1:GetAccountDetail"
name="CICSService_GetAccountDetail_Input">
...
<bpws:copy>
    <bpws:from>
        <bpws:literal>
            <GetAccountDetail>
                <GetAccountDetailFilters>
                    <AcctNum/>
                </GetAccountDetailFilters>
            </GetAccountDetail>
        </bpws:literal>
    </bpws:from>
    <bpws:to part="parameters"
variable="CICSService_GetAccountDetail_Input"/>
</bpws:copy>


However when I try to use inline initialization and assign a fixed value to
the variable upon creation, things don't work at runtime.   I get a
selectionFailure when trying to write data into the variable's structure.

Here is the inline version that does not work when I later try to write data
to the variable.

<bpws:variable messageType="ns1:GetAccountDetail"
name="CICSService_GetAccountDetail_Input">
    <bpws:from>
       <bpws:literal>
           <GetAccountDetail>
               <GetAccountDetailFilters>
                   <AcctNum/>
               </GetAccountDetailFilters>
            </GetAccountDetail>
        </bpws:literal>
     </bpws:from>
</bpws:variable>



What am I missing here?  When using as assign for variable initialization I
can specify a message part, while using inline, there is no such option.  Is
that the problem?  If so what is the correct approach?  Or if someone could
point me to an example of inline variable initialization.

Thanks!!!!  Rich Taylor



Reference:

WSDL
<message name="GetAccountDetail">
    <part element="tns:GetAccountDetail" name="parameters"/>
</message>

Schema
<xs:element name="GetAccountDetail" type="tns:GetAccountDetailType"/>
<xs:complexType name="GetAccountDetailType">
    <xs:sequence>
        <xs:element name="GetAccountDetailFilters"
type="tns:GetAccountDetailFiltersType"/>
    </xs:sequence>
</xs:complexType>

Re: Inline variable initialization?

Posted by Matthieu Riou <ma...@offthelip.org>.
On 10/23/07, Rich Taylor <bh...@gmail.com> wrote:
>
> Good to know, thanks.   As for inline variable initialization, even if Ode
> does support it, it's not clear to me whether or not it is possible to do
> what I was trying?  I'm not sure how the engine would know which part of a
> message to insert the data into.  Maybe it assumes the first part which
> would be safe in a WS-I Basic Profile situation I suppose.
>
> As for working on this feature, I have some other Ode issues that are
> higher
> priority at the moment.  This may change however.  I will be writing up
> issues for them as soon as I get a chance.
>
> One feature that might be nice in Ode would be auto variable
> initialization
> at runtime.   This is a controversial feature I realize, but might be very
> useful and solve a lot of headaches for newcomers to BPEL.   It would
> basically be an extension or flag on the engine that would automatically
> create the target XML in an assign (when it didn't exist), based on the
> schema.   At least one or two other products do this, as an example see
> [1]


I agree it's definitely a useful feature. And not so controversial if you
make it optional.

Cheers,
Matthieu

Thanks, Rich
>
> [1]
>
> http://www.activebpel.org/infocenter/ActiveBPEL/v40/index.jsp?topic=/com.activee.bpel.doc/html/UG18-7-2.html
>
> On 10/22/07, Matthieu Riou <ma...@offthelip.org> wrote:
> >
> > Hi Rich,
> >
> > Inline variable initialization isn't supported yet in ODE, although we
> > should definitely add it in the near future. Would you be interested
> > enough
> > to help implementing it? Btw I've updated our compliance page, thanks
> for
> > pointing this out!
> >
> > Cheers,
> > Matthieu
> >
> > On 10/22/07, Rich Taylor <bh...@gmail.com> wrote:
> > >
> > > I'm trying to take advantage of "inline" variable initalization from
> the
> > > BPEL 2.0 spec, but I must be missing something.
> > >
> > > My variable is a WSDL Message Type, with a single part, called
> > > "parameters".  When I use a good old "assign" activity to set a fixed
> > > value
> > > on the variable things work fine.  I'm able to specify which _part_ of
> > the
> > > message to set the literal value on, as below:
> > >
> > > <bpws:variable messageType="ns1:GetAccountDetail"
> > > name="CICSService_GetAccountDetail_Input">
> > > ...
> > > <bpws:copy>
> > >     <bpws:from>
> > >         <bpws:literal>
> > >             <GetAccountDetail>
> > >                 <GetAccountDetailFilters>
> > >                     <AcctNum/>
> > >                 </GetAccountDetailFilters>
> > >             </GetAccountDetail>
> > >         </bpws:literal>
> > >     </bpws:from>
> > >     <bpws:to part="parameters"
> > > variable="CICSService_GetAccountDetail_Input"/>
> > > </bpws:copy>
> > >
> > >
> > > However when I try to use inline initialization and assign a fixed
> value
> > > to
> > > the variable upon creation, things don't work at runtime.   I get a
> > > selectionFailure when trying to write data into the variable's
> > structure.
> > >
> > > Here is the inline version that does not work when I later try to
> write
> > > data
> > > to the variable.
> > >
> > > <bpws:variable messageType="ns1:GetAccountDetail"
> > > name="CICSService_GetAccountDetail_Input">
> > >     <bpws:from>
> > >        <bpws:literal>
> > >            <GetAccountDetail>
> > >                <GetAccountDetailFilters>
> > >                    <AcctNum/>
> > >                </GetAccountDetailFilters>
> > >             </GetAccountDetail>
> > >         </bpws:literal>
> > >      </bpws:from>
> > > </bpws:variable>
> > >
> > >
> > >
> > > What am I missing here?  When using as assign for variable
> > initialization
> > > I
> > > can specify a message part, while using inline, there is no such
> > > option.  Is
> > > that the problem?  If so what is the correct approach?  Or if someone
> > > could
> > > point me to an example of inline variable initialization.
> > >
> > > Thanks!!!!  Rich Taylor
> > >
> > >
> > >
> > > Reference:
> > >
> > > WSDL
> > > <message name="GetAccountDetail">
> > >     <part element="tns:GetAccountDetail" name="parameters"/>
> > > </message>
> > >
> > > Schema
> > > <xs:element name="GetAccountDetail" type="tns:GetAccountDetailType"/>
> > > <xs:complexType name="GetAccountDetailType">
> > >     <xs:sequence>
> > >         <xs:element name="GetAccountDetailFilters"
> > > type="tns:GetAccountDetailFiltersType"/>
> > >     </xs:sequence>
> > > </xs:complexType>
> > >
> >
>

Re: Inline variable initialization?

Posted by Rich Taylor <bh...@gmail.com>.
Good to know, thanks.   As for inline variable initialization, even if Ode
does support it, it's not clear to me whether or not it is possible to do
what I was trying?  I'm not sure how the engine would know which part of a
message to insert the data into.  Maybe it assumes the first part which
would be safe in a WS-I Basic Profile situation I suppose.

As for working on this feature, I have some other Ode issues that are higher
priority at the moment.  This may change however.  I will be writing up
issues for them as soon as I get a chance.

One feature that might be nice in Ode would be auto variable initialization
at runtime.   This is a controversial feature I realize, but might be very
useful and solve a lot of headaches for newcomers to BPEL.   It would
basically be an extension or flag on the engine that would automatically
create the target XML in an assign (when it didn't exist), based on the
schema.   At least one or two other products do this, as an example see [1]

Thanks, Rich

[1]
http://www.activebpel.org/infocenter/ActiveBPEL/v40/index.jsp?topic=/com.activee.bpel.doc/html/UG18-7-2.html

On 10/22/07, Matthieu Riou <ma...@offthelip.org> wrote:
>
> Hi Rich,
>
> Inline variable initialization isn't supported yet in ODE, although we
> should definitely add it in the near future. Would you be interested
> enough
> to help implementing it? Btw I've updated our compliance page, thanks for
> pointing this out!
>
> Cheers,
> Matthieu
>
> On 10/22/07, Rich Taylor <bh...@gmail.com> wrote:
> >
> > I'm trying to take advantage of "inline" variable initalization from the
> > BPEL 2.0 spec, but I must be missing something.
> >
> > My variable is a WSDL Message Type, with a single part, called
> > "parameters".  When I use a good old "assign" activity to set a fixed
> > value
> > on the variable things work fine.  I'm able to specify which _part_ of
> the
> > message to set the literal value on, as below:
> >
> > <bpws:variable messageType="ns1:GetAccountDetail"
> > name="CICSService_GetAccountDetail_Input">
> > ...
> > <bpws:copy>
> >     <bpws:from>
> >         <bpws:literal>
> >             <GetAccountDetail>
> >                 <GetAccountDetailFilters>
> >                     <AcctNum/>
> >                 </GetAccountDetailFilters>
> >             </GetAccountDetail>
> >         </bpws:literal>
> >     </bpws:from>
> >     <bpws:to part="parameters"
> > variable="CICSService_GetAccountDetail_Input"/>
> > </bpws:copy>
> >
> >
> > However when I try to use inline initialization and assign a fixed value
> > to
> > the variable upon creation, things don't work at runtime.   I get a
> > selectionFailure when trying to write data into the variable's
> structure.
> >
> > Here is the inline version that does not work when I later try to write
> > data
> > to the variable.
> >
> > <bpws:variable messageType="ns1:GetAccountDetail"
> > name="CICSService_GetAccountDetail_Input">
> >     <bpws:from>
> >        <bpws:literal>
> >            <GetAccountDetail>
> >                <GetAccountDetailFilters>
> >                    <AcctNum/>
> >                </GetAccountDetailFilters>
> >             </GetAccountDetail>
> >         </bpws:literal>
> >      </bpws:from>
> > </bpws:variable>
> >
> >
> >
> > What am I missing here?  When using as assign for variable
> initialization
> > I
> > can specify a message part, while using inline, there is no such
> > option.  Is
> > that the problem?  If so what is the correct approach?  Or if someone
> > could
> > point me to an example of inline variable initialization.
> >
> > Thanks!!!!  Rich Taylor
> >
> >
> >
> > Reference:
> >
> > WSDL
> > <message name="GetAccountDetail">
> >     <part element="tns:GetAccountDetail" name="parameters"/>
> > </message>
> >
> > Schema
> > <xs:element name="GetAccountDetail" type="tns:GetAccountDetailType"/>
> > <xs:complexType name="GetAccountDetailType">
> >     <xs:sequence>
> >         <xs:element name="GetAccountDetailFilters"
> > type="tns:GetAccountDetailFiltersType"/>
> >     </xs:sequence>
> > </xs:complexType>
> >
>

Re: Inline variable initialization?

Posted by Matthieu Riou <ma...@offthelip.org>.
Hi Rich,

Inline variable initialization isn't supported yet in ODE, although we
should definitely add it in the near future. Would you be interested enough
to help implementing it? Btw I've updated our compliance page, thanks for
pointing this out!

Cheers,
Matthieu

On 10/22/07, Rich Taylor <bh...@gmail.com> wrote:
>
> I'm trying to take advantage of "inline" variable initalization from the
> BPEL 2.0 spec, but I must be missing something.
>
> My variable is a WSDL Message Type, with a single part, called
> "parameters".  When I use a good old "assign" activity to set a fixed
> value
> on the variable things work fine.  I'm able to specify which _part_ of the
> message to set the literal value on, as below:
>
> <bpws:variable messageType="ns1:GetAccountDetail"
> name="CICSService_GetAccountDetail_Input">
> ...
> <bpws:copy>
>     <bpws:from>
>         <bpws:literal>
>             <GetAccountDetail>
>                 <GetAccountDetailFilters>
>                     <AcctNum/>
>                 </GetAccountDetailFilters>
>             </GetAccountDetail>
>         </bpws:literal>
>     </bpws:from>
>     <bpws:to part="parameters"
> variable="CICSService_GetAccountDetail_Input"/>
> </bpws:copy>
>
>
> However when I try to use inline initialization and assign a fixed value
> to
> the variable upon creation, things don't work at runtime.   I get a
> selectionFailure when trying to write data into the variable's structure.
>
> Here is the inline version that does not work when I later try to write
> data
> to the variable.
>
> <bpws:variable messageType="ns1:GetAccountDetail"
> name="CICSService_GetAccountDetail_Input">
>     <bpws:from>
>        <bpws:literal>
>            <GetAccountDetail>
>                <GetAccountDetailFilters>
>                    <AcctNum/>
>                </GetAccountDetailFilters>
>             </GetAccountDetail>
>         </bpws:literal>
>      </bpws:from>
> </bpws:variable>
>
>
>
> What am I missing here?  When using as assign for variable initialization
> I
> can specify a message part, while using inline, there is no such
> option.  Is
> that the problem?  If so what is the correct approach?  Or if someone
> could
> point me to an example of inline variable initialization.
>
> Thanks!!!!  Rich Taylor
>
>
>
> Reference:
>
> WSDL
> <message name="GetAccountDetail">
>     <part element="tns:GetAccountDetail" name="parameters"/>
> </message>
>
> Schema
> <xs:element name="GetAccountDetail" type="tns:GetAccountDetailType"/>
> <xs:complexType name="GetAccountDetailType">
>     <xs:sequence>
>         <xs:element name="GetAccountDetailFilters"
> type="tns:GetAccountDetailFiltersType"/>
>     </xs:sequence>
> </xs:complexType>
>