Публикация

Настройка логики полей в BPMonline 7.0

Настройка логики полей карточки

Настройка происходит в карточке путем изменения конфигурации полей.

Подготовка

Для работы с бизнес правилами нужно добавить в страницу зависимость от модуля бизнес правил:

Настройка

В настройку контрола страницы добавляем блок правил по шаблону:
Пример настройки бизнес правила BINDPARAMETER

{    
    type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
    name: 'Winner',
    columnPath: 'Winner',
    dataValueType: Terrasoft.DataValueType.LOOKUP,
    visible: true,
    rules: [{
        //Указываем тип правила
        ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
        //Подписываемся на параметр "Видимый"
        property: BusinessRuleModule.enums.Property.VISIBLE,
        //Указываем правило объединения условий в случае если в массиве conditions более одного условия
        //по умолчанию Terrasoft.LogicalOperatorType.AND
        logical: Terrasoft.LogicalOperatorType.AND,  
        conditions: [{
            leftExpression: {
                //Сравниваем значение от атрибута модели "Доход"
                type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                attribute: 'Revenue'
            },
            //Устанавливаем правило сравнения "Больше"
            comparisonType: Terrasoft.core.enums.ComparisonType.GREATER,
            rightExpression: {
                //С константой '5000'
                type: BusinessRuleModule.enums.ValueType.CONSTANT,
                value: 5000
            }
        }]
    }]
}

Бизнес правило привязывается к параметру "Видимый" контрола Победитель (Winner).

В пакете условий указывается одно условие: если Доход (Revenue) больше 5000, Победитель становится видимым, иначе Победитель скрывается.

Пример настройки бизнес правила BINDPARAMETER для типа значений CARDSTATE

{
    ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
    property: BusinessRuleModule.enums.Property.ENABLED,
    conditions: [{
            leftExpression: {
                type: BusinessRuleModule.enums.ValueType.CARDSTATE
            },
            comparisonType: Terrasoft.core.enums.ComparisonType.EQUAL,
            rightExpression: {
                type: BusinessRuleModule.enums.ValueType.CONSTANT,
                value: ConfigurationEnums.CardState.Edit
            }
        }
    ]
}

Бизнес правило позволяет установить значение видимости или доступности для редактирования контрола в зависимости от текущего состояния страницы.

В данном случае указывается, что поле будет доступно для редактирования только в режиме изменения записи, а в режиме добавления/копирования будет неактивно.

Пример настройки бизнес правила FILTRATION

{
    type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
    name: 'Contact',
    columnPath: 'Contact',
    dataValueType: Terrasoft.DataValueType.ENUM,
    visible: true,
    rules: [{
        //Указываем тип правила
        ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
        //Указываем будет ли обратное автозаполнение
        autocomplete: true,
        //Указываем мета-путь относительно базового обьекта('Contact')
        //по которому будем фильтровать
        baseAttributePatch: 'Account',
        //Указываем тип фильтрации
        comparisonType: Terrasoft.ComparisonType.EQUAL,
        //Указываем тип значения для фильтрации
        type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
        //Указываем атрибут модели для сравнения (если тип значения - атрибут)
        attribute: 'Account',
        //Указываем мета-путь значения в выбранном атрибуте (если нужно)
        attributePath: '',
        //Если тип значения не атрибут, указываем значение
        //(константа | имя системной настройки | имя системного значения)
        value: ''
    }]
}

Бизнес правило устанавливает фильтрацию контрола Контакт (Contact) по полю Контрагент (Account) в зависимость от значения атрибута модели Контрагент (Account)

Пример настройки бизнес правила AUTOCOMPLETE (Правило доступно с версии 7.0.1.106)

{
    type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE,
    name: 'JobTitle',
    columnPath: 'JobTitle',
    ...
    rules: [{
        //Указываем тип правила
        ruleType: BusinessRuleModule.enums.RuleType.AUTOCOMPLETE,
        //Указываем атрибут-источник модели для автозаполнения
        attribute: 'Job',
        //Указываем тип автозаполнения
        autocompleteType: BusinessRuleModule.enums.AutocompleteType.DISPLAYVALUE
    }]
}

Бизнес правило производит автозаполнение контрола Полное название должности (JobTitle) из параметра displayValue значения контрола Должность (Job)

Перечисления

Данные перечисления не являются ядровыми и становятся доступны после подключения модуля бизнес правил.
Тип действия бизнес правила

Тип Описание
BusinessRuleModule.enums.RuleType.AUTOCOMPLETE Установка правил автозаполнения контрола
Пример: автозаполнение полного названия должности исходя из выбранной должности..
BusinessRuleModule.enums.RuleType.BINDPARAMETER Установка правил на параметр контрола
Пример: Включить поле результат при изменении состояния в карточке активности.
BusinessRuleModule.enums.RuleType.FILTRATION Установка правил фильтрации контрола
Пример: Фильтрация контактов по выбранному контрагенту.

Тип автозаполнения

Тип Описание
BusinessRuleModule.enums.AutocompleteType.ASIS Автозаполнение значением "как есть"
BusinessRuleModule.enums.AutocompleteType.VALUE Автозаполнение параметром value. Актуально для lookup-значений.
BusinessRuleModule.enums.AutocompleteType.DISPLAYVALUE Автозаполнение параметром displayValue. Актуально для lookup-значений.

Параметр контрола

Тип Описание
BusinessRuleModule.enums.Property.VISIBLE Контрол видим
BusinessRuleModule.enums.Property.ENABLED Контрол активен
BusinessRuleModule.enums.Property.REQUIRED Контрол обязателен к заполнению
BusinessRuleModule.enums.Property.READONLY Контрол доступен только на чтение

Тип значения для сравнения

Тип Описание
BusinessRuleModule.enums.ValueType.CONSTANT Константа
Пример: 100, "Иванов", "449d832-a4cc-4b01-b9d5-8a12c42a9f89"
BusinessRuleModule.enums.ValueType.ATTRIBUTE Значение другого контрола
Пример: "Revenue" (Доход)
BusinessRuleModule.enums.ValueType.SYSSETTING Системная настройка
Пример: "DefaultTax" (Налог по умолчанию)
BusinessRuleModule.enums.ValueType.SYSVALUE Системное свойство. Элемент списка системных свойств Terrasoft.core.enums.SystemValueType
Пример: Terrasoft.core.enums.SystemValueType.CURRENT_DATE (Текущая дата)
BusinessRuleModule.enums.ValueType.CARDSTATE Значение текущего состояния страницы (добавление/редактирование/копирование и т.п.).
Элемент из списка ConfigurationEnums.CardState
Пример использования: ConfigurationEnums.CardState.Edit (Страница в режиме редактирования)

Поделиться

2 комментария

Здравствуйте, Александр.
Есть несколько вопросов по вашему новому посту. Буду признателен за комментарии. Начинающий, не во всем пока разбираюсь.

В настройку контрола страницы добавляем блок правил по шаблону:

Далее этот "контрол" повторяется везде. Не понимаю смысл этого слова.

Здравствуйте, Павел.

Под термином "контрол" в данной статье подразумевается "Поле редактирования"

Пример:

Поле на карточке
Поле "Номер"

В коде структуры карточки выглядит так:

{
	type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE,
	name: 'Number',
	columnPath: 'Number',
	dataValueType: Terrasoft.DataValueType.TEXT,
	visible: true
}

Бизнес правила вписываются в этот код задавая требуемое поведение.

Войдите или зарегистрируйтесь, чтобы комментировать