Импорт определенного атрибута актива в другой для транзакции в Hyperledger Composer - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над Hyperledger Composer, и у меня возникают проблемы с пониманием взаимосвязи и как она работает точно. У меня есть две модели с именами CHECKBOOK и CHECK.

У меня есть транзакция создания CHECK, и у него есть свойства. Но я хочу импортировать CHEQUEBOOKNUMBER из ресурса CHECKBOOK, который уже создан.

Как мне добиться такой функциональности? Можно ли проверить, существует ли актив с CHEQUEBOOKNUMBER или нет

EDIT Извини за это. Это то, что я смог собрать, следуя официальным урокам. Там может быть тонна ошибок, так как я все еще учусь.

Первый файл модели

namespace org.example.bank.chequeBooks
asset chequeBook identified by chequeBookNumber{
o Integer chequeBookNumber 

}

Второй файл модели

namespace org.example.bank.cheque

import org.example.bank.chequeBooks.chequeBook

asset cheque identified by chequeNumber{
o Integer chequeNumber
--> chequeBook cb
}

transaction chequeInProcess{
o Integer chequeNumber
o Integer chequeBookNumber
}

event chequeCashed{
o Integer chequeNumber
o Integer chequeBookNumber
}

1 Ответ

0 голосов
/ 14 мая 2018

было бы полезно, если бы вы опубликовали свою модель ...

Итак, учитывая эту модель

asset Chequebook identified by cid {

o String cid
o Integer chequenumber

}

transaction Cheque {
--> Chequebook cb
o Integer number
}

вы бы обновили его в транзакции следующим образом (включая проверку его существования):

async function updatechqno(cheque) { // eslint-disable-line no-unused-vars

// set the new owner of the commodity
cheque.cb.chequenumber = cheque.number ;

const assetRegistry = await getAssetRegistry('org.example.trading.Chequebook');


// check if it exists in the registry
const validno = await assetRegistry.exists(cheque.cb.cid);

console.log("Invoked Chequebook ID submitted is " + cheque.cb.cid ) ; // ie from the transaction

// does it exist (true / false)

if (validno) {
 console.log('it exists, carry on');
} else {
  console.log('doesnt exist, cant carry on');
  throw new Error('this transaction failed, no such ID');
}

// persist the state of the commodity
await assetRegistry.update(cheque.cb);

}

...