Перейти к основному содержимому

Сервис пользовательского интерфейса

Сервис пользовательского интерфейса — это инфраструктурный сервис, предназначенный для формирования интерфейса пользователя. Сервис обрабатывает запросы, полученные в формате JSON, возвращая в ответе дерево компонентов для отображения в интерфейсе, и данные, при их наличии.
В процессе обработки запроса сервис аутентифицирует пользователя, проверяет возможность выполнения действия, связанного с командой, полученной из запроса пользователя, если команда привязана к какому-то действию (например, запросу к сервису бизнес-логики). Результат выполнения действия добавляется в ответ сервиса.
В результате обработки запроса формируется ответ пользователю в виде набора компонент для отображения в пользовательском интерфейсе или в виде сообщения с кодом ошибки при неуспешном исходе. Сервис поддерживает протокол GraphQL для взаимодействия с сервисом бизнес-логики. Сервис пользовательского интерфейса передает запросы к сервису бизнес-логики без их интерпретации. Этот сценарий предусмотрен только для работы с данными.

query {
users {
firstname
age
}
}

Модель данных

Основной сущностью в работе сервиса является элемент графического интерфейса контрол (control). Контрол имеет стандартный набор свойств (Properties):

  • метаданные: документно-ориентированная модель страницы в формате JSON, отправляемая клиентскому ядру для отрисовки структуры страницы Платформы;
  • data: набор данных, содержащий в себе информацию, полученную от сервиса бизнес-логики;
  • action: это обращение к сервису бизнес-логики или системная команда;
  • dataset: массив данных, который получен в результате выполнения этих action.

Модель dataset

Модель dataset представляет собой объект формата JSON , описывающий свойства и способы их получения во время выполнения.

Существуют два вида dataset:

  • динамический: позволяет получить заданное количество элементов по фильтру для страницы Платформы; используется, когда на странице не помещается весь набор запрошенных данных и отрисовка происходит по частям при нажатии пользователем соответствующей клавиши;
  • статический: позволяет получить набор контейнеров; используется, когда пользователь запрашивает большое количество информации от сервиса бизнес-логики.

Для обработки запросов от пользовательского интерфейса к сервисам бизнес-логики используется метод PostQuery на языке GraphQL.

{


"container": "string",
"command": "string",
"data": "query myQuery{
user {
firstName


lastName
}
}",
"locale": "string",
"projectId": "string"
}

В поле data отправляются данные в формате JSON запроса языка GraphQL. Сервис обрабатывает запрос и возвращает ответ в формате JSON с запрошенными данными. Такой необработанный запрос позволяет вернуть выборку данных с помощью обращения к маршруту метода API, работающего с базой данных с помощью GraphQL, без проверки заголовков ответов от сервисов бизнес-логики.

Проекты DevTools

При публикации проекта DevTools cервис пользовательского интерфейса сохраняет информацию об установленном проекте, его версии, дату и время публикации. Для получения списка проектов DevTools, включающих наименование проекта, версию, дату и время публикации, используется метод API cервиса пользовательского интерфейса GetProjects.