Как читать значения Datamodel из Apache-Commons SCXML API в Java
Я использую SCXML в моем Java-приложении. Я использую apache-commons-scxml api для реализации конечного автомата. Я могу установить значение в модели данных через API xml, но не могу прочитать это значение в коде Java.
Каждый раз при чтении извлекайте значение по умолчанию, заданное в документе scxml, вместо чтения последнего значения, установленного во время выполнения. Однако, если мы зарегистрируем выражение в scxml doc для того же значения, тогда оно напечатает обновленное значение, но в коде Java я не смогу получить обновленное значение.
Ниже дана модель данных:
<datamodel><!-- Usage where the value is an XML data tree -->
<data id="XYZ">
<A xmlns="">T</DevID>
<B xmlns="">F</Result>
</data>
</datamodel>
Чтение модели данных:
List<Data> dataTest = handlerFSM.getEngine().getStateMachine().getDatamodel().getData();
Iterator<Data> itrTest = dataTest.iterator();
while(itrTest.hasNext()){
Data d = itrTest.next();
if(d.getId().equals("XYZ")){
NodeList nodeList = d.getNode().getChildNodes();
}
Установка значения:
nodeList.item(1).setTextContent("dummy");
Чтение значения:
nodeList1.item(1).getTextContent();
Все время операции чтения дает значение "F", а не "фиктивный", который устанавливается во время выполнения. Любая идея, как прочитать обновленное значение (в данном случае "пустышка") узла в коде Java через Apache commons-scxml API?
1 ответ
Вы можете сделать это:
org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");
xyz.getFirstChild().setTextContent("dummy");
Насколько я понимаю, getStateMachine(). GetDataModel() даст вам только статическую модель данных, как она была определена в файле XML.