我的model.cto文件 -
namespace org.acme.mynetwork
participant Client identified by ClientId {
o String ClientId
o String ClientName
o String[] Policies
o String[] RFQAraay
}
participant Insurer identified by InsurerId {
o String InsurerId
o String InsurerName
o String[] RFQArray
o String[] Quotes
o String[] Policies
}
asset RFQ identified by RFQId {
o String RFQId
o String ClientId
o String InsurerName
o String TypeOfInsurance
o String RiskAmunt
o String Status
o String currentOwner
o String[] Quotes
o String[] SelectedInsurer
o String LeadInsurer
o String[] FinalInsurer
}
participant Broker identified by BrokerId {
o String BrokerId
o String BrokerName
o String[] Clients
}
asset Quote identified by QuoteId {
o String QuoteId
o String InsurerName
o String InsurerId
o String Premium
o String Capacity
o String RFQId
}
transaction GenerateRFQ {
o String RFQId
o String ClientId
o String InsurerName
o String TypeOfInsurance
o String RiskAmount
o String[] InsurerAddresses
}
我的Script.js文件
/**
* Insurance script file
* @param {org.acme.mynetwork.GenerateRFQ} generate - the trade to be processed
* @transaction
*/
function generateRFQ(generate){
var RFQId = generate.RFQId ;
var today = new Date();
var y = today.getFullYear();
var m = today.getMonth();
var d = today.getDate();
return getAssetRegistry('org.acme.mynetwork.RFQ').then(function(assetRegistry){
var RFQregistry = assetRegistry;
RFQregistry.RFQId = generate.RFQId;
RFQregistry.ClientId = generate.ClientId
RFQregistry.InsuredName = generate.InsurerName;
RFQregistry.TypeOfInsurance = generate.TypeOfInsurance;
RFQregistry.RiskAmount = generate.RiskAmount;
RFQregistry.Status = "RFQ fired on "+ d + m + y;
RFQregistry. Insurer = generate.InsurerAddresses;
return assetRegistry.update(RFQregistry);
})
}
我正在使用在线游乐场。提交此交易会给我一个错误:
找不到要为交易执行的任何函数org.acme.mynetwork.GenerateRFQ#ae28a855-ba3c-48fe-9404-291ad95b24c7
我试过更改它的名字,但仍然没有好处。但SampleTransaction业务逻辑工作正常。
答案 0 :(得分:2)
你的问题是你没有在你的装饰器中建模一个名为 GenerateRFQ 的事务(在你的.cto文件中),如: org.acme.mynetwork.GenerateRFQ 。
然后将以下(下面)添加到您的模型文件中 - 然后执行composer network update
更新您的业务网络(和链代码)以识别新建模的事务(您在脚本中调用)。
transaction GenerateRFQ {
...add your model elements or relationships here
}
我在脚本中注意到一个问题(需要在您的网络项目的/ lib子目录下)。您指定了new Date()
- 这是非确定性代码,因此执行此操作的每个对等方将执行'date'函数并获得不同的时间戳。
另外 - 您可能要考虑的其他事项 - (根据您在此处发布的模型):
客户应该是与经纪人的关系 - 请参阅此处的示例网络 - > https://github.com/hyperledger/composer-sample-networks/blob/master/packages/trade-network/models/trading.cto以关系为例。事实上,您的模型中可能存在更多关系(例如,一对多等)。最后,您的交易理想情况下应该与您的代码中“参与”的参与者和资产有关系(例如,客户,保险公司等)。再看一下我发给你的模型文件链接以获得一个想法 - 另外看看这里的其他样本 - > https://github.com/hyperledger/composer-sample-networks/tree/master/packages指点并在此处查看模型语言指南 - > https://hyperledger.github.io/composer/unstable/reference/cto_language.html