dataspace-ce
Описание
Platform V DataSpace Community Edition — это программный компонент с открытым исходным кодом, ускоряющий создание бизнес-приложений и снижающий затраты на разработку благодаря быстрому созданию решений для работы с данными на основе модели предметной области и гибкому манипулированию данными через GraphQL.
Языки
- Java73,1%
- Kotlin21,7%
- TypeScript2,3%
- Shell1,2%
- ANTLR0,8%
- Fluent0,5%
- Остальные0,4%
Platform V DataSpace Community Edition
Platform V DataSpace Community Edition – это программный компонент, который помогает ускорить создание бизнес-приложений и уменьшить затраты на их разработку.
Ключевые возможности продукта
- Быстрое создание решения для работы с данными на основе модели предметной области
- Гибкий поиск и манипулирование данными (создание, изменение, удаление) с помощью языка запросов GraphQL
Обучающий курс
https://platformv.sbertech.ru/data-space-course/
Необходимые компоненты
- Git
- Open JDK / Temurin JDK 17+
- Docker Desktop 4.37.2+
- Docker Engine 27.4.0+ и Docker Compose v2 (альтернатива Docker Desktop для Linux)
Установка и запуск
Далее будет рассмотрен процесс запуска DataSpace с моделью данных по умолчанию на примере медицинской клиники. Помимо это, также есть возможность ознакомиться с работой продукта на примере fullstack-приложения "Трекер задач", в рамках которого можно увидеть взаимодействие DataSpace с frontend-приложением, а также системой авторизации и аутентификации (KeyCloak) для более комплексного понимания возможностей системы.
- Скачайте репозиторий проекта:
- Перейдите в папку скачанного проекта:
- Запуск проекта:
Возможны 2 вариант запуска:
- быстрый с готовыми Docker образами (упрощенный режим)
- сборка проекта, подготовка и запуск локальных Docker-образов
В процессе исполнения в терминале будет отображаться различная диагностическая информация о ходе процесса сборки и запуска приложения. Также в файле скрипта присутствуют краткие комментарии выполняемых действий на случай необходимости более детального понимания.

После успешного запуска DataSpace можно увидеть список загруженных моделей по адресу:
http://localhost:8080/actuator/models
Также появляется возможность создавать и выполнять GraphQL-запросы к модели данных DatSpace в удобном Web-редакторе:
http://localhost:8080/graphiql?path=/models/1/graphql
По умолчанию в приложении загружается модель с примером сервиса "Медицинская клиника: запись на прием"
При необходимости загрузки своей модели, файл с ее описанием необходимо разместить в каталоге files/resources/src-model, имя файла - model.xml. Более подробную информацию о структуре и правилах описания модели можно найти в Руководстве по ведению модели
Выполнение GraphQL-запросов на примере модели "Медицинская клиника: запись на прием"
Для быстрого ознакомления с GraphQL перейдите в Web-редактор http://localhost:8080/graphiql?path=/models/1/graphql

В раздел Variables укажите значения атрибутов для запроса на создание сущности:
Затем выполните GraphQL-запрос createClinicMutation через Web-редактор:
Для просмотра списка клиник выполните запрос searchClinicsQuery:

По умолчанию в демо-примере отключен функционал разграничения прав доступа. Функционал разграничения прав доступа (далее Security) способен ограничивать доступ к данным на основе разрешений (permissions). Для его включения необходимо раскомментировать в файле context-child.properties параметр, определяющий правила описания логики разрешений (permissions):
dataspace.security.graphql.permissions.source=file
После этого необходимо:
-
увеличить версию модели в файле model.xml
Например: <model model-name=....... version="0.0.2" >Подробнее об изменении модели обратитесь к разделу Изменение модели данных в model-guide.md
-
вновь выполнить:
Для выполнения запросов в режиме Security через Web-редактор необходимо добавить токен JWT (JSON Web Token)в раздел Headers:
В присутствующем в заголовке JWT содержатся ограничения:
- получение только клиники в "г.Москва"

Создайте дополнительную клинику в другом населенном пункте сменив значение Variables:
{
"input": {
"name": "Городская поликлиника №1",
"address": {
"city": "Торжок",
"street": "ул. Ленина",
"flatNo": "23"
}
}
}
и выполнив затем запрос:
mutation createClinicMutation($input: _CreateClinicInput!) {
packet {
createClinic(input: $input) {
id
name
address {
city
street
flatNo
}
}
}
}
Вновь запросим список доступных нам клиник:
query searchClinicsQuery {
searchClinic {
elems {
id
name
address {
city
}
}
}
}
Согласно функционалу Security в ответе по-прежнему будет присутствовать только клиника в г.Москва
Чтобы узнать больше о возможностях Security, ознакомьтесь с документацией по Security
Взаимодействие с GraphQL без UI:
получим ответ:
Текущий проект запущен с демонстрационной моделью "Медицинская клиника: запись на прием".
Для расширения/изменения этой модели обратитесь к разделу Изменение модели данных в model-guide.md
Системные требования DataSpace Community Edition
- Поддерживаемые платформы: x86, x64
- Поддерживаемые операционные системы: Linux, Windows, Mac OS
- Минимальная конфигурация аппаратного обеспечения: 1 CPU, 256Mb ОЗУ
Для дальнейшего ознакомления с Platform V DataSpace Community Edition обратитесь к документации.