logo

Пример использования бизнес-правила в сценарии

Метод PublicAPI.Services.BusinessRuleExecution.CalculateBusinessRuleTable позволяет выполнять бизнес-правила в сценариях. Подробнее о работе с бизнес-правилами читайте в статье "Карточка бизнес-правила".

В метод CalculateBusinessRuleTable требуется передать версию бизнес-правила и входные параметры. Для каждого входного параметра создайте сущность BusinessRuleColumnValue, в которую нужно передать имя параметра (задается в таблице принятия решений в настройках параметра) и значение.

В представленном ниже примере сценария:

  • P1, P2 – имена входных параметров;
  • O1, O2 – имена выходных параметров.

В сценарии используются контекстные переменные:

  • context.result1 и context.result2 переменные типа Строка, в которые сохраняются полученные значения выходных параметров бизнес-правила;
  • context.ErrorMessages переменная типа Строка, в которую сохраняется список ошибок при выполнении бизнес-правила.

Пространство имен:

using EleWise.ELMA.BusinessRules.Models.BusinessRulesTableMapping;

Текст сценария:

// Загрузить бизнес-правило
var rule = PublicAPI.DMN.BusinessRule.Load(1);
			
// Загрузить текущую версию бизнес-правила
var ruleVersion = PublicAPI.DMN.BusinessRuleVersion.GetCurrent(rule);
// Или загрузить черновик версии бизнес-правила
// var ruleVersion = PublicAPI.DMN.BusinessRuleVersion.GetDraft(rule);
// Или загрузить версию бизнес-правила по Id
// var ruleVersion = PublicAPI.DMN.BusinessRuleVersion.GetByVersion(rule, 100);
			
// Выполнить бизнес-правило с входными параметрами и получить результат выполнения.
BusinessRuleResult result = PublicAPI.Services.BusinessRuleExecution.CalculateBusinessRuleTable(
    ruleVersion, 
    new BusinessRuleColumnValue("P1", PublicAPI.Portal.Security.User.Load(1)),
    new BusinessRuleColumnValue("P2", "Два")
);
			
// Выходные параметры бизнес-правила. Каждый выходной параметр нужно привести к соответствующему типу.
context.result1 = result["O1"] as string;
context.result2 = result["O2"] as string;
// Список ошибок бизнес-правила. Если выполнение бизнес-правила завершилось с ошибкой, инфомация об этом добавляется в список ошибок
if (result.ErrorMessages != null)
{
    context.ErrorMessages = string.Join(" ", result.ErrorMessages);
}