Базы данных
Все основные данные в приложении хранятся в формате XML, находящемся внутри XML-документов, которые, в свою очередь лежат внутри определенной базы данных. Любое клиент-серверное приложение использует, как минимум две базы данных:
- Основная база, содержащая все данные приложения, и располагающееся на сервере приложения. Как правило, имеет внутреннее имя "data".
- Пользовательская база, содержащая настройки и другие данные пользователя, и располагающееся на каждом рабочем месте пользователя. Как правило, имеет внутреннее имя "data_local".
Также для реализации "Корзины" заводят отдельную базу, как правило, имеющую внутренне имя "trash".
Каждый XML-документ в базе имеет свой виртуальный url, по которому к нему можно обращаться. Существует два вида документов в базе: статические и объектные.
Каждый статический документ имеет произвольный, но
заранее заданный относительный путь внутри базы, и для доступа к нему
используется специальная url-схема "x-local". Например, документ, содержащий
общие настройки, может иметь следящий
url:
x-local://data/static/global_settings.xml
где,
"data" - внутреннее имя базы, а путь static/global_settings.xml внутри базы
произвольно выбран разработчиком приложения.
Объектные документы (или просто объекты) имеют другой принцип адресации. Собственно они и содержат основной объем данных любого приложения.
Для каждой базы данных заранее задается определенный набор типов объектов (сущностей), которые используются в приложении (человек, организация, событие, вакансия и др., количество типов объектов может доходить до нескольких десятков). Для каждого типа объекта может существовать любое число экземпляров данного вида объекта, каждый из которых имеет свой уникальный идентификатор (ID), целочисленный 64-битный или строковый .
Модель объектных документов аналогична реляционной СУБД, где тип объекта - это таблица, а объект - запись в таблице. Однако принцип доступа к данным в SP-XML и реляционных СУБД отличаются, о чем будет описано отдельно.
К любому объектному документу также можно обратиться через url,
используя специальную схему
"x-db-obj":
x-db-obj://data/person/0x41D258E8F25C328A.xml
где,
"data" - внутреннее имя базы, "person" - тип объекта, а 0x41D258E8F25C328A - ID
объекта в 16-ричном виде. Но, в отличие от url статических документов,
разработчик приложения редко видит url объектных документов в явном виде, обычно
он создается неявно различными функциями и методами.
Таким образом, количество статическим документов в базе, как правило заранее известно, тогда как количество объектных - потенциально неограниченно.
Дополнительно, платформа позволяет хранить по статическим url файлы любых типов, необязательно XML. Это используется в редких случаях, например загрузке пакетов данных на сервер, обновлении дистрибутив рабочего места и др.
Внимание! Ранние версии E-Staff (до 4.0) а также система
WebTutor используют так называемую старую объектную модель,
которая активно использовалась до 2010 года, и которую не рекомендуется
использовать в новых приложениях. В старой объектной модели все объектные
документы базы, независимо от типа, использовали единое пространство
целочисленных 64-битных ID, и использовали url схемы "x-local" для
адресации:
x-local://data/objects/0x41D258E8F25C32/8A.xml
Схема "x-app" в старой модели не использовалась. Список возможных типов объектов в базе заранее нигде не регистрировался, в базу можно было поместить объектный документ любой формы.