Ate Douma created SCXML-245:
-------------------------------
Summary: Reimplement Nashorn Javascript context binding
Key: SCXML-245
URL: https://issues.apache.org/jira/browse/SCXML-245
Project: Commons SCXML
Issue Type: Improvement
Reporter: Ate Douma
Assignee: Ate Douma
Fix For: 2.0
The current Javascript context binding can be drastically improved and
simplified by using a binding which only delegates to the SCXML context it
wraps, and not (also) another binding and/or the Nashorn Global binding.
This way, all Javascript context binding changes only will end up in the SCXML
context and the Nashorn Global can remain (and should be) 'untouched'.
This is largely similar to how the Groovy context binding works.
The Nashorn Global binding will be the only 'exception' to this: the new
JSBinding will keep that one variable (with key "nashorn.global) separate, not
storing it in the SCXML context itself.
This will also simplify the SCXML context serialization (as the Nashorn Global
is NOT serializable).
Pre-requisite is that for each SCXML document+JSEvaluator only a single script
engine will be used and all script/condition evaluations are using the same
Nashorn Global. Which actually will give a performance improvement as well.
The only 'limitation' will be that Nashorn Global modifications (like
modifications made to Javscript global objects like Object) will also NOT be
stored in the SCXML context, and therefore not be serialized either.
But then, those weren't serializable to begin with, so this is an intrinsic
limitation of using the Javascript engine anyway.
Meaning: when using the Javascript engine, global modifications cannot and
won't be serialized.
However, as a single and separate engine will be used ('attached') for each
SCXML instance, and (therefore) share a single Nashorn Global, as long as the
SCXML instance doesn't need to be (de)serialized, using global modifications
should just 'work' within the context of that single SCXML instance execution.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)