Как добавить пользовательский раздел в мобильное приложение
Glossary Item Box
Общие положения
Одной из типовых задач разработки является добавление пользовательского раздела в мобильное приложение bpm’online. Для реализации этой задачи необходимо использовать Мастер мобильного приложения. При помощи мастера можно не только добавить существующий раздел в необходимое рабочее место, но и предварительно настроить отображение реестра, страницы редактирования и деталей добавляемого раздела.
Результатом работы мастера мобильного приложения будет добавленный в текущий пользовательский пакет набор автоматически созданных системой клиентских модулей:
- Схема манифеста мобильного приложения — схема, расширяющая схему манифеста MobileApplicationManifestDefaultWorkplace пакета Mobile, который описывает базовую версию мобильного приложения. Этот модуль является основным и, помимо других данных, содержит в секции Models массив названий остальных модулей — схем расширений страниц модели и утилит действий. Также здесь можно указать необходимые настройки синхронизации с основным приложением. Например, состав колонок схемы модели, которые будут загружены в мобильное приложение, и фильтры, по которым будут синхронизироваться данные. Название схемы манифеста формируется по маске MobileApplicationManifest[Название рабочего места]. Так, например, для рабочего места [Полевые продажи] ([FieldForce]) система сформирует название схемы манифеста MobileApplicationManifestFieldForceWorkplace, а для рабочего места [Основное рабочее место] ([DefaultWorkplace]) — название MobileApplicationManifestDefaultWorkplace.
К СВЕДЕНИЮ Для упрощения под моделью следует понимать объект, например, основной объект раздела. |
- Схема расширения страницы реестра — реализует дополнительные настройки для базовой страницы реестра. Здесь пользователь может выбрать, что будет отображаться в реестре добавляемого раздела мобильного приложения. Название этой схемы формируется по маске Mobile[Имя модели]GridPageSettings[Название рабочего места]. Например, для объекта с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения страницы реестра: MobileBookGridPageSettingsFieldForceWorkplace.
К СВЕДЕНИЮ К названию созданной мастером схемы также добавляется префикс, указанный в системной настройке [Префикс названия объекта] ([Prefix for object name]). |
- Схема расширения страницы редактирования — реализует дополнительные настройки для базовой страницы редактирования, например, какие именно колонки модели можно редактировать в мобильном приложении. Название этой схемы формируется по маске Mobile[Имя модели]RecordPageSettings[Название рабочего места]. Например, для модели с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения страницы редактирования: MobileBookRecordPageSettingsFieldForceWorkplace.
- Схема расширения действий — реализует действия раздела. По умолчанию в мобильном приложении для страницы редактирования реализованы действия [Добавить], [Копировать] и [Удалить]. Для реестра раздела — только [Добавить]. Название этой схемы формируется по маске Mobile[Имя модели]ActionsSettings[Название рабочего места]. Например, для модели с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения утилит действий раздела: MobileBookActionsSettingsFieldForceWorkplace.
При необходимости пользователь может добавлять в пакет и другие модули, в которых будут реализованы, например, дополнительные настройки раздела или модели (бизнес-правила, события, значения по умолчанию и т.д.).
Общая последовательность добавления раздела в мобильное приложение
- Создать (при необходимости) и настроить раздел в основном приложении bpm’online.
- Добавить пользовательский раздел в нужное рабочее место мобильного приложения при помощи мастера мобильного приложения. Настроить отображение реестра, страниц редактирования и деталей.
- Добавить дополнительные настройки.
Описание кейса
В мобильное приложение добавить пользовательский раздел [Заявки] ([Claims]) со следующими характеристиками:
1. Схема объекта заявки должна содержать, кроме колонок, унаследованных от базового объекта, колонку [Содержимое] ([Content]) строчного типа (String). В колонке [Содержимое] ([Content]) необходимо хранить многострочный текст — содержимое заявки.
2. Из всех заявок, содержащихся в базе данных основного приложения, мобильное приложение должно загружать только заявки, созданные текущим пользователем. При этом следует учитывать режим работы приложения — online или offline.
3. На странице реестра раздела в мобильном приложении должны отображаться заголовки с темами заявок и даты создания заявок. На странице редактирования записи — заголовок, дата создания и содержимое заявки. При этом поле даты создания должно быть заблокировано для редактирования, а поле содержимого должно быть многострочным.
К СВЕДЕНИЮ Загрузка абсолютно всех данных раздела в мобильное приложение нерациональна, так как у мобильных устройств ограничены ресурсы памяти. Рекомендуется синхронизировать только данные, относящиеся к текущему пользователю. |
Алгоритм реализации кейса
1. Создать и настроить пользовательский раздел в приложении bpm’online
Чтобы создать пользовательский раздел, необходимо использовать мастер разделов.
ВАЖНО Если созданный раздел необходимо будет перенести на другое приложение, то необходимо:
В противном случае мастер создаст схемы и привязки данных в пакете [Custom], что приведет к возникновению проблем с переносом раздела. |
На первом шаге мастера "Раздел" ("Section") в поле [Код раздела] ([Code]) необходимо ввести значение "UsrClaim", а в поле [Заголовок] ([Title]) — "Заявки" ("Claims") (рис. 1).
Рис. 1. — Настройка свойств раздела
На втором шаге мастера "Страница" ("Page") нужно переименовать существующую колонку UsrName и добавить новую. Для колонок необходимо установить следующие свойства:
Заголовок (Title) | Название в БД (Name in DB) | Тип |
---|---|---|
Заголовок (Title) | UsrName | String |
Содержимое (Content) | UsrContent | String, Многострочное (Multi-string text) |
Размещение колонок на странице раздела в мастере показано на рис. 2.
Рис. 2. — Размещение колонок на странице раздела
После сохранения результатов настройки система автоматически создаст все необходимые схемы объектов и страниц в текущем пользовательском пакете. Чтобы раздел отобразился в рабочем месте, необходимо выполнить повторный вход в систему.
Для проверки синхронизации с мобильным приложением в раздел необходимо добавить несколько записей от имени разных пользователей (рис 3).
Рис. 3. — Записи раздела
2. Добавить раздел в рабочее место мобильного приложения при помощи мастера мобильного приложения
Для добавления пользовательского раздела [Заявки] ([Claims]) в мобильное приложение необходимо использовать мастер мобильного приложения. В мастере следует открыть рабочее место, например, [Основное рабочее место] ([Main workplace]), в которое будет добавлен раздел.
Затем необходимо последовательно нажать кнопки [Настроить разделы] ([Set up sections]) (рис. 4) и [Добавить] ([New]) (рис. 5).
Рис. 4. — Настройка рабочего места
Рис. 5. — Настройка разделов
В появившемся окне из списка разделов выбрать "Заявки" ("Claims") и нажать кнопку [Выбрать] ([Select]) (рис. 5). Затем нажать кнопку [Сохранить] ([Save]) (рис. 6).
Рис. 6. — Добавление раздела в рабочее место
Для выбранного раздела [Заявки] ([Claims]) необходимо выполнить настройку реестра. Для этого нужно перейти на страницу редактирования реестра, нажав кнопку [Настроить реестр] ([List setup]).
Рис. 7. — Действия выбранной записи
По умолчанию единственной отображаемой в реестре колонкой является колонка [Заголовок] ([Title]). Необходимо добавить колонку [Дата создания] ([Created on]) и сохранить изменения (рис. 8).
Рис. 8. — Настройка реестра мобильного приложения
К СВЕДЕНИЮ В реестр мобильного приложения (рис. 8) с помощью мастера можно добавить не более двух колонок, т.к. по умолчанию на странице реестра мобильного приложения отображаются только две колонки — первичная и вторичная. |
Завершающим шагом добавления пользовательского раздела в рабочее место мобильного приложения является настройка страницы редактирования заявки. Для этого необходимо:
1. Выбрав раздел [Заявки] ([Claims]) в мастере мобильного приложения, нажать кнопку [Настроить страницу] [Page setup] (рис. 7).
2. Добавить две колонки [Дата создания] ([Created on]) и [Содержимое] ([Contents]) (рис. 9)
3. Сохранить изменения.
Рис. 9. — Настройка страницы редактирования заявки
В результате работы мастера новый раздел [Заявки] ([Claims]) отобразится в рабочем месте мобильного приложения (рис. 10).
Рис. 10. — Раздел [Заявки] ([Claims]) в мобильном приложении
На этом этапе раздел в мобильном приложении уже полностью функционален. Но независимо от режима работы (online или offline) приложение загружает данные, относящиеся ко всем пользователям, а не только к текущему. Кроме того, на странице редактирования заявки поле ввода содержимого является однострочным, а поле [Дата создания] ([Created on]) позволяет изменение существующей даты создания заявки (рис. 11).
Рис. 11. — Страница редактирования заявки в мобильном приложении
3. Фильтрация синхронизируемых данных в режиме работы приложения offline
К СВЕДЕНИЮ Чтобы перевести мобильное приложение в режим offline или online, необходимо в основном приложении установить соответствующее значение для системной настройки [Режим работы мобильного приложения] ([Mobile application operation mode]). По умолчанию для нового пользователя установлен режим работы приложения online. |
Чтобы в режиме работы offline во время синхронизации с основным приложением загружались только данные, относящиеся к текущему пользователю, необходимо внести следующие изменения в схему манифеста:
1. В массиве свойства ModelDataImportConfig изменить конфигурационный объект настройки импорта данных, относящихся к объекту UsrClaim. Необходимо добавить соответствующий конфигурационный объект в свойство SyncFilter и добавить колонку CreatedBy в массив свойства SyncColumns.
{ "SyncOptions": { ... "ModelDataImportConfig": [ { "Name": "UsrClaim", "SyncFilter": { "property": "CreatedBy", "valueIsMacros": true, "value": "Terrasoft.ValueMacros.CurrentUserContact" }, "SyncColumns": [ "UsrName", "CreatedOn", "UsrContent", "CreatedBy" ] }, ... ] }, ... }
2. В массив свойства ModelDataImportConfig добавить конфигурационный объект настройки импорта данных для модели (объекта) Contact. Поскольку для фильтрации данных достаточно колонки Id, то массив свойства SyncColumns следует оставить пустым.
{ "SyncOptions": { ... "ModelDataImportConfig": [ ... { "Name": "Contact", "SyncColumns": [] } ] }, ... }
3. В массив RequiredModels конфигурационного объекта модели UsrClaim необходимо добавить требуемую для фильтрации модель Contact. Она нужна, поскольку колонка CreatedBy объекта UsrClaim содержит идентификатор контакта.
{ ... "Models": { "UsrClaim": { "RequiredModels": [ "UsrClaim", "SocialMessage", "Contact" ], ... } }
В результате во время работы мобильного приложения в режиме offline на странице реестра раздела будут отображаются только заявки текущего пользователя (рис. 12).
Рис. 12. — Отображение заявок пользователя User1 в режиме оffline
4. Фильтрация синхронизируемых данных в режиме работы приложения online
Чтобы при работе с приложением в режиме online пользователь видел в разделе только собственные заявки, необходимо:
1. Cоздать новый модуль, в котором реализовать дополнительные настройки для раздела [Заявки] ([Claims]). Рекомендуется название этого модуля формировать по маске [Префикс названия объекта]Mobile[Название объекта раздела]ModuleConfig[Название рабочего места]. Для раздела [Заявки] ([Claims]) рекомендуемое название модуля — UsrMobileUsrClaimModuleConfigDefaultWorkplace. Как создать клиентский модуль подробно описано в статье "Создание клиентской схемы".
2. В созданный модуль добавить следующий исходный код:
// Добавление фильтра для модели UsrClaim. Terrasoft.sdk.Module.addFilter("UsrClaim", Ext.create("Terrasoft.Filter", { // Название фильтра. name: "UsrClaimCustomFilter", // Свойство модели, по которому выполнять операцию сравнения записи. property: "CreatedBy", // Является ли значение сравнения макросом? valueIsMacros: true, // Значение для сравнения со свойством модели. value: "Terrasoft.ValueMacros.CurrentUserContact" }));
3. Зарегистрировать модуль в схеме манифеста, добавив его название в массив PagesExtensions:
{ ... "Models": { "UsrClaim": { ... "PagesExtensions": [ "UsrMobileUsrClaimActionsSettingsDefaultWorkplace", "UsrMobileUsrClaimGridPageSettingsDefaultWorkplace", "UsrMobileUsrClaimRecordPageSettingsDefaultWorkplace", "UsrMobileUsrClaimModuleConfigDefaultWorkplace" ] }, ... } }
В результате во время работы мобильного приложения в режиме online на странице реестра раздела будут отображаются заявки только текущего пользователя (рис. 13).
Рис. 13. — Отображение заявок пользователя User2 в режиме оnline
5. Добавить дополнительные настройки
5.1 Добавить сортировку в реестре раздела
Чтобы отсортировать записи пользовательского раздела по возрастанию даты создания, необходимо в модуль UsrMobileUsrClaimModuleConfigDefaultWorkplace, созданный на предыдущем шаге, добавить следующий исходный код:
... // Сортировка реестра раздела. Terrasoft.sdk.GridPage.setOrderByColumns("UsrClaim", { // Сортировка по колонке даты создания. column: "CreatedOn", // Сортировка в порядке возрастания. orderType: Terrasoft.OrderTypes.ASC });
В результате записи будут отображаться в порядке возрастания даты создания (рис. 14)
Рис. 14. — Отображение заявок пользователя User2 в порядке возрастания даты создания
5.2 Изменить поле страницы редактирования на многострочное
Чтобы сделать поле ввода [Содержимое] ([Content]) на странице редактирования заявки многострочным, необходимо в модуль UsrMobileUsrClaimModuleConfigDefaultWorkplace, созданный на шаге 4, добавить следующий исходный код:
// Установка свойств для колонки [Содержимое] на странице редактирования заявки. Terrasoft.sdk.RecordPage.configureColumn("UsrClaim", "primaryColumnSet", "UsrContent", { // Поле редактирования многострочное. isMultiline: true });
5.3 Заблокировать поле страницы редактирования
Чтобы сделать поле ввода даты создания заявки доступным только для чтения, необходимо в модуль UsrMobileUsrClaimModuleConfigDefaultWorkplace, созданный на шаге 4, добавить следующий исходный код:
// Установка свойств для колонки [Дата создания] на странице редактирования заявки. Terrasoft.sdk.RecordPage.configureColumn("UsrClaim", "primaryColumnSet", "CreatedOn", { // Поле редактирования только для чтения. readOnly: true });
В результате во время работы мобильного приложения на странице редактирования заявки будет заблокирована возможность изменения даты создания заявки, а поле ввода содержимого позволяет вводить и отображать многострочный текст (рис. 15).
Рис. 15. — Модифицированная страница редактирования заявки