Я создаю CordApp, используя сервер Cordite Braid, чтобы позволить моему клиенту JavaScript подключиться к узлу.Я не уверен, что мое использование Braid здесь имеет отношение к проблеме, но это контекст.
Вопрос отредактирован , потому что я обнаружил более подробную информацию о том, что работает, а что нет..
При развертывании Braid я включаю службу, которая возвращает определенные наборы состояний, запрошенные из хранилища Corda.Я обнаружил, что могу или фильтр на основе StateStatus (CONSUMED
или UNCONSUMED
) или на основе VaultCustomQueryCriteria
, но не оба вместе.
Вот код:
class TestSearchService(val serviceHub: ServiceHub) {
fun getResults(consumed: Boolean, workerID: String, businessID: String): List<StateAndRef<ContractState>> {
val results = builder {
val generalConsumedCriterion = if (consumed) QueryCriteria.VaultQueryCriteria(Vault.StateStatus.CONSUMED) else QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)
val workerIndex = EventSchemaV1.PersistentEvent::workerID.equal(workerID)
val workerCriterion = QueryCriteria.VaultCustomQueryCriteria(workerIndex)
val businessIndex = EventSchemaV1.PersistentEvent::businessID.equal(businessID)
val businessCriterion = QueryCriteria.VaultCustomQueryCriteria(businessIndex)
val criteria = generalConsumedCriterion.and(workerCriterion).and(businessCriterion)
val results = serviceHub.vaultService.queryBy<EventState>(criteria).states
return results
}
}
}
Как написано здесь, служба возвращает только UNCONSUMED
состояний (независимо от того, указано ли значение true или false в качестве параметра consumed
), отфильтрованных по workerID
иbusinessID
.Если хотя предпоследняя строка заменена на
val results = serviceHub.vaultService.queryBy<EventState>(generalConsumedCriteria).states
, то есть она использует только критерии статуса, а не пользовательские, тогда она фильтруется в соответствии с назначением статуса CONSUMED
или UNCONSUMED
, но (очевидно) недругими настраиваемыми полями.
Это как-то связано с тем, как я комбинирую различные критерии, используя criterion.and (критерий) .and (критерий) ??