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] Issue - 107 - Extension points and opacity


I think I understand your objection but let me repeat it just to make 
sure I'm right.

Let's say that we introduce the opaque activity. Let's further say that 
someone wants to communicate how their process works so that their 
partner can interoperate with them. In the abstract process the partner 
specifies the following:

...
    eventHandlers
       onEvent ...
          empty

The person reading this abstract process and trying to figure out what 
it says about how their partner will operate is now in a bit of a 
quandary. Did their partner mean to say 'If you send this event I will 
ignore it' or did their partner mean to say 'If you send this event I 
will execute an empty method and then do something else'? The later 
interpretation is possible because in an abstract process its always 
possible to shove in activities anywhere one would like.

But while the later interpretation may be possible, is it reasonable? Is 
it reasonable to look at an event handler in an abstract process whose 
only contents is empty, given the existence of opaque, and from that 
come to the conclusion that the abstract process author actually meant 
to say they would do something with the message?

I believe the answer is no, it is not reasonable. If someone writes an 
abstract process and includes an explicit empty, when they had recourse 
to opaque, then they should mean they just want empty. If they mean 
'empty and something else' then they should have included an explicit 
opaque in order to make their meaning clear. That is the whole point of 
having opaque. It makes it possible to disambiguate exactly this type of 
scenario.

We could, of course, come up with some kind of format that says 'only 
these activities and no others may be included'. That would really make 
things clear but I think it may make things a little too clear. A 
certain level of ambiguity is useful in abstract processes.

For example, the partner who sent the previous abstract process may 
actually have code in the event handler that does things like log the 
incoming message. But that has nothing to do with the externally visible 
behavior and so there is no reason to describe it in the abstract 
process. From the perspective of the person trying to interoperate with 
the system described by the abstract process all that is really 
important is that if they send the specified event nothing will result 
that has any relevance to the business process underway between the two 
parties which is why the single empty activity was specified. It is this 
type of flexibility that I mean by saying that a certain level of 
ambiguity is useful in abstract processes.

I think opaque hits the right level of ambiguity but I fully appreciate 
that this is a matter of taste.

What am I sure of, as I explore in detail in 
<http://lists.oasis-open.org/archives/wsbpel/200404/msg00052.html>, is 
that without opaque the meaning of empty in a situation such as the one 
described above is hopelessly ambiguous and no reasonable level of 
interpretation can make it less so.

		Yaron



Assaf Arkin wrote:

> 
>> Opaque is a very straight forward statement - I am not telling you 
>> what happens in this part of the code.
>>
>> This means that an opaque could be replaced with any possible code 
>> including but certainly not limited to 'empty'.
> 
> 
> But by definition, 'I am not telling you what happens in this part of 
> the [process]' is a possibility anywhere within the abstract, right? Any 
> additional implementation details could be inserted anywhere, since we 
> don't specify that this is precluded?
> 
> Unless you have a way to constrain the implementation against the 
> abstract, the following three are sematically identical and should be 
> interpreted the same way:
> 
> receive
> opaque
> opaque
> reply
> 
> receive
> opaque
> reply
> 
> receive
> reply
> 
> The only case where 'opaque' would actually say something meaningful is 
> where you are required to include an activity but have nothing to say, 
> for example, inside an event handler. The 'empty' activity exists for 
> that purpose. So semantically, they both do the same thing.
> 
> I am ignoring the English meaning of the name used for the activity. I'd 
> favor solving confusing by say picking a different name for the activity 
> rather than adding another one, or maybe managing without either one.
> 
> Assaf
> 
> 


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