List of usage examples for org.apache.commons.scxml2.env.jexl JexlContext JexlContext
public JexlContext()
From source file:it.polito.elite.dog.drivers.appliances.base.ApplianceDriverInstance.java
private void initializeDeviceStateMachine() { // check if all needed elements are initialized if ((this.deviceSerial != null) && (!this.deviceSerial.isEmpty()) && (this.stateMachineLocator != null)) { // get the device-specific state machine URL, if any available URL stateMachineURL = this.stateMachineLocator.getStateMachine(this.deviceSerial); // check not null if (stateMachineURL != null) { try { // get the SCXML state machine (SCXML root element) this.stateMachine = SCXMLReader.read(stateMachineURL); // build a new executor this.executor = new SCXMLExecutor(new JexlEvaluator(), new SimpleDispatcher(), new SimpleErrorReporter()); //set a scheduler dispatcher to handle delayed events this.executor.setEventdispatcher(new SimpleScheduler(this.executor)); // set the state machine this.executor.setStateMachine(this.stateMachine); // set the root context JexlContext context = new JexlContext(); // set the executor context this.executor.setRootContext(context); // add this class as listener of the state machine changes this.executor.addListener(this.stateMachine, this); // start the engine this.executor.go(); } catch (IOException | ModelException | XMLStreamException e) { // log the error and continue if possible this.logger.log(LogService.LOG_ERROR, "Error while creating the state machine executor associated to this driver instance", e);/* w w w . ja v a 2 s . c o m*/ } } } }