Я создаю бизнес-модель с использованием составителя гиперссылки, в которой у меня есть банк в качестве участника и клиент в качестве актива. Определение банка приведено ниже:
participant Bank identified by bankId {
o String bankId
o String name
o String code
}
а заказчик выглядит так:
asset Customer identified by aadhaarId {
o String aadhaarId
o String panId
o String firstName
o String lastName
o String contactNo
o String residence
o String accountNumber
o AccountType accountType
o String creationDate
--> Bank bank
}
Я хочу, чтобы участник (банк) мог обновлять только тех клиентов, которые ему принадлежат, и я хочу создать транзакцию для этого. Итак, я создал следующую транзакцию:
transaction updateCustomer identified by transactionId {
o String transactionId
--> Customer customer
o Customer newDetails
}
и определил правило в файле .acl следующим образом:
rule bankCanUpdateItsCutomersViaTransaction {
description: "Allow a participant to update it's own resources"
participant(p): "org.acme.sample.Bank"
operation: UPDATE
resource(r): "org.acme.sample.updateCustomer"
condition: (p.getIdentifier() == r.customer.bank.getIdentifier())
action: ALLOW
}
Чтобы проверить это, я создал участника (помимо уже предоставленного администратора) и создал клиента, связанного с этим участником. У меня за этим стоит функция процессора транзакций, которая просто обновляет реестр активов клиента. Но когда я пытаюсь выполнить транзакцию updateCustomer, я получаю сообщение об ошибке, в котором говорится, что участник не имеет доступа CREATE к ресурсу. Проблема сохраняется, даже если я изменю операцию на CREATE в файле .acl. Я думаю, что проблема заключается в части состояния, но я не могу ее исправить.
У меня есть аналогичная транзакция для создания клиента, а именно:
transaction createCustomer identified by transactionId {
o String transactionId
o Customer newCustomer
}
и правило для него такое, как показано ниже:
rule bankCanCreateItsCutomersViaTransaction {
description: "Allow a participant to create it's own resources"
participant(p): "org.acme.sample.Bank"
operation: CREATE
resource(r): "org.acme.sample.createCustomer"
condition: (p.getIdentifier() == r.newCustomer.bank.getIdentifier())
action: ALLOW
}
за этой транзакцией createCustomer стоит простая функция процессора транзакций, которая просто добавляет newCustomer в реестр активов клиента. Это работает нормально, но транзакция updateCustomer не работает. Любая помощь приветствуется. Спасибо :)