[ 
https://issues.apache.org/jira/browse/SCXML-38?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12472560
 ] 

Wolfgang Frech commented on SCXML-38:
-------------------------------------

ad b) non-unique state ids
My test cases use the same ID intentionally.
I read the WD that the state element is present in both the including and the 
included external file, with the same ID.
This follows the example in the Working Draft, section F.1 Language Overview

In the main SCXML document, the state "Test2Sub1" is externalized like that:
----
...
      <!-- This time we reference a state 
           -    defined in an external file -->
      <state id="Test2Sub1" src="Test2Sub1.scxml"/>
...
----
and defined in the external file like that.
----
...
<scxml version="1.0" xmlns="http://www.w3.org/2005/07/scxml";> 
...
 <state id="Test2Sub1">
    <onentry>
      <log expr="'Inside Test2Sub1'"/>
     </onentry>
    <transition event="Event2" target="Test2Sub2"/>
  </state>
</scxml>
----

> spec and semantics of initialstate attribute not clear for external state
> -------------------------------------------------------------------------
>
>                 Key: SCXML-38
>                 URL: https://issues.apache.org/jira/browse/SCXML-38
>             Project: Commons SCXML
>          Issue Type: Bug
>    Affects Versions: 0.6
>         Environment: Win XP, Java 5, Eclipse 3.2, JUnit 4
>            Reporter: Wolfgang Frech
>            Priority: Minor
>
> The WD-SCXML is not fully consistent if the initialstate attribute is 
> required for an external state, that is a state that has a src attribute 
> pointing to a file containing its content.
> The attribute details (WD 3.1.1) define the initialstate attribute as 
> required, without any exception for external states.
> The example Test2Sub1.scxml (WD F.1) does not have a initialstate attribute.
> If this is only a minor omission in the example, the real issue is: how does 
> an initialstate attribute affect the behavior of the state chart?
> So far this would be only an issue with the WD.
> The commons SCXML implementation decided to treat the initialstate attribute 
> as required.
> Demonstration code follows.
> The issue with the commons implementation is:
> It is not clear which (state) id can be given in the initialstate attribute 
> of an external state SCXML file and what this means.
> The id of the external state itself is not accepted. See second demonstration 
> code.
> Demo - initialstate required:
> ----
>       @Test
>       public void externalStateWithoutInitialstate() throws 
> FileNotFoundException,
>                       IOException, SAXException, ModelException {
>               final URL definition = getClass().getClassLoader().getResource(
>                               "externalStateWithoutInitialstate-main.scxml");
>               try {
>                       SCXMLDigester.digest(definition, new 
> SimpleErrorHandler());
>                       fail();
>               } catch (ModelException e) {
>                       assertEquals(
>                                       "Initial state null or not a descendant 
> of state with ID \"start\"",
>                                       e.getMessage());
>               }
>       }
> ----
> main scxml
> ----
> <?xml version="1.0"?>
> <scxml
>   xmlns="http://www.w3.org/2005/07/scxml";
>   version="1.0"
>   initialstate="start">
>   <state id="start" src="externalStateWithoutInitialstate-external.scxml"/>
> </scxml>
> ----
> included scxml 
> note: no initalstate
> ----
> <?xml version="1.0"?>
> <scxml
>   xmlns="http://www.w3.org/2005/07/scxml";
>   version="1.0">
>   <state id="start" />
> </scxml>
> Demo - with initialstate pointing to external state
> -----
>       @Test
>       public void externalStateWithInitialstate() throws 
> FileNotFoundException,
>                       IOException, SAXException, ModelException {
>               final URL definition = getClass().getClassLoader().getResource(
>                               "externalStateWithInitialstate-main.scxml");
>               try {
>                       SCXMLDigester.digest(definition, new 
> SimpleErrorHandler());
>                       fail();
>               } catch (ModelException e) {
>                       assertEquals(
>                                       "Initial state null or not a descendant 
> of state with ID \"start\"",
>                                       e.getMessage());
>               }
>       }
> -----
> main scxml
> -----
> <?xml version="1.0"?>
> <scxml
>   xmlns="http://www.w3.org/2005/07/scxml";
>   version="1.0"
>   initialstate="start">
>   <state id="start" src="externalStateWithInitialstate-external.scxml"/>
> </scxml>
> ----
> included scxml
> note: with initialstate
> ----
> <?xml version="1.0"?>
> <scxml
>   xmlns="http://www.w3.org/2005/07/scxml";
>   version="1.0"
>   initialstate="start">
>   <state id="start">
>     <onentry>
>       <log expr="'now in state start'" />
>     </onentry>
>   </state>
> </scxml>
> ----

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to