为了更好地理解,我刚刚用我创建的另一个示例替换了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(命令);
});
}

09-27 15:03