Тип возврата функции транзакции в Hyperledger Composer - PullRequest
0 голосов
/ 19 сентября 2018

Я использую @return (MyConcept) для определения функции транзакции, т.е. в файле cto.

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

Как мне этого добиться?

1 Ответ

0 голосов
/ 19 сентября 2018

используйте «основной» концепт для хранения других необязательных концепций

пример:

participant Publisher identified by id {
  o String id
}

asset myAsset identified by id {
  o String id
  o String value
}
concept MyConcept1 {
    o String value
}

concept MyConcept2 {
    o String value optional
}

concept MyConcept {
    o MyConcept1 myc1 optional
    o MyConcept2 myc2 optional
}

@returns(MyConcept)
transaction myTransaction {
  --> myAsset
  etc
}

моя заявка может вернуть что-либо в этой концепции, которую вы установили

например.

/**
 * Handle a transaction that returns a concept.
 * @param {org.sample.MyTransaction} transaction The transaction.
 * @returns {org.sample.MyConcept} The concept.
 * @transaction
 */
async function myTransaction(transaction) {
    // other stuff
    const factory = getFactory();
    // assign values
    var conceptData1 = factory.newConcept('org.sample', 'MyConcept1');

    conceptData1.value = transaction.myAsset.value; // etc
    //

    // return master (you define myConceptdata) based on what was set .. some of which could be blank
    return myConceptdata;
}
...