Работа с клиентскими модулями в файловой системе
Glossary Item Box
Разработка на платформе bpm'online может проводиться встроенными средствами в разделе [Управление конфигурацией]. С их помощью можно добавлять новые и редактировать существующие схемы и модули, бизнес-процессы и скрипты баз данных. Подробнее о встроенных средствах разработки можно узнать из главы "Встроенные средства разработки".
Однако для удобства разработчика предусмотрена также возможность выгрузки клиентских модулей из базы данных в файлы *.js для работы с ними в интегрированной среде разработки (Integrated Development Environment, IDE), например, WebStorm.
Последовательность выгрузки клиентских модулей в файловую систему
1. Внести изменения в файл ConectionStrings.config
Файл настройки строк подключения ConnectionStrings.config находится в корневом каталоге с развернутым приложением.
Параметр clientUnitContentPath должен указывать на конкретный путь в файловой системе локального компьютера разработчика. По этому пути будут выгружаться клиентские схемы приложения. Например:
<add name="clientUnitContentPath" connectionString="C:\JSProjects\BpmOnline\ClientUnitSrc" />
2. Внести изменения в файл конфигурации Web.config загрузчика приложения
Файл конфигурации Web.Config загрузчика приложения, так называемый "внешний" Web.Config, находится в корневом каталоге с развернутым приложением. В этом файле необходимо найти группу секций <resources> и в секции <clientUnits> установить значение true для атрибута useFileContent.
<resources> ... <clientUnits useFileContent="true" /> </resources>
3. Обновить клиентские модули из базы данных
Для этого необходимо перейти в [Дизайнер системы] > [Управление конфигурацией]. В открывшемся окне перейти в раздел [Конфигурация].
НА ЗАМЕТКУ Если действия, описанные в п.1 и п.2 производились при уже открытом разделе [Конфигурация], то необходимо просто обновить страницу. |
После выполнения настроек, описанных на предыдущем шаге, на вкладке [Действия] боковой панели раздела [Конфигурация] появятся два дополнительных действия (рис.1):
- [Обновить клиентские модули из базы данных] — действие, которое выгружает клиентские модули из базы данных в локальную папку в виде набора *.js файлов.
- [Зафиксировать клиентские модули в базе данных] — действие, которое загружает клиентские модули из локальной папки файловой системы в базу данных.
Рис. 1. — Действия, необходимые для работы с клиентскими модулями в файловой системе
Для первоначальной выгрузки модулей необходимо выбрать действие [Обновить клиентские модули из базы данных].
Последовательность работы с новыми клиентскими модулями в файловой системе
1. Настроить приложение для выгрузки клиентских модулей в файловую систему
Для этого необходимо повторить пункты 1 и 2 вышеприведенной последовательности выгрузки клиентских модулей в файловую систему.
2. Создать новый клиентский модуль
Для этого необходимо перейти в [Дизайнер системы] > [Управление конфигурацией]. В открывшемся окне перейти в раздел [Конфигурация]. Затем на вкладке [Пакеты] боковой панели раздела [Конфигурация] нужно выбрать необходимый пользовательский пакет, в котором будет создан новый клиентский модуль. По умолчанию для этого предусмотрен пользовательский пакет Custom (рис. 2). Подробнее о пользовательских пакетах изложено в статье "Создание пользовательского пакета".
Рис. 2. — Выбор пользовательского пакета
После этого на вкладке [Схемы] из выпадающего меню кнопки [Добавить] необходимо выбрать нужный тип клиентского модуля (рис. 3).
Рис. 3. — Создание нового клиентского модуля
Для создания клиентских модулей используется две стандартных команды меню кнопки [Добавить]:
Модуль — используется при создании новых клиентских модулей.
Замещающий клиентский модуль — используется для расширения функциональности существующих клиентских схем из других пакетов.
Подробнее о процессе создания клиентских схем изложено в статье "Создание клиентской схемы".
3. Обновить клиентские модули из базы данных
Для этого необходимо выполнить действие [Обновить клиентские модули из базы данных] на вкладке [Действия] боковой панели раздела [Конфигурация] (рис .1). После окончания обновления созданный модуль появится в локальной папке, указанной в настройках системы (см. п. 1 последовательности выгрузки клиентских модулей в файловую систему). Название модуля будет соответствовать шаблону [Название пакета].[Название модуля].js. Например, для замещающей схемы модели представления раздела [Контрагенты], созданной в пакете [Custom], название выгруженного в файловую систему модуля будет следующим: Custom.AccountSectionV2.js.
4. Добавить исходный код
В файл созданного и выгруженного в файловую систему модуля нужно добавить исходный код, реализующий необходимую пользовательскую функциональность. Работу с исходным кодом можно проводить как с помощью простейших текстовых редакторов, например, Notepad ++, так и с помощью интегрированных сред разработки, например, WebStorm.
Все изменения, внесенные в файл модуля, после сохранения будут сразу же отображаться системой. Для этого обычно достаточно только обновить страницу, а иногда и очистить кэш браузера. В отдельных случаях необходимо очистить связанную с приложением базу данных Redis.
ВАЖНО Не рекомендуется вносить изменения в схемы базовых пакетов. При работе через IDE эти изменения будут сохраняться в локальной папке, однако они не будут сохранены в базе данных. Более того, при обновлении клиентских модулей модули базовых пакетов обновляться не будут. В результате вы можете столкнуться с некорректной работой системы после завершения разработки и переходе на чтение клиентских модулей из базы данных. |
5. Загрузить измененные модули в базу данных
После завершения работ над исходными кодами необходимо зафиксировать все изменения в базе данных с помощью действия [Зафиксировать клиентские модули в базе данных] (рис. 1).
ВАЖНО Механизм разработки клиентских модулей в файловой системе, изложенный в данной статье, не связан с механизмом разработки с использованием SVN-системы. Если существует необходимость вести разработку с использованием SVN-системы, то сначала нужно загрузить измененные модули в базу данных, а затем, используя встроенные средства приложения, зафиксировать измененные пакеты в хранилище SVN. Подробнее о работе с хранилищем SVN изложено в статье "Как настроить хранилище SVN". |
Особенности разработки c учетом режима использования bundle-схем
Общие сведения
Bundle-схемой называется схема, позволяющая соединять вместе несколько схем для передачи их одним файлом в клиентскую часть приложения. Это позволяет ускорить загрузку страниц приложения за счет уменьшения количества запросов на сервер, а также за счет формирования асинхронных запросов на презагрузку схем. Схема является bundle-схемой, если в ее свойствах указан признак [Включить коды зависимых схем].
Bundle-схемы можно разделить на такие группы:
- Bundle-схема стартовой страницы ConfigurationBootstrap. Является общей для всех проектов. Загружается при входе в приложение. Влияет на скорость первого входа в систему.
- Bundle-схема базовых разделов и страниц SectionBundleModule. Является общей для всех проектов. Загружается асинхронно при входе в приложение. Не влияет на скорость первого входа в систему. Позволяет ускорить работу в пользовательских разделах.
- Расширенная базовая bundle-схема пользовательских разделов и страниц. Создается пользователем путем расширения базовой бандл-схемы SectionBundleModule. Загружается асинхронно при входе в приложение.
- Пользовательская bundle-схема пользовательских разделов и страниц. Создается пользователем, путем установки признака [Включить коды зависимых схем] для определенной схемы. Загружается в момент, определенный пользователем. При этом для большей эффективности пользователь должен убедиться, что выбранная им схема является базовой для раздела и включает в себя зависимости и от схем раздела, и от схем страниц раздела. Использование такой схемы позволит ускорить работу пользователя в пользовательских разделах и других частях системы
К СВЕДЕНИЮ В bundle-схему базовых разделов и страниц SectionBundleModule включены схемы разделов и страниц [Контакты], [Контрагенты], [Активности], [База знаний] и др. |
Режим использования bundle-схем
Включение режима использования bundle-схем регулируется ключом UseIncludeDependenciesSource, определенным в файле Web.config приложения, который размещен в каталоге Terrasoft.WebApp приложения.
По умолчанию режим использования bundle-схем включен:
<add key="UseIncludeDependenciesSource" value="true" />
При включенном режиме использования bundle-схем во время работы в файловой системе со схемой, входящей в bundle-схему, разработчик не увидит в приложении изменений, которые он внес, до тех пор, пока не перегенерирует заново bundle-схему. Для перегенерации bundle-схемы необходимо, например, пересохранить клиентскую схему из дизайнера клиентских схем приложения.
К СВЕДЕНИЮ Если схема не входит в bundle-схему, то изменения, внесенные в нее во время разработки в файловой системе, будут сразу же доступны в приложении вне зависимости от значения ключа UseIncludeDependenciesSource. |
Кроме неудобств, связанных с внесением изменений в приложение, включенный режим использования bundle-схем может затруднять отладку схем, входящих в bundle-схему.
Для эффективной разработки клиентских схем в файловой системе рекомендуется отключить режим использования bundle-схем:
<add key="UseIncludeDependenciesSource" value="false" />
При этом изменения, внесенные в разрабатываемые схемы, которые входят в bundle-схемы, будут сразу же отображены в приложении. Кроме того, поскольку схемы загружаются отдельными JavaScript-файлами, то значительно облегчается возможность их отладки.
ВАЖНО Отключение режима bundle-схем допускается только в среде разработки, поскольку это приводит к существенному увеличению количества HTTP-запросов и, следовательно, к уменьшению производительности приложения. В тестовой и тем более в промышленной средах режим bundle-схем должен быть обязательно включен. |