Как получить историю активов в hyperledger composer, используя идентификатор ресурса? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть актив, который я создал в hyperledger composer, и я хочу получить историю транзакций актива, используя идентификатор актива.

один из обходных путей, как предложено в подобном вопросе означает отправку события для каждой транзакции, которая вносит изменения в актив, а затем запрашивает запись в архиве на основе выпущенных событий.

Это то, что я имею в виду

// transaction that is going to make changes to the asset
transaction ModifyAsset{
 o String assetId
}

// event
event ModifyAssetEvent {
 o Asset asset
 o String assetId
}

// queries  the historian record
query searchProductHistory {
  description: "search product by serial number"
  statement: 
    SELECT org.hyperledger.composer.system.HistorianRecord
    WHERE (eventsEmitted[0].assetId == $assetId)
} 

Этоэто могло бы быть идеально, но, к сожалению, Hyperledger composer не может разрешить такой запрос.

Любое другое решение, которое я могу использовать для достижения своей цели, будет высоко оценено

заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Мой плохой, но, может быть, что-то вроде

transaction.transactionInvoked.eventsemitted.asset == assetName

возможно Работает.

0 голосов
/ 02 апреля 2019

Возможно, если вы сделаете запрос на возврат только транзакций с конкретным идентификатором актива.

Что-то вроде:

let q1 = businessNetworkConnection.buildQuery(
'SELECT org.hyperledger.composer.system.HistorianRecord'
 + 'WHERE (transactionId == assetId)'
);   
...