Документация

Документация по разработке bpm’online
PDF
Бизнес-правила мобильного приложения

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"]
});
© Terrasoft 2002-2018.

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

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