Настройка расчетов в схеме автоматизации

Данный раздел описывает использование расчетов в схеме автоматизации на примере практической задачи. Описаны процессы настройки расчетов и вывода их результатов в интерфейс системы.

Содержание раздела:

Пример решаемой задачи

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

Предварительные условия

В системе создана схема домена Аудиты и контроль с идентификатором evo.compliance.audit. В этой схеме домена определены следующие сущности:

  • Аудит — процедура определения степени соответствия актива требованиям по информационной безопасности.

    • Идентификатор в схеме домена: Audit.

    • Исходящая связь: сущность Аудит связана с сущностью Требование связью "один ко многим".

  • Требование — отдельное положение стандарта, выполнение которого необходимо оценить при проведении аудита.

    • Идентификатор в схеме домена: Requirement.

    • Исходящая связь: сущность Требование связана с сущностью Замечание связью "один ко многим".

  • Замечание — нарушение требования, которое было найдено и зафиксировано аудитором в ходе аудита.

    • Идентификатор в схеме домена: Issue.

Задача

Требуется подсчитать суммарное количество замечаний, зафиксированных по всем требованиям аудита, и вывести это количество в поле карточки аудита.

Создание расчетов в схеме автоматизации

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

  1. метаданные схемы автоматизации;

  2. объекты расчетов, в том числе сущности, для которых они выполняются, их формулы и дополнительные свойства.

Чтобы ознакомиться с подробным описанием структуры схем автоматизации, обратитесь к разделу Схемы автоматизации.

Для расчета суммарного количества замечаний аудита в рамках домена Аудиты и контроль можно создать следующую схему автоматизации:

id: evo.compliance.audit.automation
name: number_of_issues_in_audit
description: Схема автоматизации для расчета количества замечаний аудита
type: calculation_schema
tags: [audit, calculations]
version: 1.0.0
status: stable
author: John Doe <johndoe@example.com>
calculations:
  - id: issue
    name: Замечание
    auto_recalculation: true
    entity: evo.compliance.audit/Issue
    complexity_limit: 1
    expression: "1"

  - id: num_of_issues_requirement
    name: Количество замечаний требования
    auto_recalculation: true
    entity: evo.compliance.audit/Requirement
    complexity_limit: 100
    expression: "sum({calculation:issue})"
    children:
     - linkage: evo.compliance.audit/Requirement_Issue
       calculation: issue

  - id: num_of_issues_audit
    name: Количество замечаний аудита
    auto_recalculation: true
    entity: evo.compliance.audit/Audit
    complexity_limit: 100
    target: numOfIssues
    expression: "sum({calculation:num_of_issues_requirement})"
    children:
      - linkage: evo.compliance.audit/Audit_Requirement
        calculation: num_of_issues_requirement

Интерпретация примера

  • Свойства с id по author представляют собой метаданные схемы автоматизации.

  • Свойство calculations содержит массив следующих расчетов:

    • issue — расчет для замечания. Всегда возвращает значение 1, поскольку нужно подсчитать количество всех замечаний без дополнительных условий.

      Идентификаторы сущностей и связей домена в схемах автоматизации указываются с использованием FQID. FQID начинается с идентификатора схемы домена: в данном примере evo.compliance.audit.
    • num_of_issues_requirement — расчет суммарного количества замечаний, связанных с требованием. Вычисляется как сумма результатов дочернего расчета issue.

    • num_of_issues_audit — расчет суммарного количества замечаний, связанных с аудитом. Вычисляется как сумма результатов дочернего расчета num_of_issues_requirement. Для вывода результата расчета в поле numOfIssues аудита в интерфейсе установлено свойство target: numOfIssues.

  • Для всех расчетов в поле auto_recalculation установлено значение true, чтобы при добавлении или удалении замечания количество замечаний аудита пересчитывалось автоматически.

Отображение результатов расчетов в интерфейсе

Чтобы результат расчетов отобразился в интерфейсе домена, выполните следующие действия:

  1. В коде схемы домена:

    1. Добавьте атрибут типа calculation в список атрибутов сущности, для которой выполняется расчет.

    2. Добавьте виджет для отображения атрибута в представлении сущности.

  2. Опубликуйте обновленную версию схемы домена.

  3. Обновите домен.

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

Пример настройки отображения результата расчета в коде схемы домена

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

entities:
  - id: Audit
    name: Аудит
    attributes:
      - id: name
        name: Название
        dataType: String
        constraints:
          - kind: required
      - id: numOfIssues
        name: Количество замечаний
        dataType: Integer
...
views:
  - entity: Audit
    id: id_Audit
    label: label_Audit
    type: entity
    widgets:
      - id: editors_auditName
        type: attribute
        attribute: name
        control:
          type: text
        description: Название аудита
      - id: tables_requirementsInAudit
        type: linkage
        linkage: Audit_Requirement
        label: Требования аудита
        control:
          addLinksView: requirements
          columns:
            - attribute: name
              id: name
          type: table
      - id: editors_numOfIssues
        type: attribute
        attribute: numOfIssues
        description: Количество замечаний
    groups:
      - id: auditInfoTab
        components:
          - widget: editors_auditName
          - widget: tables_requirementsInAudit
          - widget: editors_numOfIssues
        label: Информация об аудите
        type: tab

Интерпретация примера

  1. В разделе entities схемы домена для сущности Audit добавлен атрибут numOfIssues типа Calculation. Значение этого поля — результат расчета num_of_issues_audit из схемы автоматизации evo.compliance.audit.automation.

  2. В разделе views схемы домена для сущности Audit добавлен виджет editors_numOfIssues для вывода значения атрибута numOfIssues. Этот виджет добавлен в представление вкладки Информация об аудите (auditInfoTab) карточки аудита.

Пример отображения результата расчета в интерфейсе домена

calc result in ui
  • С аудитом Аудит ИБ связаны три требования:

    • Требование Т1. Конфиденциальность связано с двумя замечаниями.

    • Требование Т2. Целостность не связано ни с одним замечанием.

    • Требование Т3. Доступность связано с четырьмя замечаниями.

  • В карточку аудита добавлено поле Количество замечаний. Его значение — 6 — является суммарным количеством замечаний, связанных со всеми требованиями аудита.

Была ли полезна эта страница?

Обратная связь