Как читать значения 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.

Другие вопросы по тегам