Правила

Бизнес-правила включают читаемые машинами базы данных, помогающие системе принимать решения и производить сложные расчеты во время автономного функционирования.

Правила группируются в наборы правил. Все наборы правил полностью независимы друг от друга. Каждый набор включает одно и более правил, работающих в определенном порядке (см. Типы наборов правил). Каждый набор правил может принимать определенные параметры, и его обработка всегда имеет результатом один объект (любого типа, т.е. число, строка или дата).

Компоненты правил

Каждое правило в наборе состоит из цели, выражения и условия. Кажде правило либо возвращает результат всего набора правил, либо (заново) определяет единую переменную среды, действительную до конца обработки набора правил.

Также возможно добавлять комментарии к отдельным правилам.

Цель правил

Цель определяет, как обрабатывается результат набора правил. Если цель правила - это Финальный результат набора правил, это правило прекращает обработку набора правил и возвращает результат всего набора правил.

В других случаях цель определяет название переменной среды, которое будет определяться, когда закончится обработка правил. На эту переменную можно сослаться из выражений и условий других правил.

Выражение правил

Выражение правил - это выражение SberMobile, которое возвращает результат любого типа. Этот результат:

  • Возвращается как результат всего набора правил, если Цель правила - это Финальный результат набора правил.
  • Хранится как переменная внутренней среды набора правил, переписывая значение этой переменной, если оно уже было определено другими правилами. Эта переменная среды будет действительна во время цикла обработки текущего набора правил.

Выражения правил могут ссылаться на результаты других правил из этого набора через ссылки {env/rule_target_variable_name}.

Условие правил

Условие Правил - это выражение SberMobile, которое имеет результатом булевое значение. Если это значение false, обработка правила будет пропущена, и будут обрабатываться другие правила в соответствии с типом набора правил.

Обратите внимание, что незаполненные условия или условия, возвращающие NULL, будут иметь значение true.

Условия правил могут ссылаться на результаты других правил из этого набора через ссылки {env/rule_target_variable_name}.

Условия правил опциональны.

Пример набора правил

Этот пример описывает простой последовательный набор правил, рассчитывающий нагрузку процессора хоста сети независимо от типа хоста и операционной системы.

Этот набор правил используется относительной моделью, прикрепленной к каждому хосту сети, и, таким образом, контекстом по умолчанию выражения и условия правил является контекст сетевого устройства, к которому он прикреплен.

Цель

Выражение

Условие

Комментарий

Результат финального набора правил

aggregate({.:hrProcessorTable}, '{env/previous} + {hrProcessorLoad}', 0) / records({.:hrProcessorTable})

hasVariable({.:}, 'hrProcessorTable')

Standard

Результат финального набора правил

aggregate({.:cpmCPUTotalTable}, '{env/previous} + {cpmCPUTotal5min}', 0) / records({.:cpmCPUTotalTable})

hasVariable({.:}, 'cpmCPUTotalTable')

Cisco

Результат финального набора правил

{utilities:statistics({.:}, "hpuxCpuLoad", null, "minute", "false")$average}

hasVariable({.:}, 'computerSystemIdleCPU') && hasVariable({.:}, 'computerSystemSysCPU') &&hasVariable({.:}, 'computerSystemUserCPU') && hasVariable({.:}, 'computerSystemNiceCPU')

HP/UX

Результат финального набора правил

{.:ssCpuSystem$ssCpuSystem} + {.:ssCpuUser$ssCpuUser}

hasVariable({.:}, 'ssCpuSystem') && hasVariable({.:}, 'ssCpuUser')

Solaris

Результат финального набора правил

{.:agentCPUutilizationIn1min$agentCPUutilizationIn1min}

hasVariable({.:}, 'agentCPUutilizationIn1min') && {.:agentCPUutilizationIn1min$agentCPUutilizationIn1min} != null

D-Link

Результат финального набора правил

null



Первое правило используется, когда контекст устройства имеет переменную hrProcessorTable. Оно проходит через список ядер процессора и рассчитыает среднее.

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

Другие правила подобны предыдущим и подходят для устройств HP/UX, Solaris и D-Link.

И, наконец, если не находится подходящих правил, нагрузка процессора считается неопределенной в соответствии с последним безусловным правилом.