Как добавить пользовательский раздел в мобильное приложение
Glossary Item Box
Общие положения
Одной из типовых задач разработки является добавление пользовательского раздела в мобильное приложение bpm’online. Для реализации этой задачи необходимо использовать Мастер мобильного приложения. При помощи мастера можно не только добавить существующий раздел в необходимое рабочее место, но и предварительно настроить отображение реестра, страницы редактирования и деталей добавляемого раздела.
Результатом работы мастера мобильного приложения будет добавленный в текущий пользовательский пакет набор автоматически созданных системой клиентских модулей:
- Схема манифеста мобильного приложения — клиентский модуль, замещающий схему манифеста MobileApplicationManifestDefaultWorkplace, который описывает базовую версию мобильного приложения. Этот модуль является основным и, помимо других данных, содержит в секции Models массив названий остальных модулей — схем расширений страниц модели и утилит действий. Также здесь можно указать необходимые настройки синхронизации с основным приложением, например, состав колонок схемы модели, которые будут загружены в мобильное приложение, и фильтры, по которым будут синхронизироваться данные. Название схемы манифеста формируется по маске MobileApplicationManifest[Название рабочего места]. Так, например, для рабочего места [Полевые продажи] система сформирует название схемы манифеста MobileApplicationManifestFieldForceWorkspace, а для рабочего места [Основное рабочее место] — название MobileApplicationManifestDefaultWorkspace.
- Схема расширения страницы реестра — реализует дополнительные настройки для базовой страницы реестра. Здесь пользователь может выбрать, что будет отображаться в реестре добавляемого раздела мобильного приложения. Название этой схемы формируется по маске Mobile[Имя модели]GridPageSettings[Название рабочего места]. Например, для модели с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения страницы реестра: MobileBookGridPageSettingsFieldForceWorkspace.
- Схема расширения страницы редактирования — реализует дополнительные настройки для базовой страницы редактирования, например, какие именно колонки модели можно редактировать в мобильном приложении. Название этой схемы формируется по маске Mobile[Имя модели]RecordPageSettings[Название рабочего места]. Например, для модели с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения страницы реестра: MobileBookRecordPageSettingsFieldForceWorkspace.
- Схема расширения действий — реализует действия раздела. По умолчанию в мобильном приложении для страницы редактирования реализованы действия [Добавить], [Копировать] и [Удалить]. Для реестра раздела — только [Добавить]. Название этой схемы формируется по маске Mobile[Имя модели]ActionsSettings[Название рабочего места]. Например, для модели с названием Book пользовательского раздела [Книги] рабочего места [Полевые продажи], система сформирует название схемы расширения утилит действий раздела: MobileBookActionsSettingsFieldForceWorkspace.
При необходимости пользователь может добавлять в пакет и другие модули, в которых будут реализованы, например, дополнительные настройки раздела или модели (бизнес-правила, события, значения по умолчанию и т.д.).
Последовательность добавления раздела в мобильное приложение
- Создать (при необходимости) и настроить раздел в основном приложении bpm’online.
- Добавить существующий или созданный на предыдущем шаге пользовательский раздел в нужное рабочее место мобильного приложения при помощи мастера мобильного приложения. Настроить отображение реестра, страниц редактирования и деталей.
- Добавить дополнительные настройки и необходимую бизнес-логику.
Описание кейса
В мобильное приложение добавить пользовательский раздел [Заявки]. Схема модели заявки должна содержать, кроме колонок, унаследованных от базового объекта, колонку [Content] типа "Строка". В колонке [Content] необходимо хранить многострочный текст — содержимое заявки. Из всех заявок, содержащихся в базе данных основного приложения, мобильное приложение должно загружать только те заявки, которые создал текущий пользователь мобильного приложения. На странице раздела должны отображаться дата создания заявки и ее содержимое, отсортированные по убыванию даты создания.
К СВЕДЕНИЮ Загружать в мобильное приложение абсолютно все относящиеся к разделу данные нерационально, поскольку мобильные устройства имеют довольно ограниченные ресурсы памяти. Логичнее синхронизировать только данные, относящиеся к текущему пользователю. |
Алгоритм реализации кейса
1. Создать и настроить пользовательский раздел в приложении bpm’online
Для создания пользовательского раздела необходимо использовать мастер разделов. Для первоначальной настройки раздела на первом шаге мастера ("Раздел") в поле [Код раздела] необходимо ввести значение Claim, а в поле [Заголовок] — Заявка. На втором шаге мастера ("Страница") нужно добавить новую колонку, установив для нее следующие значения свойств: [Заголовок] — Содержимое, [Название] — Content, [Длина строки] — Строка неограниченной длины, [Многострочное] — Да (отметить галочкой). На третьем шаге мастера ("Реестр") для отображения на странице реестра, нужно добавить колонку "Содержимое".
После сохранения результатов настройки, система автоматически создаcт все необходимые схемы объектов и страниц в текущем пользовательском пакете. После этого можно изменить заголовок раздела на "Заявки", открыв мастер разделов повторно.
К СВЕДЕНИЮ
|
2. Добавить раздел в рабочее место мобильного приложения при помощи мастера мобильного приложения
Для добавления пользовательского раздела [Заявки] в мобильное приложение необходимо использовать мастер мобильного приложения. В мастере следует открыть рабочее место, например, "Основное рабочее место", в которое будет добавлен раздел, и последовательно нажать кнопки [Настроить разделы] и [Добавить]. В появившемся окне из списка разделов выбрать "Заявки" и нажать кнопку [Выбрать]. Затем нажать кнопку [Сохранить].
После этого для выбранного раздела [Заявки] необходимо выполнить настройку реестра. Для этого необходимо перейти на страницу редактирования реестра, нажав кнопку [Настроить реестр]. По умолчанию единственной отображаемой в реестре колонкой является колонка "Название". Ее необходимо удалить и добавить две существующие колонки "Дата создания" и "Содержимое" (рис. 1). Затем сохранить изменения.
Рис. 1. — Настройка реестра в мастере мобильного приложения
Завершающим шагом настройки раздела описываемого кейса является настройка страницы редактирования заявки. Для этого необходимо, выбрав раздел [Заявки] в мастере мобильного приложения, нажать кнопку [Настроить страницу]. Затем добавить две колонки "Дата создания" и "Содержимое" (рис. 2) и сохранить изменения.
К СВЕДЕНИЮ В реестр мобильного приложения (рис. 1) с помощью мастера можно добавить не более двух колонок, т.к. по умолчанию на странице реестра мобильного приложения отображаются только две колонки — первичная и вторичная. |
Рис. 2. — Настройка страницы редактирования в мастере мобильного приложения
Результатом работы мастера будет готовое к работе мобильное приложение (рис. 3). Для быстрого просмотра результатов можно воспользоваться возможностью отладки мобильного приложения в браузере.
Рис. 3. — Раздел "[Заявки] в мобильном приложении
На этом этапе мобильное приложение уже может функционировать и дальнейшие действия не являются обязательными. Однако нетрудно заметить и существенные недостатки. Так, при синхронизации с основным приложением загружаются данные, относящиеся ко всем пользователям, а не только к текущему. В реестре раздела данные сортируются по уникальному идентификатору, а не по дате создания. Колонка даты создания отображается в трудночитаемом формате. Кроме того, на странице редактирования заявки поле ввода содержимого является однострочным (рис. 4), а поле "Дата создания" позволяет изменение существующей даты создания заявки. Поэтому для удобства пользователя необходимо произвести дополнительные настройки отображения и синхронизации, а также добавить необходимую бизнес-логику.
Рис. 4. — Страница редактирования заявки в мобильном приложении
3. Добавить дополнительные настройки и необходимую бизнес-логику
Для того чтобы добавить в приложение дополнительные настройки для раздела [Заявки] необходимо создать новый модуль, в котором указать все нужные дополнительные изменения. Рекомендуется название этого модуля формировать по маске Mobile[Название раздела]ModuleConfig[Название рабочего места]. Например для того чтобы в разделе [Заявки] установить сортировку на странице реестра по убыванию даты создания заявок, преобразовать формат даты и сделать поле ввода для колонки "Содержимое" на странице редактирования заявки многострочным, а поле ввода даты создания заявки только для чтения, необходимо сделать следующее. В пользовательском пакете создать новый модуль с названием MobileClaimModuleConfigDefaultWorkplace. Для созданного модуля установить заголовок, например, "Мобильная настройка раздела заявок в основном рабочем месте". Затем добавить в модуль следующий исходный код:
// Сортировка реестра раздела [Заявки]. Terrasoft.sdk.GridPage.setOrderByColumns("Claim", { // Сортировка по колонке даты создания. column: "CreatedOn", // Сортировка в порядке убывания. orderType: Terrasoft.OrderTypes.DESC }); // Установка свойств для колонки [Дата создания] на странице редактирования заявки. Terrasoft.sdk.RecordPage.configureColumn("Claim", "primaryColumnSet", "CreatedOn", { // Поле редактирования только для чтения. readOnly: true }); // Установка свойств для колонки [Содержимое] на странице редактирования заявки. Terrasoft.sdk.RecordPage.configureColumn("Claim", "primaryColumnSet", "Content", { // Поле редактирования многострочное. isMultiline: true }); // Установка свойств для первичной колонки реестра раздела. Terrasoft.sdk.GridPage.setPrimaryColumn("Claim", { // Колонки схемы "Заявка", отображаемые в первичной колонке реестра. columns: ["CreatedOn"], // Функция конвертации даты в нужный формат. convertFunction: function(values) { // Нужный фомат даты. var format = "d.m.y H:i"; // Чтение даты создания. var CreatedOn = new Date(values.CreatedOn); // Возврат даты создания в нужном формате. return Ext.Date.format(CreatedOn, format); } });
Завершающим этапом внесения дополнительных настроек в мобильное приложение является редактирование схемы манифеста, которая хранится в автоматически созданном системой клиентском модуле с названием MobileApplicationManifestDefaultWorkplace. Подробнее со структурой манифеста и описанием параметров его секций можно ознакомиться в статье "Манифест мобильного приложения".
Для того чтобы дополнительные настройки раздела и модели вступили в силу, необходимо зарегистрировать созданные модули в секции "Models" схемы манифеста при помощи атрибута "PagesExtensions".
Условия фильтрации данных при синхронизации с основным приложением указываются в секции манифеста "ModelDataImportConfig" в атрибуте"SyncFilter", а перечень моделей, для которых будут загружаться данные, приводится в свойстве "SyncColumns".
Результирующий исходный код модуля схемы манифеста:
{ "SyncOptions": { "SysSettingsImportConfig": [], // Импортировать данные. "ModelDataImportConfig": [ { // Импортировать заявку. "Name": "Claim", // Фильтр синхронизации. "SyncFilter": { // Отфильтровать по колонке [Создал]. "property": "CreatedBy", "valueIsMacros": true, // Сравнить с контактом текущего пользователя. "value": "Terrasoft.ValueMacros.CurrentUserContact" }, // Колонки, которые будут синхронизированы. "SyncColumns": [ "Name", "Content", "CreatedBy", "CreatedOn" ] }, { // Импортировать контакт, поскольку он используется в фильтре. "Name": "Contact", // Кроме колонки Id ничего не импортировать. "SyncColumns": [] } ] }, "Modules": { "Claim": { "Group": "main", "Model": "Claim", "Position": 0, "isStartPage": false, "Title": "ClaimSectionTitle", "Hidden": false } }, "Models": { "Claim": { // Требуемые модели. "RequiredModels": [ "Claim", "Contact" ], "ModelExtensions": [], // Расширения страниц. "PagesExtensions": [ // Добавлены автоматически мастером мобильных приложений. // Схема расширения утилит действий. "MobileClaimActionsSettingsDefaultWorkplace", // Схема расширения страницы реестра. "MobileClaimGridPageSettingsDefaultWorkplace", // Схема расширения страницы редактирования. "MobileClaimRecordPageSettingsDefaultWorkplace", // Необходимо добавить вручную. // Мобильная настройка раздела заявок в основном рабочем месте. "MobileClaimModuleConfigDefaultWorkplace" ] } } }
В результате во время работы мобильного приложения на странице реестра раздела отображаются заявки только текущего пользователя, отсортированные по убыванию времени создания (рис. 5). Также на странице редактирования заявки заблокирована возможность изменения номера заявки, а поле ввода содержимого позволяет вводить и отображать многострочный текст (рис. 6).
Рис. 5 — Раздел [Заявки] в мобильном приложении с отфильтрованными, отсортированными и отформатированными данными
Рис. 6. — Страница редактирования заявки в мобильном приложении с заблокированной возможностью редактирования даты создания заявки и многострочным содержимым