-
Notifications
You must be signed in to change notification settings - Fork 1
DemoScenariesRus_AdvancedLevel_PrivEth
Дополнительно к функционалу сценария Getting Started данный сценарий демонстрирует:
- передачу файлов
- контроль изменения статуса сделки в соответствии с картой статусов
- мониторинг изменения состояния сделок
Данный сценарий проводится в кластере Private Ethereum (PrivEth).
Участники сделки:
- Client1 (роль Role1) - узел PrivEth-1
- Client2 (роль Role2) - узел PrivEth-2
- Client3 (роль Role3) - узел PrivEth-3
Перед исполнением сценария рекомендуется создать на локальном компьютере тестовые файлы Status-1-1.dat, Status-2-1.dat, Status-2-2.dat, Status-3-1.dat. Хотя технические ограничения на размер файлов отсутствуют, для ускорения прохождения демо-сценария рекомендуется использовать файлы размером до 100 Kb.
Используется предустановленный смарт-контракт с типом сделки AdvancedDeal, со следующей картой переходов:
- New -> Status-1 -> Role1
- Status-1 -> Status-2 -> Role2
- Status-2 -> Status-3 -> Role3
- Status-3 -> Closed -> Role1,Role3
Сценарий заключается в последовательном исполнении следующих шагов:
- Client1 создает сделку с атрибутами DocNumber, DocDate, DocSumma
- Client1 переключает статус сделки в Status-1 с приложением файла Status-1-1.dat
- Убеждаемся в приходе изменения сделки и файлов на узлы Client1, Client2, Client3
- Client2 переключает статус сделки в Status-2 с приложением файла Status-2-1.dat и Status-2-2.dat
- Убеждаемся в приходе изменения сделки и файлов на узлы Client1, Client2, Client3
- Client2 пытается переключить статус сделки в Status-4 (статус, несуществующий в карте сделки) с приложением файла Status-3-1.dat
- Убеждаемся в отсутствии изменений в сделке на узлах Client1, Client2, Client3
- Client2 пытается переключить статус сделки в Status-3 (несоответствие ролевой модели карты сделки) с приложением файла Status-3-1.dat
- Убеждаемся в отсутствии изменений в сделке на узлах Client1, Client2, Client3
- Client3 переключает статус сделки в Status-3
- Убеждаемся в приходе изменения сделки на узлы Client1, Client, Client3
- Client1 или Client3 переключает статус сделки в Closed
- Убеждаемся в приходе изменения сделки на узлы Client1, Client2, Client3
ВНИМАНИЕ! В запросах в заголовке CHANNEL необходимо использовать полученный Вами при регистрации персональный идентификатор. Это позволит не мешать одновременной работе нескольких пользователей, а также облегчит работу службы Технической поддержки при возникновении у Вас каких-либо вопросов. В примерах запросов используется персональный идентификатор Demo.
Создание сделки состоит из следующих шагов:
- Получение идентификатора сделки
- Собственно создание сделки
Используется вызов GET-метода /api/uid. Метод возвращает GUID, который может быть однократно использован для создания сделки
Пример вызова:
curl -X GET "http://democlient1.kekker.com/api/uid" -H "accept: text/plain" -H "Authorization: Basic S2Vra2VyVXNlcjp6RGZqbTMz"
Пример ответа:
"4675ae9b-a90b-4d56-bff2-7d2a981edf01"
Используется вызов POST-метода /api/deals/. В качестве данных запроса указывается json-спецификация сделки, в нашем случае: { "dealUid": "[UID]", "kind": "AdvancedDeal", "parties": [ { "key": "CLIENT1", "role": "Role1" }, { "key": "ClIENT2", "role": "Role2" }, { "key": "ClIENT3", "role": "Role3" } ], "parameters": [ { "key": "DocNumber", "value": "Advanced-1" }, { "key": "DocDate", "value": "15.02.2020" }, { "key": "DocSumma", "value": "10000" } ], "parentDealUid": null }
Пример вызова:
curl -X POST "http://democlient1.kekker.com/api/deals" -H "accept: text/plain" -H "Content-Type: application/json-patch+json" -H "Authorization: Basic S2Vra2VyVXNlcjp6RGZqbTMz" -d "{ "dealUid": "4675ae9b-a90b-4d56-bff2-7d2a981edf01", "kind": "AdvancedDeal", "parties": [ { "key": "CLIENT1", "role": "Role1" }, { "key": "CLIENT2", "role": "Role2" }, { "key": "CLIENT3", "role": "Role3" } ], "parameters": [ { "key": "DocNumber", "value": "Advanced-1" }, { "key": "DocDate", "value": "15.02.2020" },{ "key": "DocSumma", "value": "10000" } ], "parentDealUid": null}"
Если всё хорошо - ответ пустой.