This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 870 - The current reactive mechanism is complex because it introduces implicit links.
Summary: The current reactive mechanism is complex because it introduces implicit links.
Status: RESOLVED WONTFIX
Alias: None
Product: WS Choreography
Classification: Unclassified
Component: Spec (show other bugs)
Version: unspecified
Hardware: Other other
: P2 normal
Target Milestone: --
Assignee: Martin Chapman
QA Contact: WS Choreography mailing-list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-09-07 11:14 UTC by Steve Ross-Talbot
Modified: 2004-12-01 17:06 UTC (History)
1 user (show)

See Also:


Attachments

Description Steve Ross-Talbot 2004-09-07 11:14:55 UTC
The current reactive mechanism introduces implicit links between concurrent activities that 
compromises simplicity and makes model verification difficult. As far as we can tell there are no use 
case requirements for such a reactive mechanism. Whereas there is a clear CSF for simplicity. 

The current construct may have complexity implications in model verification functionality that is still at 
early stage of understanding. 

There is a need to link activities through predicates and observed messages but this should be done in 
such a way as to make the relationships between activation more explicit.
Comment 1 Martin Chapman 2004-09-09 19:59:43 UTC
will have a time boxed discussion on the agenda
Comment 2 Greg Ritzinger 2004-10-12 17:32:12 UTC
Gary Brown adds:

Some further information:

Here is a simple example showing how the use of variables for 
synchronization can implicitly impact the interactions that may be 
performed, and also potentially introduce a different type of deadlock:

<parallel>
    <workunit guard="cdl:getVariable(xyz)" block="true" >
        <interaction operation="foo" >
            ....
            <record>
                <target var="cdl:getVariable(abc)" />
            </record>
        </interaction>
    </workunit>
    <workunit guard="cdl:getVariable(abc)" block="true" >
        <interaction operation="foo" >
            ....
            <record>
                <target var="cdl:getVariable(xyz)" />
            </record>
        </interaction>
    </workunit>
</parallel>

This is an extreme case, but shows how the synchronization based on 
variables can introduce implicit dependencies that affect the true flow of a 
set of interactions.

Possibly the model checking can be enhanced by modeling the variables as 
processes - so that the behaviour of synchronization can become explicit. 
However this will complicate the model checking. I am also not sure what 
would happen if the reactive mechanism was to become more complex, handling 
the unsetting of variables or even reacting to changes in the value of a 
variable.

http://lists.w3.org/Archives/Public/public-ws-chor/2004Oct/0019.html