Наследование в схемах расчетов
О наследовании в схемах расчетов
В данном разделе описана логика работы наследования расчетов. Используются два основных понятия:
-
Наследуемый расчет — расчет, на основе которого создается расчет-наследник.
-
Расчет-наследник — расчет, переопределяющий атрибуты наследуемого расчета и используемый для другой сущности.
Наследование расчетов может быть использовано при работе с сущностями-наследниками. Например, пусть создана расширенная форма требования аудита, имеющая дополнительные свойства относительно стандартной формы. Тогда можно создать расчет-наследник для индекса соответствия требования, имеющий то же имя, что и расчет для стандартной формы требования, но иную формулу, учитывающую значения дополнительных свойств. |
Определять расчеты-наследники можно:
Определение наследников в текущей схеме расчетов
Чтобы создать расчет-наследник в той же схеме, что и наследуемый расчет, достаточно создать расчет с тем же идентификатором, что и наследуемый, но с другой сущностью в поле entity
.
Пример определения наследника в текущей схеме расчетов
id: evo.compliance.audit.calculations
name: audit_calculations
description: Расчеты для аудитов
type: calculation_schema
tags: [audit, calculations]
version: 1.0.0
status: stable
author: John Doe <johndoe@example.com>
calculations:
- id: audit_assessment_requirement_impact_coefficient
auto_recalculation: true
name: Коэффициент значимости требования
entity: evo.compliance.audit/Requirement
complexity_limit: 1
expression: "{field:impactCoefficient}"
- id: audit_assessment_requirement_impact_coefficient
auto_recalculation: true
name: Коэффициент значимости требования
entity: evo.compliance.audit/RequirementExtendedForm
complexity_limit: 100
expression: |
sum({calculation:audit_assessment_requirement_impact_coefficient_children}) +
{field:mark}
children:
- linkage: evo.compliance.audit/RequirementExtendedForm_Requirement
calculation: audit_assessment_requirement_impact_coefficient_children
- id: audit_assessment_requirement_impact_coefficient_children
auto_recalculation: true
name: Коэффициент значимости дочернего требования
entity: evo.compliance.audit/RequirementExtendedForm
complexity_limit: 1
expression: "{field:impactCoefficient}"
Здесь:
-
audit_assessment_requirement_impact_coefficient
для сущностиRequirement
— наследуемый расчет коэффициента значимости для стандартной сущности требования. -
audit_assessment_requirement_impact_coefficient
для сущностиRequirementExtendedForm
— расчет-наследник для расширенной сущности требования, унаследованной от стандартного требования:-
Идентификаторы наследуемого расчета и расчета-наследника совпадают.
-
Значения свойств
auto_recalculation
иname
в расчете-наследнике совпадают с наследуемым расчетом. -
Значения свойств
entity
,complexity_limit
,expression
иchildren
переопределены.
-
Определение наследников в другой схеме расчетов
Чтобы создать расчет-наследник в другой схеме расчетов, в метаданных схемы, в которой определяется наследник, необходимо указать ключевое слово extends
и идентификатор схемы, в которой определен наследуемый расчет.
Пример определения наследника в другой схеме расчетов
Схема с наследуемым расчетом
id: evo.compliance.audit.calculations
name: audit_calculations
description: Расчеты для аудитов
type: calculation_schema
tags: [audit, calculations]
version: 1.0.0
status: stable
author: John Doe <johndoe@example.com>
calculations:
- id: audit_assessment_requirement_impact_coefficient
auto_recalculation: true
name: Коэффициент значимости требования
entity: evo.compliance.audit/Requirement
complexity_limit: 1
expression: "{field:impactCoefficient}"
Здесь:
-
audit_assessment_requirement_impact_coefficient
для сущностиRequirement
— наследуемый расчет коэффициента значимости для стандартной сущности требования.
Схема с расчетом-наследником
id: evo.compliance.audit.calculations.extended
name: audit_calculations_extended
description: Расчеты для аудитов (расширенная форма)
type: calculation_schema
tags: [audit, calculations]
version: 1.0.0
status: stable
author: John Doe <johndoe@example.com>
extends: evo.compliance.audit.calculations
calculations:
- id: audit_assessment_requirement_impact_coefficient
auto_recalculation: true
name: Коэффициент значимости требования
entity: evo.compliance.audit/RequirementExtendedForm
complexity_limit: 100
expression: |
sum({calculation:audit_assessment_requirement_impact_coefficient_children}) +
{field:mark}
children:
- linkage: evo.compliance.audit/RequirementExtendedForm_Requirement
calculation: audit_assessment_requirement_impact_coefficient_children
- id: audit_assessment_requirement_impact_coefficient_children
auto_recalculation: true
name: Коэффициент значимости дочернего требования
entity: evo.compliance.audit/RequirementExtendedForm
complexity_limit: 1
expression: "{field:impactCoefficient}"
Здесь:
-
extends: evo.compliance.audit.calculations
— ссылка на схему расчетов, содержащую наследуемый расчет. -
audit_assessment_requirement_impact_coefficient
для сущностиRequirementExtendedForm
— расчет-наследник для расширенной сущности требования, унаследованной от стандартного требования:-
Идентификаторы наследуемого расчета и расчета-наследника совпадают.
-
Значения свойств
auto_recalculation
иname
в расчете-наследнике совпадают с наследуемым расчетом. -
Значения свойств
entity
,complexity_limit
,expression
иchildren
переопределены.
-