Бизнес-правила — это один из механизмов Creatio, позволяющий настраивать поведение полей на странице записи. С их помощью можно, например, настроить обязательность и видимость полей, их доступность и т. п.
Добавление бизнес-правила на страницу выполняется с помощью метода Terrasoft.sdk.Model.addBusinessRule(name, config), где
- name — название модели, связанной со страницей записи, например, "Contact".
- config — объект, определяющий свойства бизнес-правила. Перечень свойств зависит от конкретного типа бизнес-правила.
В мобильном приложении существует возможность добавлять бизнес-правило, реализующее пользовательскую логику — пользовательское бизнес-правило. Для такого бизнес-правила предусмотрен тип Terrasoft.RuleTypes.Custom.
Базовые бизнес-правила
Базовое бизнес-правило является абстрактным классом, т.е. все бизнес-правила должны быть его наследниками.
Свойства конфигурационного объекта config могут быть использованы наследниками базового бизнес-правила.
Свойства конфигурационного объекта config
Тип правила. Значение должно входить в перечисление Terrasoft.RuleTypes.
Массив колонок, инициирующих срабатывание бизнес-правила.
Текстовое сообщение, которое выводится под элементом управления, который связан с колонкой, в случае невыполнения бизнес-правила. Необходимо для правил, сообщающих пользователю предупреждающую информацию.
Уникальное имя бизнес-правила. Необходимо, если нужно удалить правило методами Terrasoft.sdk.
Позиция бизнес-правила, определяющая приоритет вызова правила в очереди текущих запускаемых правил.
Массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
Save | Правило отработает перед сохранением данных. |
ValueChanged | Правило отработает после изменения данных (при редактировании). |
Load | Правило отработает при открытии страницы записи. |
Бизнес-правило Обязательность заполнения (Terrasoft.RuleTypes.Requirement)
Определяет обязательность заполнения поля на странице записи.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.Requirement.
Тип проверки. Значение должно входить в перечисление Terrasoft.RequirementTypes. Правило может проверять одну или все колонки из triggeredByColumns.
Массив колонок, инициирующих срабатывание бизнес-правила. Если тип проверки равен Terrasoft.RequirementTypes.Simple, то должна быть указана одна колонка в массиве.
Simple | Проверка значения в одной колонке. |
OneOf | Одна из колонок, указанных в triggeredByColumns должна быть обязательно заполнена. |
Бизнес-правило Видимость (Terrasoft.RuleTypes.Visibility)
С помощью этого бизнес-правила можно скрывать и отображать поля по определенному условию.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.Visibility.
Массив колонок, инициирующих срабатывание бизнес-правила.
Массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
Массив условий срабатывания бизнес-правила. Обычно это определенные значения колонок.
Массив названий колонок, к которым применяется данное бизнес-правило.
Поля, связанные с колонками IsRx и IsOTC будут отображены, если колонка Type будет содержать значение, определенное константой Terrasoft.Configuration.Consts.AccountTypePharmacy.
Вместо константы можно использовать значение "d12dc11d-8c74-46b7-9198-5a4385428f9a".
Бизнес-правило Доступность (Terrasoft.RuleTypes.Activation)
С помощью этого бизнес-правила можно делать поля недоступными (или наоборот — доступными) для ввода значений по определенному условию.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.Activation.
Массив колонок, инициирующих срабатывание бизнес-правила.
Массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
Массив условий срабатывания бизнес-правила. Обычно это определенные значения колонок.
Массив названий колонок, к которым применяется данное бизнес-правило.
Доступность поля, связанного с колонкой Stock, зависит от значения в колонке IsPresence.
Бизнес-правило Фильтрация (Terrasoft.RuleTypes.Filtration)
Это бизнес-правило можно использовать для фильтрации значений справочных колонок по условию, либо по значению другой колонки.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.Filtration.
Массив колонок, инициирующих срабатывание бизнес-правила.
Массив событий, определяющий время запуска бизнес-правил. Должен содержать значения, входящие в перечисление Terrasoft.BusinessRuleEvents.
Фильтр. Свойство должно содержать экземпляр класса Terrasoft.Filter.
Колонка, на основании которой выполняется фильтрация значений.
Бизнес-правило Взаимная фильтрация (Terrasoft.RuleTypes.MutualFiltration)
Это бизнес-правило позволяет выполнять взаимную фильтрацию двух справочных полей. Работает только с колонками, связанными отношением "один-ко-многим", например, Страна — Город. Для каждой связки полей необходимо создавать свое бизнес-правило. Например, для связок Страна — Область — Город и Страна — Город необходимо создать три бизнес-правила:
- Страна — Область;
- Область — Город;
- Страна — Город.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.MutualFiltration.
Массив колонок, инициирующих срабатывание бизнес-правила.
Массив объектов, конфигурирующих отношение связок.
Бизнес-правило Регулярное выражение (Terrasoft.RuleTypes.RegExp)
Выполняет проверку соответствия значения колонки регулярному выражению.
Свойства конфигурационного объекта config
Для этого правила должно содержать значение Terrasoft.RuleTypes.RegExp.
Регулярное выражение, на соответствие которому проверяются все колонки из массива triggeredByColumns.
Массив колонок, инициирующих срабатывание бизнес-правила.
Пользовательские бизнес-правила
При добавлении пользовательского бизнес-правила с помощью метода Terrasoft.sdk.Model.addBusinessRule(name, config) можно использовать свойства конфигурационного объекта config базового бизнес-правила. Также дополнительно предусмотрено свойство executeFn.
Свойства конфигурационного объекта config
Тип правила. Для пользовательских правил должно содержать значение Terrasoft.RuleTypes.Custom.
Массив колонок, инициирующих срабатывание бизнес-правила.
Массив событий, определяющий время запуска бизнес-правил. Должен содержать значения из перечисления Terrasoft.BusinessRuleEvents. Значение по умолчанию: Terrasoft.BusinessRuleEvents.ValueChanged.
Save | Правило сработает перед сохранением данных. |
ValueChanged | Правило сработает после изменения данных (при редактировании). |
Load | Правило сработает при открытии страницы записи. |
Функция-обработчик, содержащая пользовательскую логику выполнения бизнес-правила.
Свойства функции-обработчика executeFn
Функция-обработчик объявляется в свойстве executeFn.
record | Запись, для которой выполняется бизнес-правило. |
rule | Экземпляр текущего бизнес-правила. |
checkColumnName | Название колонки, которая вызвала срабатывание бизнес-правила. |
customData | Объект, разделяемый между всем правилами. Не используется. Оставлен для совместимости с предыдущими версиями. |
callbackConfig | Конфигурационный объект асинхронного возврата Ext.callback. |
event | Событие, по которому было запущено бизнес-правило. |
При завершении работы функции необходимо обязательно вызвать или callbackConfig.success , или callbackConfig.failure.
Где:
- result — возвращаемое логическое значение, полученное при выполнении функции (true/false).
- exception — исключение типа Terrasoft.Exception, возникшее в функции-обработчике.
Методы
Для получения значения колонки записи. Аргумент columnName должен содержать название колонки.
Для установки значения колонки записи.
columnName | Название колонки. |
value | Значение, присваиваемое колонке. |
fireEventConfig | Конфигурационный объект для установки свойств, передаваемых в событие изменения колонки. |
Для изменения свойств колонки, кроме ее значения. Аргумент columnName должен содержать название колонки, а propertyConfig — объект, устанавливающий свойства колонки.
disabled | Активность колонки. Если true, то элемент управления, связанный с колонкой, будет неактивным и закрытым для работы. |
readOnly | Признак "только для чтения". Если true, то элемент управления, связанный с колонкой, будет доступен только для чтения. Если false— для чтения и записи. |
hidden | Видимость колонки. Если true, то элемент управления, связанный с колонкой, будет скрыт. Если false — отображен. |
addFilter | Добавить фильтр. Если свойство указано, то в нем должен быть указан фильтр типа Terrasoft.Filter, который будет добавлен к фильтрации колонки. Свойство используется только для справочных полей. |
removeFilter | Удалить фильтр. Если свойство указано, то в нем должно быть указано имя фильтра, который будет удален из фильтрации колонки. Свойство используется только для справочных полей. |
isValid | Признак корректности колонки. Если свойство указано, то оно изменит признак корректности элемента управления, связанного с колонкой. Если колонка некорректна, то это может означать отмену событий по сохранению записи, а также может привести к признанию записи некорректной. |