Creatio development guide
Это документация Creatio версии 7.11.0. Мы рекомендуем использовать новую версию документации.

Как добавить пользовательский раздел в мобильное приложение

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.

При необходимости пользователь может добавлять в пакет и другие модули, в которых будут реализованы, например, дополнительные настройки раздела или модели (бизнес-правила, события, значения по умолчанию и т.д.).

Общая последовательность добавления раздела в мобильное приложение

  1. Создать (при необходимости) и настроить раздел в основном приложении bpm’online.
  2. Добавить пользовательский раздел в нужное рабочее место мобильного приложения при помощи мастера мобильного приложения. Настроить отображение реестра, страниц редактирования и деталей.
  3. Добавить дополнительные настройки.

Описание кейса

В мобильное приложение добавить пользовательский раздел [Заявки] ([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. — Модифицированная страница редактирования заявки

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?