2017-07-14 24 views
1

我已經創建了用於測試CorDapp的MockNetwork和MockNodes。 然後我成功執行了「狀態流」。它幫助我將賬目存儲在分類帳上。如何從Corda M12.1的MockNode的vaultService獲取合同狀態?

我可以使用來獲取先前存儲的狀態:

mockNode1.rpcOps.vaultAndUpdates().first 
     .filterStatesOfType<SsiState>() 

但無法提取使用mockNode1的vaultService相同的狀態:

mockNode1.services.vaultService.track().first.states 

mockNode1.vault.track().first.states 

可能是什麼原因?

回答

0

解決方案是重新綁定到Corda M13。在M12.1中,新的庫查詢接口(query()track())僅部分實現,因此它的行爲不如預期。

或者,如果您希望保留在M12.1上,則可以使用mockNode1.services.vaultService.states()代替。值得注意的是,這種方法將不再使用,而是傾向於使用您最初試圖使用的新界面,並且這裏定義的是:https://docs.corda.net/api-vault.html

+0

我嘗試使用** vault.states( setOf(SsiState :: class .java), EnumSet.of(Vault.StateStatus.CONSUMED) ).map {it.state.data} **但我仍然得到零結果。 –

+0

嘗試不消耗。 –