Страница редактирования с указанным набором колонок
Glossary Item Box
ВАЖНО Эта статья актуальна для bpm'online версии 7.11.2 и выше, а также для мобильного приложения версии 7.11.4 и выше. |
Общие сведения
Часто возникает необходимость открыть страницу редактирования записи раздела с одной или несколькими колонками. Например, в разделе [Обращения] ([Cases]) после выполнения действия [Эскалировать] ([Escalate]) должна открыться страница редактирования со следующими колонками: [Уровень поддержки] ([Support line]), [Ответственный] ([Assignee]) и [Группа ответственных] [(Assignee group)]. Пример такой страницы web-приложения bpm'online приведен на рис. 1.
Рис. 1. — Страница эскалации обращения
Для реализации такой страницы в мобильном приложении был добавлен класс контроллера Terrasoft.configuration.controller.EditPage. Класс позволяет создать страницу, колонки и бизнес-правила которой формируются не на основе настроек модели, не средствами SDK, а на основе конфигурационного объекта, определенного в свойстве config класса.
Пример
Например, в мобильном приложении необходимо создать страницу эскалации со следующими колонками: [Уровень поддержки] ([Support line]), [Ответственный] ([Assignee]) и [Группа ответственных] [(Assignee group)].
Для этого нужно создать (например, в схеме UsrCaseEditPage) класс контроллера, унаследованного от Terrasoft.configuration.controller.EditPage. Исходный код такого класса приведен ниже:
Ext.define("Terrasoft.configuration.controller.CaseEscalationPage", { extend: "Terrasoft.configuration.controller.EditPage", config: { refs: { view: "#CaseEscalationPage" }, businessRuleConfigs: [ { name: "CaseEscalationOwnerOrGroupRequirementRule", ruleType: Terrasoft.RuleTypes.Requirement, requireType: Terrasoft.RequirementTypes.OneOf, events: [Terrasoft.BusinessRuleEvents.Save, Terrasoft.BusinessRuleEvents.ValueChanged], triggeredByColumns: ["Owner", "Group"] } ], columnConfigs: [ { name: "SupportLevel" }, { name: "Owner", customEditConfig: { required: true } }, { name: "Group", customEditConfig: { required: true } } ] }, statics: { Model: Case } });
Конфигурационное свойство businessRuleConfigs принимает массив настроек бизнес-правил. Настройка соответствует вызову метода SDK:
Terrasoft.sdk.Model.addBusinessRule("Case", businessRuleConfig);
Конфигурационное свойство columnConfigs принимает массив настроек колонок. Настройка соответствует вызову метода SDK:
Terrasoft.sdk.RecordPage.addColumn("Case", columnConfig);
Контроллер поддерживает еще одно конфигурационное свойство — useModelBusinessRules. Свойство определяет, будут ли использоваться бизнес-правила из модели, настроенные с помощью SDK.
После этого необходимо создать класс представления и добавить страницу в кэш:
Ext.define("Terrasoft.configuration.view.CaseEscalationPage", { extend: "Terrasoft.view.BaseEditPage", config: { id: "CaseEscalationPage" } }); Terrasoft.PageCache.addItem("CaseEscalationPage", { controllerName: "Terrasoft.configuration.controller.CaseEscalationPage", pageSchemaName: "CaseEscalationPage", viewXClass: "Terrasoft.configuration.view.CaseEscalationPage" });
К СВЕДЕНИЮ Весь приведенный выше программный код можно разместить в одной схеме модуля, например, в схеме UsrCaseEditPage. |
Чтобы открыть страницу, необходимо в обработчик любого события (например, нажатия на кнопку, выполнения действия и т. п.) добавить следующий код:
Terrasoft.util.openCachedPage("CaseEscalationPage", { recordId: "0fa67d76-8cc2-4e5b-bd3e-36d16741b06a" });
Здесь recordId — идентификатор открываемой в странице записи раздела. В данном случае это значение колонки Id объекта Case.
В результате в мобильном приложении будет открыта страница с указанным набором колонок (рис. 2 ).
Рис. 2. — Страница с указанным набором колонок