Модули
Модуль - это некоторая функционально законченная часть проекта. Модуль состоит из объявлений свойств, действий, событий, ограничений и других элементов системы.
Каждый модуль имеет имя, которое должно быть уникальным в пределах проекта.
Зависимости между модулями
Обычно модули для описания части своего функционала используют элементы из других модулей. Соответственно, если модуль B
использует элементы из модуля A
, то в модуле B
необходимо указать, что он зависит от A
. На основании этих зависимостей все модули в проекте выстраиваются в некотором порядке, в котором происходит их инициализация. Гарантируется, что если модуль B
зависит от модуля A
, то инициализация модуля A
произойдет раньше, чем инициализация модуля B
. Циклические зависимости между модулями в проекте не допускаются.
Если модуль C
зависит от модуля B
, а модуль B
зависит от модуля A
, то будем также считать, что модуль С
зависит от модуля A
.
Любой модуль всегда автоматически зависит от системного модуля System
, вне зависимости от того указано это явно или нет.
Пространства имен
В каждом модуле указывается пространство имен, внутри которого будут находиться имена всех созданных в этом модуле элементов системы. По умолчанию, модуль создает собственное пространство имен, имя которого равно имени модуля. Также для модуля можно задать список дополнительных пространств имен, которые будут иметь приоритет при поиске элементов системы.
Язык
Каждому модулю в платформе соответствует ровно один файл, начинающийся со специального заголовка.
Примеры
MODULE EmployeeExample; // Задаем имя модуля
REQUIRE System, Utils; // Перечисляем модули, от которых зависит модуль Employee
NAMESPACE Employee; // Задаем пространство имен
CLASS Employee 'Сотрудник'; // Создаем класс
CLASS Position 'Должность'; // Создаем еще один класс
employeePosition(employee) = DATA Position (Employee); // Создаем свойство