Запуск расчетов и отображение их результатов
Расчеты можно запускать:
-
при нажатии кнопки, добавленной в интерфейс домена;
-
автоматически с помощью триггера;
-
при изменении объекта, с которым связан расчет.
Чтобы запустить расчеты по схеме и отобразить их результаты в интерфейсе системы, необходимо выполнить следующие действия:
-
Если расчеты будут запускаться при нажатии кнопки или по триггеру, следует создать плейбук для запуска расчетов.
Если схема автоматизации выключена в разделе Экспертиза, при запуске связанного с ней плейбука любым способом расчеты по ней производиться не будут. -
Настроить метод запуска плейбука расчетов.
Создание плейбука для запуска расчетов
Пример плейбука для запуска расчета
id: calculation_sdk_test_exec
name: Вызов exec через SDK расчётов
version: 1.0.0
author: John Doe <johndoe@example.com>
tags: [audit, calculations]
type: playbook
body:
input:
properties: {}
modules:
- id: module_0
body:
type: rawscript
input: {}
source: !bun |
import * as sdk from '@playbooks/sdk';
export async function main() {
// Получение ID текущего объекта из контекста.
const objectId = await JSON.parse(get_context()).objectId;
// Формирование объекта с аргументами расчета.
const command = {
calculationSchemaId: "calculate_test",
calculationId: "test",
object: {
domainId: "evo.entity.category.standards",
entityId: "Requirement",
id: objectId
},
cacheFirst: false
}
// Выполнение расчета и получение его результатов.
const result = await sdk.calculation.exec(command);
console.log('result', result);
return result;
}
Настройка метода запуска расчетов
Запуск расчетов при нажатии кнопки
Чтобы запустить расчеты при нажатии кнопки, следует внести изменения в схему домена:
-
создать действие типа
playbook, в котором указать идентификатор ранее созданного плейбука; -
создать кнопку (виджет типа
button) и связать ее с действием; -
добавить кнопку в представление (например, таблицу или карточку) сущности, для которой производится расчет.
Пример описания кнопки для запуска расчетов
actions:
- id: actions.countComplianceIndex
name: Вычислить индекс соответствия
type: playbook
entity: Audit
playbook: count_compliance_index
views:
- id: auditView
type: entity
entity: Audit
widgets:
- id: countComplianceIndexButton
type: action
action: actions.countComplianceIndex
control:
type: regular_button
label: "Вычислить индекс соответствия"
groups:
- id: infoAuditBlock
description: Информация об аудите
type: block
layout:
direction: column
expandable: false
components:
- widget: countComplianceIndexButton
Интерпретация примера
-
Действие
actions.countComplianceIndexсвязано с плейбукомcount_compliance_index, который запускает схему расчета индекса соответствия для аудита. -
Кнопка
countComplianceIndexButtonзапускает действиеactions.countComplianceIndex. -
Представление карточки аудита
infoAuditBlockсодержит кнопкуcountComplianceIndexButton.
Запуск расчетов с помощью триггера
Можно автоматизировать запуск плейбука расчетов, настроив триггер для него. Поддерживаются оба типа триггеров, доступных в системе — Расписание и Событие триггера.
Запуск расчетов при изменении связанного объекта
Если в конфигурации расчета установить для свойства auto_recalculation значение true, при изменении свойств или связей объекта, связанного с расчетом, расчет будет выполнен заново.
Для этого метода запуска создавать плейбук не требуется.
|
Необходимость перезапуска родительских и дочерних расчетов относительно текущего расчета определяется по следующей логике:
|
Отображение результатов расчетов в интерфейсе
Чтобы отобразить результат расчетов в интерфейсе системы, нужно создать атрибут сущности с типом, соответствующим типу результата расчета, и указать идентификатор этого атрибута в поле target расчета.
|
Если расчет возвращает число, вы также можете связать его с атрибутом сущности с помощью поля |
Атрибут, содержащий результат расчета, можно вывести в интерфейс:
-
с помощью виджета атрибута в карточке сущности;
Пример вывода результатов расчетов в карточку аудита
entities:
- id: Audit
name: Аудит
attributes:
- id: name
name: Наименование аудита
dataType: String
- id: assessmentIndexCalculation
name: Результат расчета индекса соответствия
dataType: Float
- id: isKii
name: Аудит объекта КИИ
dataType: Bool
...
views:
# Табличное представление списка аудитов.
- id: audits
label: Аудиты
type: list
source:
entity: Audit
type: operational
table:
columns:
# Вывод атрибута-строки.
- attribute: name
id: name
label: Наименование
layout:
width:
default: 250
max: 400
min: 40
# Вывод результатов расчетов в столбцы таблицы аналогичен выводу других атрибутов.
- attribute: assessmentIndexCalculation
id: assessmentIndexCalculation
label: Результат расчета индекса соответствия
layout:
width:
default: 250
max: 400
min: 40
- attribute: isKii
id: isKii
label: Аудит объекта КИИ
layout:
width:
default: 100
max: 200
min: 40
# Карточка аудита.
- id: auditView
type: entity
entity: Audit
widgets:
# Список виджетов карточки аудита.
- id: editors.name
type: attribute
attribute: name
description: Наименование аудита
- id: editors.assessmentIndexCalculation
type: attribute
attribute: assessmentIndexCalculation
description: Результат расчета индекса соответствия
- id: editors.isKii
type: attribute
attribute: isKii
description: Аудит объекта КИИ
groups:
- id: blocks.info.audit
description: Информация об аудите
type: block
layout:
direction: column
expandable: false
components:
- widget: editors.name
- widget: editors.assessmentIndexCalculation
- widget: editors.isKii
Была ли полезна эта страница?