Skip to content

DemoScenariesRus_PurchaseOrder_PrivEth

NickGorshenev edited this page Mar 27, 2020 · 6 revisions

Сценарий Purchase order

Сценарий демонстрирует распространение сделки по узлам и переключение статуса сделки.

Данный сценарий проводится в кластере Private Ethereum (PrivEth).

Используется предустановленный смарт-контракт с типом сделки FirstDeal (без карты переходов).

Сценарий заключается в последовательном исполнении следующих шагов:

  1. На узле PrivEth-1 создается сделка с атрибутами DocNumber=123, Item=Pepper, DeliveryDate=2020-08-08, Quantity=10
  2. На узле PrivEth-1 переключаем статус сделки в "Issued"
  3. Убеждаемся в наличии сделки на узле PrivEth-2в"Issued"`
  4. На узле PrivEth-2 переключаем статус сделки в "Adjusted", добавляем атрибут PaymentDate=2020-01-02 и изменяем атрибут DeliveryDate=2020-08-09
  5. Убеждаемся в переключении статуса сделки на узле PrivEth-1 в "Adjusted"`
  6. На узле PrivEth-1 переключаем статус сделки в Ordered

ВНИМАНИЕ! В примерах вызовов подставлен идентификатор пробной сделки (UID) - Вам надо подставлять вместо него идентификатор, полученный при создании сделки на шаге 1.

ВНИМАНИЕ! В запросах в заголовке CHANNEL, AUHORIZATION необходимо использовать полученный Вами при регистрации персональный идентификатор. Это позволит не мешать одновременной работе нескольких пользователей, а также облегчит работу службы Технической поддержки при возникновении у Вас каких-либо вопросов. В примерах запросов используется персональный идентификатор Demo.

1. Создание сделки

Используется вызов POST-метода /api/deals/. В качестве данных запроса указывается json-спецификация сделки, в нашем случае:

{
  "dealUid": null,
  "kind": "FirstDeal",
  "parties": [
    {
      "key": "CLIENT2",
      "role": "Seller"
    },
    {
      "key": "CLIENT1",
      "role": "Buyer"
    }
  ],
  "parameters": [
    {
      "key": "DocNumber",
      "value": "123"
    },
    {
      "key": "Item",
      "value": "Pepper"
    },
    {
      "key": "DeliveryDate",
      "value": "2020-08-08"
    },
    {
      "key": "Quantity",
      "value": "10"
    }
  ]
}
Пример вызова Пример ответа
  curl --request POST 'http://democlient1.kekker.com/api/deals' 
--header 'Content-Type: application/json' 
--header 'Channel: Demo' 
--header 'Authorization: Basic S2Vra2VyVXNlcjp6RGZqbTMz' 
--data-raw '{
  "dealUid": null,
  "kind": "FirstDeal",
  "parties": [
    {
      "key": "CLIENT2",
      "role": "Seller"
    },
    {
      "key": "CLIENT1",
      "role": "Buyer"
    }
  ],
  "parameters": [
    {
      "key": "DocNumber",
      "value": "123"
    },
    {
      "key": "Item",
      "value": "Pepper"
    },
    {
      "key": "DeliveryDate",
      "value": "2020-08-08"
    },
    {
      "key": "Quantity",
      "value": "10"
    }
  ]
}'
Если всё хорошо - код ответа 200. В теле ответа прийдет идентификатор сделки [UID]

2. На узле PrivEth-1 переключаем статус сделки в Issued

Используется вызов POST-метода /api/deals/setstatus. В качестве данных запроса указывается json-спецификация нового состояния сделки, в нашем случае:

{
  "dealUid": "{UID}",
  "status": "Issued___",
  "remark": null,
  "parameters": []
}
Пример вызова Пример ответа
curl --request POST 'http://democlient1.kekker.com/api/deals/setstatus' 
--header 'Content-Type: application/json' 
--header 'Channel: Demo' 
--header 'Accept: application/json' 
--data-raw '{
  "dealUid": "{UID}",
  "status": "Issued___",
  "remark": null,
  "parameters": []
}'
      
Если всё хорошо - код ответа 200. Тело ответа пустое.

3. Убеждаемся в наличии сделки на узле PrivEth-2в"Issued"`

Используется вызов GET-метода /api/deals/{UID}. Где {UID} - идентификатор нашей сделки

Перед выполнением запросов лучше выдержать паузу в 5-6 минут после шага [2]

Пример вызовов (отличие в URL узла) Пример ответа (проверяем status и parameters)
curl --request GET 'http://democlient2.kekker.com/api/deals/{UID}
--header 'Channel: Demo'
--header 'Accept: application/json' 
--header 'Authorization: Basic S2Vra2VyVXNlcjp6RGZqbTMz' 
    
{
    "uid": "2adc2d34-3992-4438-81e8-7c535aa38651",
    "kind": "FirstDeal",
    "status": "Issued___",
    "remark": "1",
    "parameters": [
        {
            "key": "DocNumber",
            "value": "123"
        },
        {
            "key": "Item",
            "value": "Pepper"
        },
        {
            "key": "DeliveryDate",
            "value": "2020-08-08"
        },
        {
            "key": "Quantity",
            "value": "10"
        }
    ],
    "parties": [
        {
            "key": "CLIENT2",
            "role": "Seller"
        },
        {
            "key": "CLIENT1",
            "role": "Buyer"
        }
    ],
    "files": [],
    "history": [
        {
            "status": "Issued___",
            "party": {
                "key": "CLIENT1",
                "role": "Buyer"
            },
            "remark": "1",
            "version": 2
        }
    ],
    "statusMap": []
}

4. На узле PrivEth-2 переключаем статус сделки в Adjusted, добавляем атрибут PaymentDate и изменяем атрибут DeliveryDate

Используется вызов POST-метода /api/deals/setstatus. В качестве данных запроса указывается json-спецификация нового состояния сделки, в нашем случае:

{
  "dealUid": "{UID}",
  "status": "Adjusted_",
  "remark": "2",
  "parameters": [
  	{
      "key": "PaymentDate",
      "value": "2020-01-02"
    },
    {
      "key": "DeliveryDate",
      "value": "2020-08-09"
    }
  	]
}
Пример вызова Пример ответа
curl --request POST 'http://democlient2.kekker.com/api/deals/setstatus' 
--header 'Content-Type: application/json' 
--header 'Channel: Demo' 
--header 'Accept: application/json' 
--data-raw '{
  "dealUid": {UID},
  "status": "Adjusted_",
  "remark": null,
  "parameters": [
  	{
      "key": "PaymentDate",
      "value": "2020-01-02"
    },
    {
      "key": "DeliveryDate",
      "value": "2020-08-09"
    }
  	]
}'
      
Если всё хорошо - код ответа 200. Тело ответа пустое.

5. Убеждаемся в смене статуса сделки на узле PrivEth-1

Используется вызов GET-метода /api/deals/{UID}. Где {UID} - идентификатор нашей сделки

Перед выполнением запросов лучше выдержать паузу в 1-2 минут после шага [4]

Пример вызовов (отличие в URL узла) Пример ответа (проверяем status и parameters)
curl --request GET 'http://democlient1.kekker.com/api/deals/{UID}
--header 'Channel: Demo'
--header 'Accept: application/json' 
--header 'Authorization: Basic S2Vra2VyVXNlcjp6RGZqbTMz' 
    
{
    "uid": "2adc2d34-3992-4438-81e8-7c535aa38651",
    "kind": "FirstDeal",
    "status": "Adjusted_",
    "remark": "2",
    "parameters": [
        {
            "key": "DocNumber",
            "value": "123"
        },
        {
            "key": "Item",
            "value": "Pepper"
        },
        {
            "key": "DeliveryDate",
            "value": "2020-08-09"
        },
        {
            "key": "Quantity",
            "value": "10"
        },
        {
            "key": "PaymentDate",
            "value": "2020-01-02"
        }
    ],
    "parties": [
        {
            "key": "CLIENT2",
            "role": "Seller"
        },
        {
            "key": "CLIENT1",
            "role": "Buyer"
        }
    ],
    "files": [],
    "history": [
        {
            "status": "Issued___",
            "party": {
                "key": "CLIENT1",
                "role": "Buyer"
            },
            "remark": "1",
            "version": 2
        },
        {
            "status": "Adjusted_",
            "party": {
                "key": "CLIENT2",
                "role": "Seller"
            },
            "remark": "2",
            "version": 3
        }
    ],
    "statusMap": []
}

6. На узле PrivEth-1 переключаем статус сделки в Ordered

Используется вызов POST-метода /api/deals/setstatus. В качестве данных запроса указывается json-спецификация нового состояния сделки, в нашем случае:

{
  "dealUid": {UID},
  "status": "Ordered__",
  "remark": null,
  "parameters": []
}
Пример вызова Пример ответа
curl --request POST 'http://democlient1.kekker.com/api/deals/setstatus' 
--header 'Content-Type: application/json' 
--header 'Channel: Demo' 
--header 'Accept: application/json' 
--data-raw '{
  "dealUid": "856b6bb4-3a72-4e81-b34d-33966e46b268",
  "status": "Ordered__",
  "remark": null,
  "parameters": []
}'
      
Если всё хорошо - код ответа 200. Тело ответа пустое.

Clone this wiki locally