Обзор системного ядра и языка ORL
Версия 1.0 alpha
Функции системного ядра
Обеспечение связи между прикладным ядром системы и конкретной реляционной базой данных
Прозрачная манипуляция такими понятиями, как объект, класс, метод, функция, форма, право доступа. На базе этих элементарных понятий в прикладном ядре формируются бизнес-объекты, бизнес-классы, бизнес-процессы и учетные регистры
Предоставление возможности оперировать объектами и отношениями между ними как в объектно-ориентированном стиле "объект-атрибут", так и в стиле реляционных баз данных "сущность-отношение"
Осуществление эффективного контроля за логической целостностью данных
Архитектура системного ядра
Ядро представляет из себя совокупность объектов и функций базовых системных классов
Структура объектов и функций ядра однозначно описывается объектно-реляционным языком программирования ORL
Базовыми классами ядра и базовыми элементами языка ORL являются следующие
Элементарные классы
- Значение
- Ссылка на значение или объект
- Коллекция значений или объектов
- Объект
Функциональные классы
- Метод или функция класса
- Оператор метода или запроса на выборку или изменения данных
- Запрос на выборку или изменения данных
Классы описания и хранения данных
- Класс
- Атрибут
- Область значений
Реализация системного ядра
Реализуется в виде сервера приложений - мендежера транзакций, исполняющего системные функции и прикладные бизнес-процессы
Написано на Microsoft Visual C++ 5.0 с применением интерфейса ODBC к базе данных и с использованием TCP/IP sockets и Remote Automation технологий для взаимодействия с сервером приложений
Может эксплуатироваться в двух режимах
Клиент-серверном, загрузкой системного ядра непосредственно на рабочем месте каждого клиента, требует следующих компонент
- Программа начальной загрузки рабочего места на языке ORL для каждого клиента
- Исполняемый модуль ядра для каждого клиента
- Драйвер реляционной базы данных для каждого клиента
- SQL - сервер базы данных
Сервера приложений, загрузкой серверной части системного ядра на сервере и клиентских частей на рабочих станциях клиентов, требует следующих компонент
- Программа начальной загрузки рабочего места на языке ORL для каждого клиента
- Исполняемый модуль клиентской части ядра для каждого клиента
- Исполняемый модуль серверной части ядра
- Драйвер реляционной базы данных
- SQL - сервер базы данных
Доступ к системному ядру
Обеспечивается специализированной утилитой администратора системного ядра, позволяющей просматривать текущие базовые и производные объекты, вызывать для обработки формы и исполнять методы
Эффективно поддерживается программированием объектов, класов и методов ядра с помощью встроенного в него объектно-реляционного языка программирования ORL, позволяющего изменить любой объект или класс и вызвать любой метод или функцию как непосредственно, так и косвенно - вызвав на экран определенную экранную форму
Принцип работы системного ядра
При запуске ядра инициализируется ограниченный набор базовых объектов, классов и методов
Обычно (но не обязательно) сразу происходит соединение ядра с SQL сервером базы данных и проверка соответствия базовых объектов, классов и методов содержащимся в базе системным данным, метаданным и хранимым процедурам
После запуска ядра обычно происходит его загрузка начальными данными типа запросов на подсоединение пользователя к системе, запросов на создание или выборку из базы данных начальных данных, функций и форм конкретного рабочего места
После подсоединения пользователя к системе и загрузки начальных данных, функций и форм система начинает исполнять эти функции и отрабатывать входные и выходные формы, создавать производные объекты, классы и методы на базе базовых
Связь системного ядра с базой данных
Трансляция множеств объектов на кортежи таблиц реляционной базы данных производится через базовый объект класса "коллекция объектов"
"Коллекция объектов" определяет множество объектов определенного класса и производных от него классов, доступных пользователю напрямую или посредством внутренних функций
Методы "коллекции объектов" однозначно связывают ее с конкретными таблицами или представлениями (VIEW) , в которых размещаются фактические экземпляры этих объектов
На уровне "коллекций объектов" производится контроль за синхронным доступом к объектам разными пользователями и целостностью данных в пределах транзакций
Язык программироваия системного ядра
Семантика объектно-реляционного языка программирования ORL однозначно соответствует семантике архитектуры ядра
Язык позволяет оперировать с объектами в классическом понимании этого слова, однако доступ к самим объектам обеспечивается реляционной нотацией
Как ядро, так и язык, в соответствии с последними индустриальными решениями (COM/DCOM), опираются на понятие "объекта", а не класса - каждый класс является обычным экземпляром (объектом) базового класса "класс", причем абсолютно все объекты в системе являются экземплярами (объектами) класса "объект", а все классы - его наследниками
Соединяя возможности объектно-ориентированной нотации (CLASS.METHOD), и реляционной (SELECT/UPDATE TABLE WHERE CONDITION), язык позволяет производить любые операции с любыми множествами объкектов, например TABLE(CONDITION).METHOD или CLASS(CONDITION).SELECT/UPDATE
Четырьмя китами языка являются
Значение - элементарное значение (строка,число,и .д.) типа VARIANT
Ссылка - ссылка на значение, коллекцию или объект типа POINTER, POSITION или BOOKMARK
Коллекция - коллекция значений или объектов типа LIST,ARRAY,TABLE,VIEW
Объект - обьект некоторого класса, имеющий некоторые атрибуты и методы
Основными синтаксическими конструкциями языка являются
Конструктор метода или запроса на создание, выборку, изменение или удаление объекта, класса, метода и т.д., или выполнение каких-либо других операций, включая
- Условные операторы, обеспечивающие выборку объектов в запросе
- Исполнимые операторы, обеспечивающие изменения, производимые запросом
Конструктор нового класса объектов, включая
- Спецификацию атрибутов класса - значений, ссылок или коллекций
- Описание методов класса - запросов, операторов, хранимых процедур, подпрограмм
Конструктор нового объекта, включая
- Ссылки на классы, которые этот объект имплементирует
- Значения атрибутов типа "значения"
- Ссылки атрибутов типа "ссылка" или "коллекция"
Объектно-реляционный язык ORL и системное ядро