Общие сведения
Платформа НЕЙРОСС обеспечивает возможность выбора схемы обработки инцидентов в зависимости от условий возникновения события и шагов оператора, выполняющего обработку, согласно заданному сценарию, с подсказкой оператору по шагам обработки и контролем действий оператора. Предустановлена стандартная схема обработки: оператор принимает инцидент в обработку, самостоятельно изучает состояния и события элементов, просматривает «живое» видео и видеоархив, формирует фото- и видеоматериалы, выполняет управляющие команды, формирует текстовый комментарий к инциденту и завершает его обработку.
При необходимости использования более сложного сценария обработки (с разветвлением и инструкциями оператору по шагам обработки) вы можете самостоятельно разработать такой сценарий или оформить заявку на разработку нестандартного многошагового алгоритма. Для работы в режиме PSIM (обработки события по алгоритму), требуется приобретение соответствующей лицензии [Лицензирование | Платформа НЕЙРОСС].
Запуск задачи обработки осуществляется при возникновении события, удовлетворяющего конкретному фильтру. Таким образом, создавая пары [фильтр + алгоритм обработки], можно распределять инциденты по операторам и назначать разные схемы обработки разным типам событий. Обработка событий может быть частично или полностью автоматизирована. К пользовательским шагам обработки относится: отметка о выполнении заданного действия, заполнение формы, добавление комментария, вынос резолюции по инциденту, возможность скачать отчёт по инциденту. К автоматическим шагам обработки относится: возможность «привязать» архивные скриншоты, выполнить произвольный SCALA-скрипт, сформировать отчёт по инциденту и отправить на заданную почту.
Порядок настройки:
- Рисование схемы
Для рисования базовой схемы (каркаса) рекомендуется использовать встроенный редактор BPMN-схем (с версии 20.8 Платформы НЕЙРОСС). - Дополнение схемы
Для всех автоматических и пользовательских шагов с помощью атрибутов настройте параметры шага. Для всех операторов ветвления нужно задать условия ветвления. Также необходимо указать уникальный идентификатор процесса. - Добавление фильтра
Требуется задать условия запуска процесса обработки по заданному сценарию — фильтр отбора целевых событий.
Каждая схема должна содержать Стартовое событие, которое иницилизирует запуск процесса в нотации BPMN изображается в виде круга, а также Конечное событие — изображается в виде «жирного» круга. Для упрощения действий администратора по созданию сценария обработки, в Платформе НЕЙРОСС при создании алгоритма ему автоматически присваивается типовая схема, содержащая обязательные шаги и шаг ручного завершения оператором процедуры обработки инцидента.
Вся логика работы (ход) процесса выражается во всевозможных элементах, расположенных между Стартовым и Конечным событием. Достаточно добавить типовые шаги обработки и настроить их параметры.
Пример схемы с автоматическим формированием фотоматериалов и выгрузкой отчёта в формате PDF
Пример сложной разветвлённой схемы обработки инцидентов АвтоКПП
Создание схемы обработки
В блоке Алгоритмы обработки нажмите на кнопку для добавления нового алгоритма.
В отобразившемся окне:
В поле Название введите произвольное текстовое название нового алгоритма.
В поле Фильтр по событиям из раскрывающегося списка выберите фильтр событий.
Фильтр событий позволяет разделить все входящие события на несколько потоков и для каждого потока в отдельности задать свой алгоритм обработки. Фильтры настраиваются в разделе Фильтры. Для перехода к разделу вы также можете воспользоваться кнопкой Настроить фильтры .
- Нажмите на кнопку Добавить и начать редактировать. Будет создан новый алгоритм со стандартной схемой обработки.
- Загрузите готовую схему обработки или создайте её с помощью редактора
Загрузка готовой схемы обработки
Вы можете загрузить готовый XML-файл схемы, а также вставить исходный код с помощью текстового редактора.
Загрузка файла
В поле Описание схемы нажмите на кнопку Выбрать файл и укажите файл XML-описания алгоритма обработки. Будет загружен графический вид схемы.
Нажмите на кнопку Сохранить.
Загрузка исходного кода
- Скопируйте исходный код схемы в буфер обмена.
- В поле Описание схемы нажмите на кнопку Открыть редактор.
- На вкладке Текстовый редактор вставьте код схемы из буфера обмена.
- Нажмите на кнопку Сохранить.
Подробная информация по работе с редактором схем обработки приведена ниже.
Создание схемы в редакторе
- В поле Описание схемы нажмите на кнопку Открыть редактор.
- В отобразившемся окне редактора схем:
Сформируйте каркас схемы обработки [3] при помощи готовых элементов, доступных на панели элементов [2], задайте последовательность шагов. Рекомендуется использовать базовую схему с шагами запуска и завершения инцидента и дополнить её готовыми или произвольными шагами обработки. Для обеспечения «ветвления» алгоритма — выбор «ветки» в зависимости от заданных оператором условий — предусмотрен оператор ветвления.
Перечень готовых элементов схемы обработки
- На панели свойств [5] измените, при необходимости, уникальный идентификатор каждого шага и потока, укажите параметры.
- Перейдите к вкладке Текстовый редактор [1] задайте дополнительные параметры элементов, условия ветвления.
Нажмите на кнопку Сохранить.
В процессе сохранения выполняется валидация алгоритма. Если найдены ошибки, сохранение не выполняется. Проверьте алгоритм и внесите необходимые изменения, повторите попытку сохранения.
- Закройте окно редактора схем.
Окно редактора схем
- Вкладки Диаграмма и Текстовый редактор: вкладка Диаграмма предоставляет графический редактор для формирования каркаса схемы, вкладка Текстовый редактор предоставляет доступ к коду xml-схемы с подсветкой синтаксиса, позволяет задать параметры шагов схемы.
- Панель элементов: готовые элементы схемы обработки; достаточно выбрать требуемый элемент и нанести на схему.
- Схема обработки: визуальное представление схемы с указанием последовательности обработки шага; формируется автоматически в процессе добавления новых элементов; каждому элементу и потоку присваивается уникальный идентификатор, который вы можете изменить в поле id панели свойств [5].
- Элемент схемы обработки: при выделении элемента отображаются доступные инструменты по изменению типа элемента, добавлением нового потока и проч.
- Панель свойств: содержит базовые свойства выделенного на схеме [3] элемента [Готовые элементы схемы обработки].
- Кнопка Сохранить: сохранение схемы, в процессе сохранения выполняется валидация.
Готовые элементы схемы обработки
Платформа НЕЙРОСС предоставляет готовые элементы для построения схемы обработки инцидентов:
- пользовательские шаги: отметка о выполнении действия, заполнение формы;
- автоматические шаги: добавление медиаматериалов, формирование отчёта по инциденту и отправка его на электронную почту, выполнение произвольного скрипта.
Подержаны операторы условного ветвления.
Пользовательские шаги | User Task | |||
---|---|---|---|
№ | Шаг / Панель свойств | Описание | Пример XML-описания |
1 | Отметить выполнение действия | Пользовательский произвольный шаг обработки, факт выполнения которого оператор фиксирует установкой флага в соответствующем поле. Задаёт алгоритм действий оператора: подсказывает последовательность шагов и контролирует их выполнение. Инструкция оператору задаётся в поле В карточке инцидента отображается в виде чек-бокса с текстом. Оператор знакомится с текстом инструкции, выполняет требуемые действия. По факту завершения устанавливает флаг в поле. Система фиксирует время выполнения шага и передает управление следующему шагу. | <userTask id="view_all_around" name="Осуществить обзор территории" activiti:assignee="incident:${incidentId}" activiti:exclusive="true"> <extensionElements> <ultima:bpmnElementExtension class="extensions.vmc.incident.SimpleIncidentTask"/> </extensionElements> </userTask> |
2 | Завершить обработку / пометить инцидент ложным | Завершает обработку инцидента. Выносит резолюцию «Ложный» / «Подтверждённый» для инцидента. В карточке инцидента отображается в виде виде двух кнопок: Завершить и Ложный. Шаг включён в стандартную схему обработки. | <userTask id="finishProcessing" name="Завершить обработку" activiti:assignee="incident:${incidentId}" activiti:exclusive="true"> <extensionElements> <ultima:bpmnElementExtension class="extensions.vmc.incident.FinishProcessingIncidentTask"/> </extensionElements> </userTask> |
3 | Заполнить произвольную форму | Позволяет оператору заполнить и отправить произвольную форму из полей типа string, long, boolean, date, enum и selectvalue. Возможно указание списка полей, обязательных к заполнению, значений по умолчанию для полей, текстовых подсказок оператору. В карточке инцидента отображается в виде заголовка, списка полей формы и кнопки Отправить. Заголовок формы задаётся в поле name для шага обработки. Параметры полей указываются отдельно: идентификатор (id), тип поля (type), заголовок поля (name), флаг обязательности (required), значение по умолчанию (default), флаг «только для чтения» (readonly). Система фиксирует время выполнения шага и передает управление следующему шагу. Все введённые значения доступны при обработке следующих шагов, в частности, — в зависимости от введённого оператором значения возможен выбор ветки алгоритма. | <userTask id="fill_form" name="Заполнить форму" activiti:assignee="incident:${incidentId}" activiti:exclusive="true"> <extensionElements> <ultima:bpmnElementExtension class="extensions.vmc.incident.UserFormIncidentTask"/> <activiti:formProperty id="stringValue" name="Текст" type="string" default="123"/> <activiti:formProperty id="booleanValue" name="Да/Нет" type="boolean" required="true"/> <activiti:formProperty type="long" name="Число" id="longValue" default="Целое число"/> <activiti:formProperty id="dateValue" name="Дата" type="date"/> <activiti:formProperty id="selectValue" name= "Выбор из списка" type="enum"> <activiti:value id="value1" name="Первое значение"/> <activiti:value id="value12" name="Второе значение"/> <activiti:value id="value13" name="Третье значение"/> <activiti:value id="value14" name="Четвёртое значение"/> </activiti:formProperty> </extensionElements> </userTask> |
4 | Запустить процесс сформирования PDF-отчета об инцидентен и сохранения его в папку загрузок браузера | Позволяет оператору скачать pdf-отчёт об инциденте. В XML-описании указывается: ключ отчёта, идентификатор источника данных и форма, которая будет использована при формировании отчёта. В карточке инцидента отображается в виде двух кнопок Сохранить отчёт и Не сохранять. На момент подготовки отчёта кнопки не активны. В случае возникновения ошибки создания отчёта отображается кнопка Ошибка. Система фиксирует время выполнения шага и передает управление следующему шагу. | <userTask id="Download_report" name="Скачать отчёт по инциденту" activiti:assignee="incident:${incidentId}" activiti:exclusive="true"> <extensionElements> <ultima:bpmnElementExtension class="extensions.vmc.incident.DownloadReportTask"/> <activiti:formProperty id="reportDefinitionKey" type="string" default="ultima-reports-vmc-incident-detail" writable="false" readable="true"/> <activiti:formProperty id="dataSourceId" type="long" default="1" writable="false" readable="true"/> <activiti:formProperty id="INCIDENT_ID" type="long" default="${incidentId}" writable="false" readable="true"/> </extensionElements> </userTask> |
Автоматические шаги | Service Task | |||
1 | «Привязать» архивные скриншоты | Добавляет в карточку инцидента скриншоты из архива «привязанных» к источнику инцидента камер. Действий пользователя не требуется. Скриншоты добавляются в отчёт по инциденту. В поле Относительное время (параметр relativeTimestamps в коде) через запятую задаются сдвиги относительно времени возникновения инцидента, за которые нужно «привязать» скриншоты. Необходимо обеспечить связь камер с источником тревог [«Привязка» камер источникам тревог] и наличие видеоархива за требуемый период. | <serviceTask id="Screenshots" name="Привязать архивные скриншоты" activiti:class="extensions.vmc.incident.BindArchiveSnapshotsTask"> <extensionElements> <activiti:field stringValue="-5,0,5" name="relativeTimestamps"/> <activiti:field name="incidentId" expression="${incidentId}"/> </extensionElements> </serviceTask> |
2 | Отправить отчёт по e-mail | Формирует отчёт об инциденте и отправляет его на заданную почту. Отчёт формируется в формате pdf. Необходимо настроить параметры почтового сервера в разделе Дополнительные настройки. Требуется наличие лицензий [НЕЙРОСС Автоматика]. E-mail-адрес получателя указывается в параметрах шага. | <serviceTask id="E-mail_report" name="Отправить отчет по email" activiti:class="extensions.vmc.incident.SendReportByEmailTask"> <extensionElements> <activiti:field stringValue="example@example.com" name="emailTo" type="string"/> <activiti:field name="incidentId" expression="${incidentId}"/> <activiti:field stringValue="ultima-reports-vmc-incident-detail" name="reportDefinitionKey" type="string"/> </extensionElements> </serviceTask> |
3 | Выполнить произвольный скрипт | Запускает на выполнение произвольный scala-скрипт. Специальные символы в скрипте необходимо экранировать, согласно стандарту XML. Переносы строки в коде нужно заменить на ";" | <serviceTask id="Run_scrypt" name="Выполнить пользовательский скрипт" activiti:class="extensions.vmc.incident.RunScriptTask"> <extensionElements> <activiti:field stringValue="import services.common.{SystemLogService, SystemLogTag};val systemLogService = ctx.injector.instanceOf[SystemLogService];systemLogService.log(SystemLogTag.ALARM)("ТРЕВОГА")" name="script" type="string"/> <activiti:field name="incidentId" expression="${incidentId}"/> </extensionElements> </serviceTask> |
Оператор условного ветвления | |||
1 | «Разветвить» алгоритм | Позволяет в зависимости от значения текущих переменных в рамках обработки инцидента выбрать тот или иной следующий шаг. На текущий момент в качестве переменных можно использовать только значения, введённые оператором в рамках ранее завершённых шагов заполнения формы | <userTask id="Form" name="Предварительная проверка" activiti:assignee="incident:${incidentId}" activiti:exclusive="true"> <extensionElements> <ultima:bpmnElementExtension class="extensions.vmc.incident.UserFormIncidentTask"/> <activiti:formProperty id="isNotPhony" type="boolean" name="Нарушитель обнаружен"/> </extensionElements> </userTask> <exclusiveGateway id="Gateway"/> <sequenceFlow id="Flow_toForm" sourceRef="startevent1" targetRef="Form"/> <sequenceFlow id="Flow_toGateway" sourceRef="Form" targetRef="Gateway"/> <sequenceFlow id="flow_GatewayON" name="Инцидент подтверждён" sourceRef="Gateway" targetRef="Activity_1o9mqp9"> <conditionExpression xsi:type="tFormalExpression"> ${isNotPhony == true} </conditionExpression> </sequenceFlow> <sequenceFlow id="flow_GatewayOFF" name="Ложная тревога" sourceRef="Gateway" targetRef="finishProcessing"> <conditionExpression xsi:type="tFormalExpression"> ${isNotPhony != true} </conditionExpression> </sequenceFlow> |