首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-3

Hyperledger Composer 基础,第 1 部分 建模和测试您的区块链网络-3

导入.cto 模型文件中使用导入来指出该模型文件中的一个实体与来自另一个模型文件的一个实体之间的关系。
本教程不会介绍导入概念,因为您要处理的模型非常小。导入概念与 Java™ 语言中的 import 和 C++                中的 #include 类似。
CTO 参考资料了解基本语法后(在大多数情况下,可以通过上下文明显看出),该建模语言应该很容易上手。如果您使用过面向对象的概念,那么使用建模语言会更容易一些。
如果想了解更多信息,推荐您阅读 。
建模业务网络在中,我展示了如何使用 Playground 创建一个空业务模型。在本节中,您将在                Playground 中建模 Perishable Goods 网络(别担心,内置的 perishable-network                模板会帮助您)。
删除 localhost 浏览器存储如果您看到一个类似 的欢迎屏幕,则表明您可以进行下一步了,您可以跳到“”。
在纯浏览器模式中,Hyperledger Composer                仅允许一次使用一个模型。如果加载了另一个模型,可能需要在加载该模型前删除浏览器的本地存储。
Playground                应该能将当前模型替换为新模型。但是,如果您遇到错误,可以删除浏览器的本地存储来“从头”开始。该过程会因为浏览器不同而各不相同。
例如,在 Chrome 中,可以在                Settings > Advanced > Content Settings > Cookies > All cookies and site data > localhost                下,单击垃圾桶图标来删除本地存储。如果使用不同的浏览器,请按照特定于该浏览器的说明进行操作,并删除所有本地存储。
在 Playground 中创建新模型在中,我介绍了如何在 Playground 中创建一个新的空业务网络,以及如何使用                Playground 的基础知识,所以在这里不再赘述。如果您没有机会观看该视频,应在尝试后面的操作之前观看一下。
单击 Let's Blockchain 按钮开始(参见)。接下来,利用 perishable-network 模板创建一个新业务网络。将它命名为                perishable-iot-network 并单击 Deploy
在 Admin ID 卡上,单击 Connect now 链接。您会看到类似图 2 的界面。
图 2. Perishable Goods 网络
在 FILES 下,注意以下文件:
  • README.md - 这个 Markdown 文件提供了 Perishable Goods                    网络的简要概述
  • models/perishable.cto - 包含业务模型
  • lib/logic.js - 包含业务逻辑(智能合约)代码,该代码包括交易实现
当您选择 FILES 下的一个文件时,该文件会在右侧的编辑器窗口中打开。继续打开模型文件 (perishable.cto),其中包含模型。
Grower 资产的建模方式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* An abstract participant type in this business network
*/
abstract participant Business identified by email {
  o String email
  o Address address
  o Double accountBalance
}

/**
* A Grower is a type of participant in the network
*/
participant Grower extends Business {
}




Shipper 类似以下代码:
1
2
3
4
5
/**
* A Shipper is a type of participant in the network
*/
participant Shipper extends Business {
}




Contract 资产类似以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Defines a contract between a Grower and an Importer to ship using
* a Shipper, paying a set unit price.The unit price is multiplied by
* a penality factor proportional to the deviation from the min and max
* negociated temperatures for the shipment.
*/
asset Contract identified by contractId {
  o String contractId
  --> Grower grower
  --> Shipper shipper
  --> Importer importer
  o DateTime arrivalDateTime
  o Double unitPrice
  o Double minTemperature
  o Double maxTemperature
  o Double minPenaltyFactor
  o Double maxPenaltyFactor
}




鼓励您熟悉一下该模型,以及各种资源在编辑器中的外观。对 lib/logic.js 执行相同操作并熟悉 JavaScript                代码。
实例化模型单击屏幕顶部的 Test 选项卡,您会看到类似图 3 的界面。
图 3. perishable-network - Test 选项卡
请注意,来自模型的 Assets 和 Participants 出现在屏幕左侧,但屏幕中央有一条消息,指出该注册表是空的。怎么回事?
正如我在中介绍的,第一次创建业务网络时,Asset 和 Participant                注册表都是空的。您需要创建 Asset 和 Participant 实例,这些实例将放在注册表中。
在下一节中,我将介绍如何实例化并测试该模型。
返回列表