The SCXML specification allows for defining the required datamodel (type) on the root SCXML element.
This datamodel type defines which language support the SCXML document requires.
For Commons SCXML this means: what Evaluator type should be instantiated and configured on the SCXMLExecutor.
I'll introduce a new singleton EvaluatorFactory holding new EvaluatorProvider instances for each currently supported Evaluator language: Jexl, Groovy, JS (ecmascript) and XPath, with the JexlEvaluatorProvider used as default.
The current requirement of having to instantiate and provide a specific Evaluator instance on the SCXMLExecutor then no longer is needed: an SCXML document now can define the datamodel attribute instead (or accept the JexlEvaluator as fallback).
It still is possible to use and configure a custom/dedicated Evaluator programmatically as before to override the new default handling.
The only new restriction is that an explicitly configured Evaluator must support the datamodel type defined on the SCXML document.