我正在用Hyperledger Composer设计一个供应链应用程序。我有一个药品资产,它看起来像这样。
asset Drug identified by DrugId {
o String DrugId
o String DrugName
o Integer qty
--> Trader presentOwner
}
我有一个制造商到批发商的交易。
transaction M2W {
--> Drug drug
o Integer qtyreq
--> Wholesaler newOwner
}
我如何确保当我进行交易时,制造商的资产被保留,但数量减少,同时为批发商创建一个新的所需数量的资产?
制作两个名为制造商和批发商的链码,并确保两者在同一渠道。
制造商链码由下面的方法组成。
item(ctx, DrugName, current quantity, quantity_to_be_supplied_to_wholesaler){
current quantity= current quantity-quantity_to_be_supplied_to_wholesaler;
drug={
DrugName
current quantity,
quantity_to_be_supplied_to_wholesaler,
}
把这些信息保存到你的账本上
ctx.stub.putstate(drugID, Buffer.from(JSON.stringify(drug)));
您必须实现query_drug来查询链码上存储的药品列表。
在批发商的链码上,你可以通过使用
const response = await ctx.stub.invokeChaincode('Manufacturer', ['queryDrugs', drugId ], 'channel_name');
然后你可以使用检索药物记录。
var r1=response.payload; //getting payload from response
var s1=r1.toString(); // converting payload buffer to string.
var s=JSON.parse(s1); //convert string to JSON object.
var qty=s['quantity_to_be_supplied_to_wholesaler'];
您可以通过以下方式将数量添加到您的批发商记录中。
current quantity=current quantity+qty;
然后,您可以将此数量添加到分类账中,使用
ctx.stub.putState(ID, qty)。
看起来有点乱,但希望对你有帮助。