在 hypperledger composer 中创建资产的资产
Creation of asset of assets in hypperledger composer
我想创建一个名为 item 的资产,它由其他项目组成。
这是我的模型文件的片段:
namespace org.dps.track
asset Item identified by itemId{
o String itemId
o String name
o String serialNumber
o String comment
o Item [] items optional
abstract participant BU identified by buId{
o String buId
o String name
o String country
o String city
}
participant Manufacturer extends BU{
}
participant Assembler extends BU{
}
在 rest-server-api 我正在尝试 post 一个由其他项目组成的项目,如下所示:
{
"$class": "org.dps.track.Item",
"itemId": "I5",
"name": "complex",
"serialNumber": "222",
"comment": "complex item - consists of many items",
"items": [
"org.dps.track.Item#I2", "org.dps.track.Item#I3"
],
"owner": "org.dps.track.Assembler#BU3"
}
(当然 Item#I2 和 Item#I3 已经 posted 并且属于 BU3),当我尝试 post 这个时,我收到以下错误
{
"error": {
"statusCode": 500,
"name": "Error",
"message": "Invalid or missing identifier for Type Item in namespace org.dps.track",
"stack": "Error: Invalid or missing identifier for Type Item in namespace org.dps.track\n at Factory.newResource (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/factory.js:86:19)\n at JSONPopulator.convertItem (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:142:50)\n at JSONPopulator.visitField (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:104:34)\n at JSONPopulator.visit (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:60:25)\n at Field.accept (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/decorated.js:54:24)\n at JSONPopulator.visitClassDeclaration (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:83:60)\n at JSONPopulator.visit (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:56:25)\n at AssetDeclaration.accept (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/decorated.js:54:24)\n at Serializer.fromJSON (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer.js:180:26)\n at ensureConnected.then (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/loopback-connector-composer/lib/businessnetworkconnector.js:634:43)\n at <anonymous>\n at process._tickDomainCallback (internal/process/next_tick.js:228:7)"
}
}
有没有人设法创建嵌套资产并且对他有用?我将非常感谢任何帮助、建议等。
要在您的模型定义的项目中包含一个项目,您可以使用类似于此的 JSON:
{
"$class": "org.dps.track.Item",
"itemId": "2",
"name": "2",
"serialNumber": "2",
"comment": "2",
"items": [{"$class": "org.dps.track.Item",
"itemId": "3",
"name": "3",
"serialNumber": "3",
"comment": "3"}]
}
但是,我想知道您真正想要的是否是与其他现有项目的 关系 的数组,在这种情况下您将拥有此模型并且 JSON:
asset Item identified by itemId{
o String itemId
o String name
o String serialNumber
o String comment
--> Item [] items optional
}
{
"$class": "org.dps.track.Item",
"itemId": "A",
"name": "A",
"serialNumber": "A",
"comment": "A",
"items2": ["org.dps.track.Item#C","org.dps.track.Item#B"]
}
我想创建一个名为 item 的资产,它由其他项目组成。 这是我的模型文件的片段:
namespace org.dps.track
asset Item identified by itemId{
o String itemId
o String name
o String serialNumber
o String comment
o Item [] items optional
abstract participant BU identified by buId{
o String buId
o String name
o String country
o String city
}
participant Manufacturer extends BU{
}
participant Assembler extends BU{
}
在 rest-server-api 我正在尝试 post 一个由其他项目组成的项目,如下所示:
{
"$class": "org.dps.track.Item",
"itemId": "I5",
"name": "complex",
"serialNumber": "222",
"comment": "complex item - consists of many items",
"items": [
"org.dps.track.Item#I2", "org.dps.track.Item#I3"
],
"owner": "org.dps.track.Assembler#BU3"
}
(当然 Item#I2 和 Item#I3 已经 posted 并且属于 BU3),当我尝试 post 这个时,我收到以下错误
{
"error": {
"statusCode": 500,
"name": "Error",
"message": "Invalid or missing identifier for Type Item in namespace org.dps.track",
"stack": "Error: Invalid or missing identifier for Type Item in namespace org.dps.track\n at Factory.newResource (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/factory.js:86:19)\n at JSONPopulator.convertItem (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:142:50)\n at JSONPopulator.visitField (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:104:34)\n at JSONPopulator.visit (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:60:25)\n at Field.accept (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/decorated.js:54:24)\n at JSONPopulator.visitClassDeclaration (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:83:60)\n at JSONPopulator.visit (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer/jsonpopulator.js:56:25)\n at AssetDeclaration.accept (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/decorated.js:54:24)\n at Serializer.fromJSON (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/serializer.js:180:26)\n at ensureConnected.then (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/loopback-connector-composer/lib/businessnetworkconnector.js:634:43)\n at <anonymous>\n at process._tickDomainCallback (internal/process/next_tick.js:228:7)"
}
}
有没有人设法创建嵌套资产并且对他有用?我将非常感谢任何帮助、建议等。
要在您的模型定义的项目中包含一个项目,您可以使用类似于此的 JSON:
{
"$class": "org.dps.track.Item",
"itemId": "2",
"name": "2",
"serialNumber": "2",
"comment": "2",
"items": [{"$class": "org.dps.track.Item",
"itemId": "3",
"name": "3",
"serialNumber": "3",
"comment": "3"}]
}
但是,我想知道您真正想要的是否是与其他现有项目的 关系 的数组,在这种情况下您将拥有此模型并且 JSON:
asset Item identified by itemId{
o String itemId
o String name
o String serialNumber
o String comment
--> Item [] items optional
}
{
"$class": "org.dps.track.Item",
"itemId": "A",
"name": "A",
"serialNumber": "A",
"comment": "A",
"items2": ["org.dps.track.Item#C","org.dps.track.Item#B"]
}