我在java应用程序中使用了SCXML。我使用apache-commons-scxml api来实现状态机。我可以通过sxml api设置数据模型中的值,但不能在java代码中读取该值。
每次读取操作都会获取scxml文档中设置的默认值,而不是读取在运行时设置的最新值。但是,如果我们在scxml文档中记录相同值的表达式,那么它将打印更新后的值,但是在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“,而不是在运行时设置的"dummy”。您知道如何通过apache commons-scxml api读取java代码中节点的更新值(在本例中为"dummy")吗?
发布于 2015-04-27 18:58:55
您可以这样做:
org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");
xyz.getFirstChild().setTextContent("dummy");据我所知,getStateMachine().getDataModel()只能提供在XML文件中定义的静态数据模型。
https://stackoverflow.com/questions/23539934
复制相似问题