VisualData

Среда исполнения

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

В основе среды исполнения лежат всего четыре функции: Create, Set, Get и Update. Эти функции обеспечивают взаимодействие пользователей с содержимым базы данных по правилам, декларированным в модели данных, и являются методами двух базисных элементов.

Метод Create принадлежит мета-классу, и используется для создания производного объекта класса данных. Параметром метода является дескриптор IDC целевого класса. Метод Create создает объект в форме экземпляра кортежа атрибутов указанного класса, и присваивает ему уникальный дескриптор IDO.

Методы Set, Get и Update, принадлежат мета-атрибуту, и позволяют оперировать производными значениями атрибутов объектов данных. Метод Set осуществляет присвоение значения атрибуту, метод Get возвращает значение атрибута, а метод Update является событием, инициирующим атрибут объекта на пере-формирование производного хранимого значения. При этом для всех трех методов целевой объект идентифицируется дескриптором IDO, а собственно целевое значение доступно исключительно через атрибут класса, путь к которому представлен в дескрипторах IDC+IDA модели данных.

Отличительной особенностью всех трех перечисленных методов мета-атрибута является потенциально рекурсивный характер процесса их исполнения. Выполнив требуемое действие над целевым атрибутом, метод Set для каждой исходящей от этого атрибута активной зависимости осуществляет повторный вызов Set в адрес целевого атрибута зависимости, тем самым распространяя изменение значения исходного атрибута на все зависимые от него атрибуты. Если целевой атрибут метода Get не обладает хранимым значением (не инициализирован или имеет динамический тип), то метод Get последовательно вызовет Get в адрес целевого атрибута каждой входящей зависимости, с целью сформировать из полученных значений-аргументов свое возвращаемое значение. Аналогичным образом, рекурсивно опрашивая пассивные входящие зависимости, ведет себя и метод Update, с той лишь разницей, что значение, сформированное в результате опроса, не возвращается в качестве результата вызова функции, а сохраняется в целевом атрибуте.

Так как исполнение любого из трех активных методов: Create, Set или Update, влечет за собой изменение состояния базы данных, то их вызов оформляется как транзакция, и осуществляется в рамках транзакционной сессии. Вызов пассивного метода Get не изменяет текущего состояния базы данных, но также должен осуществляться в рамках сессии - сессии выборки. Таким образом, доступ отдельного пользователя к объектам и их значениям в базе данных всегда начинается с открытия сессии нужного типа, и требует обязательного ее закрытия по окончании доступа. Для этих целей среда исполнения предлагает функции BeginSession и EndSession.

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