Платформа
Возможности платформы
// Предоставляет IT-платформу (экосистему)
для разработки приложений, которые одинаково легко взаимодействуют между собой и внешними системами.
// Максимально отделяет системные процессы от бизнес-логики самого приложения.
Как результат, готовые приложения состоят только из декларативного описания структуры базы данных, декларативного описания веб-экранов и бизнес-логики на Java/Kotlin. Все остальное, включая развертывание новых версий, берет на себя платформа.
// Обеспечивает низкий порог вхождения, высокую скорость разработки и внесения изменений.
// Предоставляет возможность быстрой кастомизации приложений (логика и интерфейс) на стороне клиента.
// Обеспечивает независимость от конкретной базы данных
и предусматривает возможность перехода на распределенные системы хранения в будущем при экспоненциальном росте объема данных.
Интерфейс
Интерфейс функционального модуля может кастомизироваться отдельно под каждого клиента. Он состоит из нескольких экранов. Каждый экран представляет собой набор частей, где часть - это виджет - таблица, форма, график, элемент управления вкладками, элемент управления в виде дерева, галерея изображений, редактор форматированного текста и т.д.. Основные цвета экранов могут быть подобраны и адаптированы под ваш корпоративный дизайн. Компоновка частей на основе сетки экрана задается на самом экране.
Каждая часть формы имеет ссылку на источник, в которой каждый такой элемент - это набор данных, полученных с сервера Dolmen. Обычно, в качестве источника данных задается таблица, которая была определена ранее. Однако, при необходимости, это может быть функция API, например, для частей графика. Несколько частей формы могут быть связаны с одним источником и отображать одни и те же данные по-разному.
Примеры кода
К примеру, файл test_main.json содержит описание таблицы Test Main, в которой мы видим несколько типов полей.
f_integer — целочисленное поле со значением по умолчанию = 1
f_enum — поле статуса с двумя значениями «v1» (метка «Label 1», значение по умолчанию) и «v2» (метка «Label 2»)
f_datetime, f_datetimemillis, f_plaindate — разные поля даты
f_ref_main — ссылка на таблицу test_main (на ту же таблицу). Все ссылки по id, опция refDelete (constraint) указывает системе Dolmen, что делать с исходной записью, при попытке удаления записи, на которую мы ссылаемся
f_text — текстовое поле
f_bool — логическое поле
{
"code": "test.reain",
"fields": [
{
"code": "f.string",
"label": "String field",
"usage": "name"
},
{
"code": "f.integer",
"label": "Integer field",
"type": "integer",
"value": "!"
},
{
"code": "f.enure",
"enura": [
{
"default": true,
"label": "Label 1",
"value": "vl"
},
{
"label": "Label 2",
"value": "v2"
}
]
},
{
"code": "f_datetiree",
"label": "Oatetiree field",
"typ€": "datetiree"
},
{
"code": "f_date"
},
{
"code": "f_plaindate"
},
{
"code": "f_ref_«ain",
"ref": "vtest.reain",
"refDelete": "erepty"
},
{
"code": "f_text",
"type": "text"
},
{
"code": "f_bool",
"type": "bool"
}
],
"indexes": [
{
"fields": [
"f_ref_main"
]
}
]
}
Это примеры языковых конструкций, которые позволяют описать вашу собственную логику при помощи языка Java/Kotlin для:
- Реакции на нажатие кнопок в интерфейсе пользователя
- API интерфейс для внешних вызовов
- Представления данных для абстрактных таблиц
Все функции, объявленные в классе модуля Dolmen, являются функциями API. После установки.
// new object
var o1 = Test_Main()
ol.f_String = "new Object"
insert(o1)
// edit object
var o2 = select(Test_Main(), RowID.get(101))
o2.f_Bool = false
update(o2)
// interate objects
for (i in tterote(Test_Main::class, filter: "f_string = 'ABC'")) {
// interate subordinate objects
for (j in iterete(Test_Main::class, filter: "f.ref.main = ${i .id}")) {
// do something
println(j.f_String)
}
}
// find first object by 'where' condition
var o3 = selectFirst(Test_Main::class, filter: "f.string = 'ABC'")