Использование файлового контента в пакетах
Glossary Item Box
Общие сведения
Начиная с версии 7.11.3 в bpm'online появилась возможность добавлять файловый контент (*.js-, *.css-файлы, изображения и др.) в пользовательские пакеты.
Файловый контент пакетов — любые файлы, используемые приложением. Файловый контент не обрабатывается web-сервером и является статическим (см. "Статический клиентский контент в файловой системе"), что в свою очередь повышает скорость работы приложения.
ВАЖНО Файловый контент является неотъемлемой частью приложения bpm'online и всегда хранится в каталоге ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\<Название пакета>\Files.. |
К СВЕДЕНИЮ В пакет могут быть добавлены любые файлы, однако использоваться будут только файлы, необходимые для клиентской части bpm'online. |
ВАЖНО Для использования файлового контента необходима генерация вспомогательных файлов (см. "Генерация вспомогательных файлов" ниже). |
Рекомендованная структура хранения файлового контента
Для использования файлового контента в структуру пакета (см. "Структура и состав пакетов") добавлен каталог Files. Рекомендуется соблюдать следующую структуру каталога Files:
-PackageName ... -Files -src -js bootstrap.js [другие *.js-файлы] -css [*.css-файлы] -less [*.less-файлы] -img [файлы изображений] -res [файлы ресурсов] descriptor.json ... descriptor.json
Здесь
js — каталог с *.js-файлами исходных кодов на языке JavaScript.
css — каталог с *.css-файлами стилей.
less — каталог с *.less-файлами стилей.
img — каталог с изображениями.
res — каталог с файлами ресурсов.
descriptor.json — дескриптор файлового контента.
Как добавить файловый контент в пакет
Достаточно просто поместить файл в соответствующий подкаталог директории Files необходимого пакета. Каталог Files будет размещен по пути ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\<Название пакета>\Files.
Дескриптор файлового контента
В файле descriptor.json, размещенном в каталоге Files, хранится информация о bootstrap-файлах пакета. Файл имеет следующую структуру:
{ "bootstraps": [ ... // Массив строк, содержащих относительные пути к bootstrap-файлам. ] }
Пример файла descriptor.json:
{ "bootstraps": [ "src/js/bootstrap.js", "src/js/anotherBootstrap.js" ] }
Bootstrap-файлы пакета
Это *.js-файлы, которые позволяют управлять загрузкой клиентской конфигурационной логики. Файл не имеет четкой структуры.
(function() { require.config({ paths: { "Название модуля": "Ссылка на файловый контент", ... } }); })();
Пример файла bootstrap.js:
(function() { require.config({ paths: { "MyPackage1-ContactSectionV2": Terrasoft.getFileContentUrl("MyPackage1", "src/js/ContactSectionV2.js"), "MyPackage1-Utilities": Terrasoft.getFileContentUrl("MyPackage1", "src/js/Utilities.js") } }); })();
ВАЖНО Все bootstrap-файлы загружаются асинхронно после загрузки ядра, но до загрузки конфигурации. |
Загрузка bootstrap-файлов
Для корректной загрузки bootstrap-файлов в директории статического контента генерируется вспомогательный файл _FileContentBootstraps.js (см. "Генерация вспомогательных файлов" ниже). Это файл, в котором содержится информация о bootstrap-файлах всех пакетов.
Пример содержимого файла _FileContentBootstraps.js:
var Terrasoft = Terrasoft || {}; Terrasoft.configuration = Terrasoft.configuration || {}; Terrasoft.configuration.FileContentBootstraps = { "MyPackage1": [ "src/js/bootstrap.js" ] };
Версионирование файлового контента
Для корректной работы версионирования файлов файлового контента в директории статического контента генерируется вспомогательный файл _FileContentDescriptors.js (см. "Генерация вспомогательных файлов" ниже). Это файл, в котором в виде коллекции "ключ-значение" содержится информация о файлах в файловом контенте всех пакетов. Каждому ключу (названию файла) соответствует значение — уникальный хэш-код. Таким образом обеспечивается гарантированная загрузка в браузер актуальной версии файла.
К СВЕДЕНИЮ После установки файлового контента нет необходимости в очистке кэша браузера. |
Пример содержимого файла _FileContentDescriptors.js:
var Terrasoft = Terrasoft || {}; Terrasoft.configuration = Terrasoft.configuration || {}; Terrasoft.configuration.FileContentDescriptors = { "MyPackage1/descriptor.json": { "Hash": "5d4e779e7ff24396a132a0e39cca25cc" }, "MyPackage1/Files/src/js/Utilities.js": { "Hash": "6d5e776e7ff24596a135a0e39cc525gc" } };
Генерация вспомогательных файлов
Для генерации вспомогательных файлов (_FileContentBootstraps.js и FileContentDescriptors.js) необходимо с помощью утилиты WorkspaceConsole выполнить операцию BuildConfiguration:
Terrasoft.Tools.WorkspaceConsole.exe -operation=BuildConfiguration -workspaceName=Default -destinationPath=Terrasoft.WebApp\ -configurationPath=Terrasoft.WebApp\Terrasoft.Configuration\ -useStaticFileContent=false -usePackageFileContent=true -autoExit=true
Здесь:
- operation — название операции. BuildConfiguration — операция компиляции конфигурации.
- useStaticFileContent — признак использования статического контента. Должен иметь значение false.
- usePackageFileContent — признак использования файлового контента пакетов. Должен иметь значение true.
Остальные параметры WorkspaceConsole описаны в статье "Параметры WorkspaceConsole".
В результате выполнения операции в каталоге со статическим контентом ...\Terrasoft.WebApp\conf\content будут сгенерированы вспомогательные файлы _FileContentBootstraps.js и _FileContentDescriptors.js.
ВАЖНО Также генерация вспомогательных файлов выполняется при установке пакетов из SVN и при выполнении действий компиляции в разделе [Конфигурация]. |
Перенос изменений между средами
Файловый контент является неотъемлемой частью пакета. Он фиксируется в хранилище системы контроля версий наравне с остальным содержимым пакета. В дальнейшем он может быть перенесен на другую среду разработки при помощи SVN (см. "Работа с SVN в файловой системе").
ВАЖНО Для переноса на тестовую и промышленную среды рекомендуется использовать встроенные средства bpm'online (см. "Экспорт пакетов из интерфейса приложения" и "Установка приложений marketplace из *.zip-архива"). |
ВАЖНО При установке пакетов каталог Files будет создан только в том случае, если он не пустой. Если этот каталог создан не был, то для начала разработки его нужно создать вручную. |