Проекты
Проект - это совокупность модулей и дополнительной информации (картинок, файлов дизайнов отчетов и т.п.), которые полностью описывают функциональность создаваемой информационной системы.
Проекты, как и модули, могут зависеть друг от друга. Граф проектов при этом должен "включать" в себя граф модулей, то есть если модуль A
зависит от модуля B
, то и проект модуля A
должен зависеть от проекта модуля B
.
Также, как правило, для проектов существуют возможности версионирования и автоматизации сборки (например, формирование одного исполняемого файла со всеми зависимостями).
Язык
С технической точки зрения проект - это не более чем множество файлов, поэтому поддержка проектов не является непосредственно частью платформы. Предполагается, что для этого используются внешние инструменты: начиная от простых встроенных в IDE, и заканчивая сложными универсальными фреймворками (вроде Maven).
По умолчанию при запуске платформа ищет все файлы с расширением lsf в classpath стартуемого сервера приложений и считает их подключаемыми модулями. Модули подключаются в порядке их зависимостей, так если A
зависит от B
и от C
, то по умолчанию сначала инициализируется B
, потом C
, и только потом A
.
Впрочем, вышеописанное поведение можно изменять при помощи соответствующих lsFusion параметров запуска сервера приложений:
logics.includePaths
,logics.excludePaths
- пути (относительно classpath), в которых платформа будет искать lsf-файлы. При задании этих параметров можно использовать как пути к конкретным файлам (напримерA/B/C.lsf
), так и шаблоны путей (напримерA/*
- все lsf-файлы в папкеA
и всех ее подпапках). Кроме того в этих параметрах можно указывать сразу несколько путей (шаблонов путей) через точку с запятой, напримерA.lsf;dirB/*
. Имя jar-файла в пути не учитывается (то есть файл лежащий вb.jar/C/x.lsf
считается имеет путьC/x.lsf
). По умолчаниюincludePaths
равен*
(то есть все файлы),excludedPaths
- пустой.- logics.topModule - имя верхнего модуля. Если этот параметр задан (не пустой), будут подключаться не все найденные lsf-файлы, а только заданный модуль и все его зависимости. По умолчанию этот параметр считается не заданным (пустым).
- logics.orderDependencies - переопределение порядка зависимостей (задается как имена модулей через запятую). Так если
A
зависит отB
иC
, а этом параметре присутствуетB
иC
, причемC
идет раньшеB
, тоC
будет инициализирован доB
. По умолчанию этот параметр считается не заданным (пустым), то есть используется порядокREQUIRE
в самих lsf файлах.
Вне зависимости от описанных выше параметров, платформа всегда автоматически подключает следующие системные модули: System
, Service
, Reflection
, Authentication
, Security
, SystemEvents
, Scheduler
, Email
, Time
and Utils
.