在对体系建模之后,我们界说了可以在现有资产和参加者之上执行的全部可用操纵。这些是买卖营业资源。之后,我们为以下每个买卖营业模子测试并实现基本买卖营业逻辑。
- transaction EngineMerchantTransfer {
- --> Engine engine
- --> Merchant merchant
- }
-
- transaction EngineCarInstallation {
- --> Engine engine
- --> Car car
- }
-
- transaction EngineCreation {
- --> Manufacturer manufacturer
- o EngineProperties data
- }
-
- transaction CarCreation {
- o String legalIdDocument
- }
此刻我们已经界说了也许产生的工作,我们可以在提交买卖营业时开始实现它怎样影响分类帐状态。起首,我们致力于建设引擎资产。引擎应该以UUID名目得到随机天生的ID,而且应该从一开始就始终属于制造商。以是我们清空logic.js 文件并从新开始。我们界说常量modelsNamespace 和函数uuid ,由于我们将更频仍地必要它们。接下来是createEngineAsset 函数。函数上方的文档块很是重要,以便Composer可以辨认打包代码时实现的买卖营业范例。
- /* global getAssetRegistry getFactory */
-
- const modelsNamespace = 'org.acme.enginesupplychain'
- function uuid() {
- const s4 = () => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1)
- return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`
- }
-
- /**
- * Creation of a Engine asset triggered by physical production.
- * @param {org.acme.enginesupplychain.EngineCreation} tx - the transaction to create an engine
- * @transaction
- */
- async function createEngineAsset(tx) { // eslint-disable-line no-unused-vars
- const engineRegistry = await getAssetRegistry(modelsNamespace + '.Engine')
- const engine = getFactory().newResource(modelsNamespace, 'Engine', uuid())
- const engineData = getFactory().newConcept(modelsNamespace, 'EngineProperties')
-
- engine.data = Object.assign(engineData, tx.data)
- engine.manufacturer = tx.manufacturer
-
- await engineRegistry.add(engine)
- }
通过这种方法,我们还实现了其他买卖营业范例EngineMerchantTransfer ,EngineCarInstallation 和CarCreation 。
- /**
- * An engine is transfered to a merchant.
- * @param {org.acme.enginesupplychain.EngineMerchantTransfer} tx - the engine transfer transaction
- * @transaction
- */
- async function transferEngineToMerchant(tx) { // eslint-disable-line no-unused-vars
- const engineRegistry = await getAssetRegistry(modelsNamespace + '.Engine')
- tx.engine.merchant = tx.merchant
-
- await engineRegistry.update(tx.engine)
- }
-
- /**
- * An engine is installed in a car.
- * @param {org.acme.enginesupplychain.EngineCarInstallation} tx - the engine into car installation transaction
- * @transaction
- */
- async function installEngineToCar(tx) { // eslint-disable-line no-unused-vars
- const engineRegistry = await getAssetRegistry(modelsNamespace + '.Engine')
- if (tx.car) {
- tx.engine.currentCar = tx.car
- await engineRegistry.update(tx.engine)
- } else {
- return Promise.reject('No target car was set on the transaction!')
- }
- }
-
- /**
- * A car is created.
- * @param {org.acme.enginesupplychain.CarCreation} tx - transaction to create a new car
- * @transaction
- */
- async function createCar(tx) { // eslint-disable-line no-unused-vars
- const carRegistry = await getAssetRegistry(modelsNamespace + '.Car')
- const factory = getFactory()
- const carId = uuid()
- const car = factory.newResource(modelsNamespace, 'Car', carId)
- car.legalDocumentId = tx.legalIdDocument
-
- await carRegistry.add(car)
- }
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|