为了更好地理解,我刚刚用我创建的另一个示例替换了Composer的默认示例(“ sampleAsset”,“ sampleTransaction”等)。除交易外,一切正常,这将向我返回错误消息:
“ **错误:找不到要为事务org.acme.sample.CompraDoVinho#** 2b2d0624-bc执行的任何函数...”
在下面找到源代码:
块引用
模型文件:
命名空间org.acme.sample
IDvinho {
o String IDvinho
--> Participante owner
o String uva
o String nomeVinho
o Integer preco
}
IDparticipante {
o String IDparticipante
o String tipo
o String nomeEmpresa
}
IDcompra标识的交易CompraDoVinho {
o String IDcompra
--> Vinho asset
o Integer precoVenda
}
逻辑:
函数onSampleTransaction(CompraDoVinho){
CompraDoVinho.asset.preco = CompraDoVinho.precoVenda;
return getAssetRegistry('org.acme.sample.Vinho')
.then(function (assetRegistry) {
return assetRegistry.update(CompraDoVinho.asset);
});
}
权限:
规则默认{
description: "Allow all participants access to all resources"
participant: "ANY"
operation: ALL
resource: "org.acme.sample"
action: ALLOW
}
块引用
有人可以帮助我找到代码中的错误在哪里吗?
提前致谢
最佳答案
这个问题几乎可以肯定是因为您已经重命名了交易。 Composer有两种将事务路由到JS函数的机制:
(传统)使用onMyTransactionType
命名约定。即提交MyTransactionType
的实例时,将调用该函数。
(首选)使用@transaction
和@param
批注。请参阅下面的示例。 @transaction
批注表示该函数要处理交易,而@param
批注用于指定要处理的交易的类型。
/ **
*订购车辆
* @param {org.acme.vehicle.lifecycle.manufacturer.PlaceOrder} placeOrder-PlaceOrder事务
* @交易
* /
函数placeOrder(placeOrder){
console.log('placeOrder');
让工厂= getFactory();
让NS ='org.acme.vehicle.lifecycle.manufacturer';
让订单= factory.newResource(NS,'Order',placeOrder.transactionId);
order.vehicleDetails = placeOrder.vehicleDetails;
order.orderStatus ='PLACED';
order.manufacturer = placeOrder.manufacturer;
//保存订单
返回getAssetRegistry(order.getFullyQualifiedType())
.then(function(registry){
返回registry.add(命令);
});
}