【问题标题】:How to display the states on Corda terminal如何在 Corda 终端上显示状态
【发布时间】:2020-08-31 01:45:03
【问题描述】:

我是 Corda 的新手,正在设计一个 Cordap。我想根据在启动流程期间传递的一些参数将状态显示到终端上。 我的方法是创建一个 StateAndRef 类型的列表来存储所有状态。现在我遍历列表并根据 if else 条件显示状态。

但我面临的问题是有时打印的所有状态,有时只打印其中的几个。请帮我解决这个问题。我的主要动机是我应该能够在屏幕上显示那些名为 Car 的状态。

PS:我正在使用 Java 来设计 Cordapp。

【问题讨论】:

    标签: java corda flow


    【解决方案1】:

    您实际上并不需要流来显示状态。您可以使用 vaultQuery 来执行此操作:

    run vaultQuery contractStateType: <fully-qualified name of the state type>
    

    请参阅此处的文档:https://docs.corda.net/docs/corda-os/4.4/shell.html#examples

    如果您想进行复杂的查询,CRaSH shell 不支持它。但是,您可以使用 Vault Query API 在 RPC 客户端中执行此操作。 VaultQuery API 非常灵活,并提供了许多访问 Vault 的机制。

    在此处查看文档:https://docs.corda.net/docs/corda-os/4.4/api-vault-query.html#api-vault-query

    【讨论】:

      【解决方案2】:

      正如 Ashutosh 已经提到的,似乎还不支持复杂的查询。然而,完成查询所有状态子集的一种方法是为这些状态创建另一个类。

      对于 Ex - CARState 表示您要查询的子集,其他状态可以是 CAR2State,然后只需使用

      run vaultQuery contractStateType: com.template.CARState
      

      我不确定这是否有帮助,因为我不知道您出于什么原因要使用流中传递的参数。但是 RPC 客户端是实现复杂查询的方式,遗憾的是我的 Udemy 课程中没有涉及到。

      【讨论】:

      • 我有一个带有商店汽车详细信息(包括车牌)的汽车状态。还有另一种状态存储详细信息,例如交通规则破坏的次数等。我想通过车牌号,它应该显示汽车详细信息以及违反交通规则的详细信息。
      猜你喜欢
      • 2018-06-20
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2012-09-28
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多