Ошибка: ожидается ресурс или концепция. В hyperledger composer при попытке создать транзакцию - PullRequest
0 голосов
/ 02 февраля 2020

Понятия не имею, почему мой код не работает. Вот оно:

milk.cto

 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Sour milk business network definition.
 */
namespace org.example.milk

concept Address {
  o String street
  o String city default ="Gabrovo"
  o String country default = "Bulgaria"
}

asset SourMilk identified by batchId {
  o Integer quantity
  o String batchId
  --> Producer producer
  --> Owner owner
  o Address origin
  o String description
  o Double fats default=4.0
  o Double saturatedFats default=4.0
  o Double kilocalories default=66.0
  o Double lactose default=4.6
  o Double protein default=3.2
  o Double sodium default=0.1
  o Boolean checked default=false
  o Boolean confirmed default=false
  --> Inspector checkingInspector
}

participant Producer identified by producerId {
  o String producerId
  o String firstName
  o String lastName
  o Address address
}

participant Owner identified by ownerId {
  o String ownerId
  o String firmName
  o String firstNameOfCEO
  o String lastNameOfCEO
  o Address address
  o String description
}

participant Inspector identified by inspectorId {
  o String inspectorId
  o String firstName
  o String lastName
  o Address address
  o String institution default="HEI"
}
transaction QualityCheck {
  --> SourMilk batch
  --> Inspector inspector
  o Boolean approval
}

lib / sample. js

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* global getAssetRegistry */

/**
 * Confirmation
 * @param {org.example.milk.QualityCheck} batch, inspector, approval
 * @transaction
 */
async function QualityCheck(batch, inspector, approval) 
{  
    batch.checked=true
    batch.confirmed=approval

    // Get the asset registry for the asset.
    const assetRegistry = await getAssetRegistry('org.example.milk.SourMilk');
    // Update the asset in the asset registry.
    await assetRegistry.update(batch.checked);
}

permissions.acl

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Sample access control list.
 */
rule ProducersCanReadEverything {
    description: "Allow producers read access to all resources"
    participant: "org.example.milk.Producer"
    operation: READ
    resource: "org.example.milk.*"
    action: ALLOW
}

rule OwnersCanReadEverything {
    description: "Allow owners read access to all resources"
    participant: "org.example.milk.Owner"
    operation: READ
    resource: "org.example.milk.*"
    action: ALLOW
}

rule InspectorCanReadEverything {
    description: "Allow inspectors read access to all resources"
    participant: "org.example.milk.Inspector"
    operation: READ
    resource: "org.example.milk.*"
    action: ALLOW
}

rule InspectorCanCheckQuality {
    description: "Allow inspectors to check quality"
    participant: "org.example.milk.Inspector"
    operation: CREATE
    resource: "org.example.milk.QualityCheck"
    action: ALLOW
}

rule ProducerHasFullAccessToTheirAssets {
    description: "Allow all participants full access to their assets"
    participant(p): "org.example.milk.Producer"
    operation: ALL
    resource(r): "org.example.milk.SourMilk"
    condition: ((r.producer.getIdentifier() === p.getIdentifier()) && !r.checked && !r.confirmed)
    action: ALLOW
}


rule SystemACL {
    description: "System ACL to permit all access"
    participant: "org.hyperledger.composer.system.Participant"
    operation: ALL
    resource: "org.hyperledger.composer.system.**"
    action: ALLOW
}

rule NetworkAdminUser {
    description: "Grant business network administrators full access to user resources"
    participant: "org.hyperledger.composer.system.NetworkAdmin"
    operation: ALL
    resource: "**"
    action: ALLOW
}

rule NetworkAdminSystem {
    description: "Grant business network administrators full access to system resources"
    participant: "org.hyperledger.composer.system.NetworkAdmin"
    operation: ALL
    resource: "org.hyperledger.composer.system.**"
    action: ALLOW
}

Почему я получаю эту ошибку при попытке создать транзакцию: Ошибка: ожидается ресурс или концепция. Я считаю, что введенные значения верны. «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» '' '' '' ''

1 Ответ

1 голос
/ 11 февраля 2020

Попробуйте это

await assetRegistry.update(batch);

в функции QualityCheck

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...