Сервис пользовательского интерфейса
Сервис пользовательского интерфейса — это инфраструктурный сервис, предназначенный для формирования интерфейса пользователя. Сервис обрабатывает запросы, полученные в формате 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.