При автоматизации бизнес-процессов предприятия часть задач всё равно должен выполнять человек: это согласование различной информации, обогащение данных из аналоговых источников и многое другое. В интеграционной шине InterSystems Ensemble для решения данного класса задач есть подсистема Ensemble Workflow, позволяющая людям участвовать в автоматизированных бизнес-процессах. В результате работы подсистемы Ensemble Workflow накапливается большой объём информации о том кто и сколько выполнял поставленные задачи. В этой статье с использованием BI-технологии InterSystems DeepSee, про которую я недавно уже писал на Хабре мы проанализируем и визуализируем эту информацию.
Аналитика
По умолчанию Ensemble предоставляет бизнес-метрики и страницу Workflow-портала «Задания потока работ» (Management Portal → Ensemble → Manage → Workflow → Workflow Tasks или SMP → Ensemble → Управление → Поток работ → Задания потока работ) для высокоуровневого управления задачами:
Разве это не выглядит как таблица фактов для куба DeepSee? Это действительно так, поэтому я решил построить куб DeepSee на основе класса EnsLib.Workflow.TaskResponse:
В этом кубе я храню информацию о каждой задаче, а именно:
- Пользователь, который выполнил задачу
- Роль задачи
- Когда она была создан и завершена
- Приоритет
- Текущий статус
- Завершена ли задача
- Время, затраченное на выполнение задачи
Большая часть элементов куба создана простым перетягиванием свойства класса на область куба, но вот наиболее интересные из них:
CompletionTime — время выполнения задачи в минутах. Вычисляется следующим образом: $System.SQL.DATEDIFF("minute",%source.%TaskStatus.TimeCreated,%source.%TaskStatus.TimeCompleted)
SQL-листинг определяется так ($$$SOURCE
— это таблица фактов, а $$$RESTRICT
— это фильтр применяемый DeepSee):
SELECT
TaskStatus_RoleName AS "Role",
TaskStatus_IsComplete AS IsCompleted,
%Status AS "Status",
TaskStatus_Source AS BusinessProcess,
TaskStatus_AssignedTo AS "User",
%Subject AS "Subject",
%Message AS "Message",
TaskStatus_TimeCreated AS "TimeCreated",
TaskStatus_TimeCompleted AS "TimeCompleted",
DATEDIFF('minute',
TaskStatus_TimeCreated,
TaskStatus_TimeCompleted) AS "CompletionTime"
FROM $$$SOURCE
WHERE $$$RESTRICT
Теперь давайте построим куб и несколько виджетов. Я решил построить одну инструментальную панель, демонстрирующую основные показатели:
- Среднее время, затрачиваемое пользователем и ролью для выполнения задачи
- Количество задач, которые в настоящее время не работают или не завершены
- Количество задач, выполненных за период
Вот демо дашборда (Логин: dev / Пароль: 123). Он отображается с помощью DeepSeeWeb (веб-приложение на AngularJS и Highcharts для визуализации дашбордов DeepSee в браузере.
Также доступны детализация данных и сквозная детализация:
Вы можете выполнять задачи потока работ на тестовом сервере с помощью приложения HelpDesk и видеть изменения на дашборде (куб строится один раз в час).
Логин: dev / Пароль: 123
Вот как выглядит Ensemble Workflow при использовании EnsembleWorkflowUI:
Заключение
Данные Ensemble Workflow можно визуализировать и анализировать с помощью BI-технологии InterSystems DeepSee. Это базовый проект OLAP решения, и его можно легко расширить по мере необходимости.