Проекты
Проект - это совокупность модулей и дополнительной информации (картинок, файлов дизайнов отчетов и т.п.), которые полностью описывают функциональность создаваемой информационной системы.
Проекты, как и модули, могут зависеть друг от друга. Граф проектов при этом должен "включать" в себя граф модулей, то есть если модуль 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.