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] Semantic difference in the first <receive>


Depends on the intention ... whether we consider the process instances 
should be "homogeneous" or "distinct" at the beginning of its lifecycle.

By using a <receive createInstance="yes"/>, we treat every process instance 
"homogeneous" (they are same when they start).  The fact that each process 
instance may have different values in their process variables is just 
because they receive different incoming call in their subsequent receive 
activity.  This homogeneous model is perfectly fine and I would argue why 
can't the first activity to be an <invoke> which initialize the process 
variable from the outputVariable of the <invoke>.

However, since the spec requires the first basic activity in the process 
must be a <receive createInstance="yes"/>, I guess the intention is to make 
the process instance distinct rather than homogeneous.  Therefore, I'm 
suggesting to use a more explicit way to capture this intention.  The 
process instance is distinct if the initialization is explicitly defined.

Using the <receive createInstance="yes"/> together with the intention of 
the process instance distinction has the following disadvantages ...
1) We need to define additional constraints (such as it must be the first 
activity ... etc.) which complicates the model.
2) Locating the "first activity" is not easy.  What if the the first 
activity is a <sequence> which contains another <sequence>, the first basic 
activity maybe nested multiple levels down.  What if the first activity is 
a <flow> which has multiple starting activities (some are basic activities 
and some are nested <flows>).

By explicitly capturing the "initialization", we fundamentally treat every 
"process instance" distinct and force that distinction upfront (independent 
of the actual processing steps).  This mechanism also clearly identify 
which variables need to be initialized upfront versus those variable which 
is assigned later as the process executes (similar to the distinction 
between "instance variables" and "local variables" in object oriented 
system).

Also by explicitly capture the "initialization" call, we can generalize the 
invocation of a process instance so that it becomes much easier to support 
other ways to start a process instance (e.g. "call" and "spawn").

Best regards,
Ricky

At 09:21 AM 9/13/2003 +0200, Dieter Roller wrote:

>Aren't createInstance="yes" and triggeredBy just two different ways of
>saying the same ?
>
>Cheers,
>
>dieter
>
>
>
>|---------+---------------------------->
>|         |           Ricky Ho         |
>|         |           <riho@cisco.com> |
>|         |                            |
>|         |           09/13/2003 05:05 |
>|         |           AM               |
>|         |                            |
>|---------+---------------------------->
> 
 > >---------------------------------------------------------------------------------------------------------------------------------------------|
>   | 
 >                                                                       |
>   |       To:       wsbpel@lists.oasis-open.org 
 >                                                                       |
>   |       cc: 
 >                                                                       |
>   |       Subject:  [wsbpel] Semantic difference in the first 
> <receive> 
> |
>   | 
 >                                                                       |
>   | 
 >                                                                       |
> 
 > >---------------------------------------------------------------------------------------------------------------------------------------------|
>
>
>
>There is no way to pass data to "initialize the variables" of a newly
>creating process instance.  The only thing that you can do is to put a
><receive ... createInstance="yes"/> as the first activity so that the
>process instance can receive external data for variable initialization.  In
>
>this case, the first <receive> has very different semantics from subsequent
>
><receive> and I argue that this should be model explicitly.  Therefore,
>rather than using the following ....
>
><process>
>              ....
>              <sequence>
>                          ....
>                          <receive partner="buyer" portType="p1" operation
>="submitOrder"
>variable="var1" createInstance="yes"/>
>                          ....
>                          <receive ..../>
>              <sequence>
></process>
>
>We should use this ...
>
><process>
>              ...
>              <triggeredBy>
>                          <receive partner="buyer" portType="p1" variable
>="var1"
>operation="submitOrder"/>
>              </triggeredBy>
>              ...
>              <sequence>
>                          ....
>                          <receive ..../>
>              <sequence>
></process>
>
>Best regards,
>Ricky
>
>
>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
>.
>
>
>
>
>
>
>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.



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