首页 > 解决方案 > Corda - externalIds 属性的 CommonQueryCriteria 用途

问题描述

Corda vault API 包含一个名为CommonQueryCriteria的类,其实现方式如下:

abstract class CommonQueryCriteria : QueryCriteria() {
    abstract val status: Vault.StateStatus
    open val relevancyStatus: Vault.RelevancyStatus = Vault.RelevancyStatus.ALL
    open val constraintTypes: Set<Vault.ConstraintInfo.Type> = emptySet()
    open val constraints: Set<Vault.ConstraintInfo> = emptySet()
    open val participants: List<AbstractParty>? = null
    abstract val contractStateTypes: Set<Class<out ContractState>>?
    open val externalIds: List<UUID> = emptyList()
    open val exactParticipants: List<AbstractParty>? = null
    override fun visit(parser: IQueryCriteriaParser): Collection<Predicate> {
    return parser.parseCriteria(this)
    }
}

externalIds财产的目的是什么?

注意:这肯定不能用于映射UniqueIdentifier.externalId,因为:

标签: corda

解决方案


这是为了支持 Corda 4.3 中的帐户查询而引入的: https ://github.com/corda/accounts/blob/master/docs.md#querying-the-vault-by-account

Vault Query 文档在讨论拥有密钥时在页面底部提到了这个新属性: https ://docs.corda.net/docs/corda-os/4.8/api-vault-query.html#mapping-owning-外部 ID 的键

诚然,这不是很清楚,应该参考CommonQueryCriteria(不是VaultQueryCriteria)并展示一个例子。


推荐阅读