Загрузка приложения
После загрузки файла описания структуры приложения "xxx_application.xml", содержащего список всех модулей приложения, запускается процедура загрузки всех модулей приложения. Загрузка осуществляется в несколько проходов, с тем чтобы каждый модуль на определенном проходе мог выполнить определенные действия, результат которых мог повлиять бы на действия других модулей на следующих проходах.
Ниже описаны этапы загрузки приложения.
1. Загрузка спецификаций модулей
- Для каждого модуля загружается файл описания модуля xxx_module.xml.
- Если описание содержит файлы языковых констант <ui_texts>, файлы подгружаются в общий документ UiText.
- Вызывается метод OnModuleLoadUiText() из описания модуля, если таковой описан.
В методе OnModuleLoadUiText() модуль, созданный под заказ, обычно переименовывает станадртаные языковые константы в UiText.
2. Загрузка модулей
- Для каждого модуля в глобальном списке шаблонных форм регистрируется формы, описанные в массивах <sample_forms> и <sample_screen_forms> описания модуля, если такие есть.
- Вызывается метод OnModuleLoad() из описания модуля, если таковой описан.
В методе OnModuleLoad() модуль обычно модифицирует формы объектов, описанные в других модулях, добавляя в них дополнительные поля. Например E-Staff добавляет в форму стандарного объекта "event", описанную в библиотеке "base2", поля "candidate_id" и "vacancy_id".
3. Подготовка модулей
- Для каждого модуля в глобальном кэш документов регистрируется документы, описанные в массивах <shared_docs> описания модуля, если такие есть, и имена их корневых элементов делаются видимыми в списке глобальных имен.
- Вызывается метод OnModulePrepare() из описания модуля, если таковой описан.
Метод OnModulePrepare() используется в редких случаях.
4. Инициализация модулей
- Для каждого модуля регистрируется типы объектов, описанные в массивах <object_types> описания модуля, если такие есть, и имена их корневых элементов делаются видимыми в списке глобальных имен.
- Вызывается метод OnModuleInit() из описания модуля, если таковой описан.
В методе OnModuleInit() модуль обычно регистрирует справочники и инициалищирует их стандарными (предустановленными) значениями.
5. Запуск модулей
- Для каждого модуля вызывается метод OnModuleStart() из описания модуля, если таковой описан.
В методе OnModuleStart() модуль обычно выполянет любые прочие действия, например, добавляет новые разделы общих или персональных настроек.