1

Java アプリケーションで SCXML を使用しています。ステート マシンを実装するために apache-commons-scxml api を使用しています。sxml API を使用してデータ モデルに値を設定できますが、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」という値が返されます。Apache commons-scxml api を介して Java コードでノードの更新された値 (この場合は「ダミー」) を読み取る方法はありますか?

4

1 に答える 1

0

あなたはこれを行うことができます:

org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");

xyz.getFirstChild().setTextContent("dummy");

私の理解では、 getStateMachine().getDataModel() は、XML ファイルで定義された静的データ モデルのみを提供します。

于 2015-04-27T10:58:54.840 に答える