В моей сети соответствующая часть модели выглядит следующим образом.
asset Farm identified by farmId{
o String farmId
o String FarmLocation
o String[] images optional
o String[] waterSources
o String[] nearFactories
o String otherDescription optional
o Certification certification
--> Stakeholder owner
o String[] farmers
}
participant Stakeholder identified by stakeholderId{
o String stakeholderId
o String name
o Address address
o String email optional
o String telephone optional
o Certification certification optional
o String[] images optional
o Company company
o String username
o String password
o StakeholderType type
o String description optional
o String authPerson
o String vehicleNo optional
o DistType distributionType optional
o String branchNo optional
}
В активе фермы я храню соответствующие идентификаторы участников фермера в виде массива строк под атрибутом фермера. Я хочу разрешить доступ к активу фермы только фермерам, чьи идентификаторы включены в этот массив. Чтобы добиться этого, я попробовал ниже правило доступа. Но это не похоже на работу, как ожидалось.
rule FarmersHasAccessToTheirFarms {
description: "Allow all participants full access to their assets"
participant(p): "org.ucsc.agriblockchain.Stakeholder"
operation: ALL
resource(r): "org.ucsc.agriblockchain.Farm"
condition: (p.type == "FARMER" && p.stakeholderId in r.farmers)
action: ALLOW
}
Как выполнить это требование? Есть предложения?