5.7.3.1. Разработка и отладка

Набор служебных сервисов для разработки приложений через ‘Конфигуратор’.

5.7.3.1.1. Получение списка сессий

При отправке HTTP GET на адрес сервиса, будет возвращён JSON со списком сессий, удовлетворяющих условиям поиска.

Адрес сервиса

  • http://{server:port}/app/sys/rest/sessions

Http-запрос может содержать следующие параметры:

  • sbt - Фильтр по имени SBT

  • clientId - Фильтр по идентификатору клиента (этот идентификатор присваивается каждому экземпляру браузера и содержится в куках)

  • user - Фильтр по имени пользователя

  • app - Фильтр по имени главной выборки приложения (поиск осуществляется по вхождению переданного значения в полное имя гл.выборки)

Пример HTTP GET:

http://localhost:8080/app/sys/rest/sessions?sbt=test&user=admin&clientId=123456&app=Xxx_xxxxxx

Пример ответа:

{"sessions":[{
  "sid": "E1",
  "id": "02b5f602-ac2c-4259-9452-18840a1cd124",
  "user": "admin",
  "clientId": "B54E2C1F-04E5-4BB2-9372-A9AB8E9C6676",
  "database": "PGTEST",
  "app": "gtk-ru.bitec.app.gs3.Gs3_TestXmlApplication"
}]}

5.7.3.1.2. Выполнение Jexl в контексте главной выборки приложения

5.7.3.1.2.1. Простой HTTP POST

При отправке HTTP POST на адрес сервиса будет выполнен Jexl-скрипт, переданный в теле запроса, в контексте гл.выборки приложения сессии с переданным идентификатором будет выполнен Jexl-скрипт, переданный в теле запроса.

Адрес сервиса

  • http://{server:port}/app/sys/rest/sessions/{id}/jexl/mainsel

  • http://{server:port}/app/sys/rest/sessions/new/jexl/mainsel?appname={application}

где:

  • {id} - уникальный идентификатор рабочего сеанса, строковое представление GUID.

Http-запрос может содержать следующие параметры:

  • app - Имя приложения, которое должно быть открыто после создания новой сессии.

Пример HTTP POST:

- http://localhost:8080/app/sys/rest/sessions/949d77e9-80bf-4b93-bd3b-b424f8887783/jexl/mainsel
- http://localhost:8080/app/sys/rest/sessions/new/jexl/mainsel?appname=Gs3_TestXmlApplication

Пример ответа

{
  "sessionId":"14849330-3196-4b33-80c5-caa370186720",
  "result":"[результат выполнения Jexl]"
}

5.7.3.1.2.2. Form HTTP POST

Альтернативным вариантом передачи Jexl скрипта, является отправка на адрес сервиса http формы, поле которой содержит Jexl-скрипт.

Адреса сервиса

  • http://{server:port}/app/sys/rest/form/sessions/{id}/jexl/mainsel

  • http://{server:port}/app/sys/rest/form/sessions/new/jexl/mainsel?appname={application}

где:

  • {id} - уникальный идентификатор рабочего сеанса, строковое представление GUID.

  • new - новый рабочий сеанс.

Http-запрос может содержать следующие параметры:

  • app - Имя приложения, которое должно быть открыто после создания новой сессии.

Пример HTTP POST:

- http://localhost:8080/app/sys/rest/form/sessions/{id}/jexl/mainsel
- http://localhost:8080/app/sys/rest/form/sessions/new/jexl/mainsel?appname={имя_приложения}

В ответе вернётся команда перенаправления на страницу входа с идентификатором сессии в качестве http-параметра.

Пример HTML-страницы.

<html>
   <body onload="onLoadFunc()">
    <script>
  function onLoadFunc() {
   const form = document.createElement('form');
   form.method = 'POST';
   form.id = 'MultilinePostForm'
   form.action = 'http://localhost:8080/app/sys/rest/form/sessions/new/jexl/mainsel?appname=Gs3_TestXmlApplication';
   const hiddenField = document.createElement('input');
   hiddenField.type = 'hidden';
   hiddenField.name = 'script';
   hiddenField.value = `Btk_ClassAvi.list().newForm().open();
   Gs3_RootTestAvi.list().newForm().open();`;
   form.appendChild(hiddenField);
   document.body.appendChild(form);
   form.submit();
  }
    </script>
   </body>
</html>

5.7.3.1.2.2.1. Аутентификация

Аутентификация в HTTP сервисах.

Warning

Для доступа к сервисам пользователь должен обладать привилегией Btk_ManagementPkg#useRestDevServices

5.7.3.1.3. Удалённая отладка

Набор служебных сервисов для поддержки удалённой отладки прикладного кода с помощью плагина Gtk Debug for Visual Studio Code .

Адреса сервиса

  • http://{server:port}/app/sys/rest/sourcecode

  • http://{server:port}/app/sys/rest/findclasses

Аутентификация в HTTP сервисах.

Warning

Для доступа к сервисам пользователь должен обладать привилегией Btk_ManagementPkg#useRestRemoteDebugServices