Бизнес-правила мобильного приложения
Glossary Item Box
Общие сведения
Бизнес-правила — это один из механизмов bpm'online, позволяющий настраивать поведение полей на странице редактирования записи. С их помощью можно, например, настроить обязательность и видимость полей, их доступность и т. п.
ВАЖНО
Бизнес-правила работают только на страницах редактирования и просмотра записей.
Добавление бизнес-правила на страницу выполняется с помощью метода Terrasoft.sdk.Model.addBusinessRule(name, config), где
- name — название модели, связанной со страницей редактирования, например, "Contact".
- config — объект, определяющий свойства бизнес-правила. Перечень свойств зависит от конкретного типа бизнес-правила.
Базовое бизнес-правило
Базовое бизнес-правило является абстрактным классом, т.е. все бизнес-правила должны быть его наследниками.
Свойства конфигурационного объекта config, которые могут быть использованы наследниками базового бизнес-правила:
- ruleType — тип правила. Значение должно входить в перечисление Terrasoft.RuleTypes.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
- message — текстовое сообщение, которое выводится под элементом управления, который связан с колонкой, в случае невыполнения бизнес-правила. Необходимо для правил,сообщающих пользователю предупреждающую информацию.
- name — уникальное имя бизнес-правила. Необходимо, если нужно удалить правило методами Terrasoft.sdk.
- position — позиция бизнес-правила, определяющая приоритет вызова правила в очереди текущих запускаемых правил.
- events — массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
Перечисление Terrasoft.BusinessRuleEvents содержит следующие значения:
- Тerrasoft.BusinessRuleEvents.Save — правило отработает перед сохранением данных.
- Terrasoft.BusinessRuleEvents.ValueChanged — правило отработает после изменения данных (при редактировании).
- Terrasoft.BusinessRuleEvents.Load — правило отработает при открытии страницы редактирования.
Бизнес-правило [Обязательность заполнения] (Terrasoft.RuleTypes.Requirement)
Определяет обязательность заполнения поля на странице редактирования. Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.Requirement.
- requireType — тип проверки. Значение должно входить в перечисление Terrasoft.RequirementTypes. Правило может проверять одну или все колонки из triggeredByColumns..
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила. Если тип проверки равен Terrasoft.RequirementTypes.Simple, то должна быть указана одна колонка в массиве.
Перечисление Terrasoft.RequirementTypes содержит следующие значения:
- Terrasoft.RequirementTypes.Simple — проверка значения в одной колонке.
- Terrasoft.RequirementTypes.OneOf — одна из колонок, указанных в triggeredByColumns должна быть обязательно заполнена.
Пример использования
Terrasoft.sdk.Model.addBusinessRule("Contact", { ruleType: Terrasoft.RuleTypes.Requirement, requireType : Terrasoft.RequirementTypes.OneOf, events: [Terrasoft.BusinessRuleEvents.Save], triggeredByColumns: ["HomeNumber", "BusinessNumber"], columnNames: ["HomeNumber", "BusinessNumber"] });
Бизнес-правило [Видимость] (Terrasoft.RuleTypes.Visibility)
С помощью этого бизнес-правила можно скрывать и отображать поля по определенному условию. Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.Visibility.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
- events — массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
- conditionalColumns — массив условий срабатывания бизнес-правила. Обычно это определенные значения колонок.
- dependentColumnNames — массив названий колонок, к которым применяется данное бизнес-правило.
Пример использования
Terrasoft.sdk.Model.addBusinessRule("Account", { ruleType: Terrasoft.RuleTypes.Visibility, conditionalColumns: [ {name: "Type", value: Terrasoft.Configuration.Consts.AccountTypePharmacy} ], triggeredByColumns: ["Type"], dependentColumnNames: ["IsRx", "IsOTC"] });
Поля, связанные с колонками IsRx и IsOTC будут отображены, если колонка Type будет содержать значение, определенное константой Terrasoft.Configuration.Consts.AccountTypePharmacy.
Terrasoft.Configuration.Consts = {
AccountTypePharmacy: "d12dc11d-8c74-46b7-9198-5a4385428f9a"
};
Вместо константы можно использовать значение 'd12dc11d-8c74-46b7-9198-5a4385428f9a'.
Бизнес-правило [Доступность] (Terrasoft.RuleTypes.Activation)
С помощью этого бизнес-правила можно делать поля недоступными (или наоборот — доступными) для ввода значений по определенному условию. Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.Activation.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
- events — массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
- conditionalColumns — массив условий срабатывания бизнес-правила. Обычно это определенные значения колонок.
- dependentColumnNames — массив названий колонок, к которым применяется данное бизнес-правило.
Пример использования
Доступность поля, связанного с колонкой Stock, зависит от значения в колонке IsPresence.
Terrasoft.sdk.Model.addBusinessRule("ActivitySKU", { ruleType: Terrasoft.RuleTypes.Activation, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], triggeredByColumns: ["IsPresence"], conditionalColumns: [ {name: "IsPresence", value: true} ], dependentColumnNames: ["Stock"] });
Бизнес-правило [Фильтрация] (Terrasoft.RuleTypes.Filtration)
Это бизнес-правило можно использовать для фильтрации значений справочных колонок по условию, либо по значению другой колонки. Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.Filtration.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
- events — массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
- filters — фильтр. Свойство должно содержать экземпляр класса Terrasoft.Filter.
- filteredColumn — колонка, на основании которой выполняется фильтрация значений.
Примеры использования
Пример фильтрации по условию
На детали [Продукты в счете] при выборе значения из справочной колонки [Продукт] доступны только те продукты, у которых колонка [Active] содержит значение true.
Terrasoft.sdk.Model.addBusinessRule("InvoiceProduct", { ruleType: Terrasoft.RuleTypes.Filtration, events: [Terrasoft.BusinessRuleEvents.Load], triggeredByColumns: ["Product"], filters: Ext.create("Terrasoft.Filter", { modelName: "Product", property: "Active", value: true }) });
Пример фильтрации по значению другой колонки
На странице редактирования записи раздела [Счета], поле [Контакт] должно фильтроваться на основании значения в поле [Контрагент].
Terrasoft.sdk.Model.addBusinessRule("Invoice", { ruleType: Terrasoft.RuleTypes.Filtration, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], triggeredByColumns: ["Account"], filteredColumn: "Contact", filters: Ext.create("Terrasoft.Filter", { property: "Account" }) });
Бизнес-правило [Взаимная фильтрация] (Terrasoft.RuleTypes.MutualFiltration)
Это бизнес-правило позволяет выполнять взаимную фильтрацию двух справочных полей. Работает только с колонками, связанными отношением "один-ко-многим", например, [Страна] — [Город]. Для каждой связки полей необходимо создавать свое бизнес-правило. Например, для связок [Страна] — [Область] — [Город] и [Страна] — [Город] необходимо создать три бизнес-правила:
- [Страна] — [Область];
- [Область] — [Город];
- [Страна] — [Город].
Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.MutualFiltration.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
- соnnections — массив объектов, конфигурирующих отношение связок.
Примеры использования
Взаимная фильтрация полей [Страна], [Область] и [Город].
Terrasoft.sdk.Model.addBusinessRule("ContactAddress", { ruleType: Terrasoft.RuleTypes.MutualFiltration, triggeredByColumns: ["City", "Region", "Country"], connections: [ { parent: "Country", child: "City" }, { parent: "Country", child: "Region" }, { parent: "Region", child: "City" } ] });
Взаимная фильтрация полей [Контакт], [Контрагент].
Terrasoft.sdk.Model.addBusinessRule("Activity", { ruleType: Terrasoft.RuleTypes.MutualFiltration, triggeredByColumns: ["Contact", "Account"], connections: [ { parent: "Contact", child: "Account", connectedBy: "PrimaryContact" } ] });
Бизнес-правило [Регулярное выражение] (Terrasoft.RuleTypes.RegExp)
Выполняет проверку соответствия значения колонки регулярному выражению. Используемые свойства конфигурационного объекта config:
- ruleType — для этого правила должно содержать значение Terrasoft.RuleTypes.RegExp.
- RegExp — регулярное выражение, на соответствие которому проверяются все колонки из массива triggeredByColumns.
- triggeredByColumns — массив колонок, инициирующих срабатывание бизнес-правила.
Пример использования
Terrasoft.sdk.Model.addBusinessRule("Contact", { ruleType: Terrasoft.RuleTypes.RegExp, regExp : /^([0-9\(\)\/\+ \-]*)$/ triggeredByColumns: ["HomeNumber", "BusinessNumber"] });