[
https://issues.apache.org/jira/browse/SCXML-101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14317357#comment-14317357
]
Ate Douma commented on SCXML-101:
---------------------------------
I just noticed the global datamodel (scxml root <datamodel> element) was
initialized and stored in the *root* context, not the *global* context (also
and only) used as *single* context.
I've updated this to now also (always) use the global context, which broke
several unit tests :(
To still allow and provide access to the initial <datamodel> data, I've added
access to the global context from the SCXMLExecutor.
NB: any current (external) usage of Commons SCXML expecting these to still be
available from the root context will have to be updated to use this global
context instead.
> <datamodel> not handled as global
> ---------------------------------
>
> Key: SCXML-101
> URL: https://issues.apache.org/jira/browse/SCXML-101
> Project: Commons SCXML
> Issue Type: Bug
> Affects Versions: 0.9
> Reporter: Ingmar Kliche
> Fix For: 2.0
>
>
> The SCXML spec says: "Logically, there is a single globally visible data
> model for the entire state machine. As an authoring convenience, however, we
> allow <datamodel> as a child of any <state>, thus allowing parts of the data
> model to be distributed throughout the document closer to the locations where
> the data will be accessed. However, all instances of the <data> element are
> created and initialized when the state machine is instantiated and may be
> accessed from any state at any time." [1]
> There are two issues:
> 1) The current impl of commons-scxml introduced a scoping, such that <data>
> in <datamodel> elements contained within a <state> are only visible in this
> state and its children (due to context chain). I.e. the <datamodel> is not
> entirely global.
> 2) Initialization of <datamodel>'s contained in a <state> (i.e.
> non-root-datamodels) take place while entering the corresponding state for
> the first time while creating the context (SCXMLInstance#getContext()). But
> initialization of <data> elements has to take place at state machine
> initialization time.
> [1] http://www.w3.org/TR/scxml/#datamodel
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)