代码之家  ›  专栏  ›  技术社区  ›  bryniek

在hyperledger composer中创建资产资产

  •  0
  • bryniek  · 技术社区  · 7 年前

    我想创建一个名为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服务器API中,我试图发布一个由其他项组成的项,如:

        {
      "$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"
    }
    

    (当然,项目i2和项目i3已经发布,属于bu3),当我尝试发布时,我发现以下错误

        {
      "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)"
      }
    }
    

    是否有人设法创建了嵌套资产,并且对他有效?我真的很感谢你的帮助,建议,任何事情。

    1 回复  |  直到 7 年前
        1
  •  0
  •   R Thatcher    7 年前

    {
     "$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"}]
    

    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"]
    }
    
    推荐文章