https://github.com/bpmbpm/EA-example

По щучьему велению, по архитектора хотению: пусть рисунок архитектуры предприятия сам рисуется!

Введение

Предполагается, что имеется репозитарий (repository, хранилище данных) корпоративной архитектуры, например, в виде файла excel или источника, связанного по ODBC.

Задача: на основе данных из репозитария, содержащего объекты архитектуры предприятия (процессы, орг-структура, активы и т.п.), автоматически построить схему архитектуры: сгенерировать дерево на основе данных об иерархии объектов. Рассмотрен инструментарий excel и visio (сторонних add-in), приведена сопутствующая критика этих Microsoft-инструментов.

Генерация структурных схем штатным мастером Орг-диаграмм visio по данным excel (ODBC) аналогична табличному csv или скриптовым языкам dot, mermaid, plantUML в инструментах graphviz и drawio, а также rdf-триплетам (linked data), визуализируемым через RDF grapher. Генерация штатным мастером ограничена древовидными структурами, но использование visio VBA позволяет устранить ограничение древовидности, «Но это уже совсем другая история».

В предыдущей статье Простая Enterprise Architecture. Архитектура компании садоводов было рассказано про само понятие «корпоративная архитектура» (что такое Enterprise Architecture, ЕА) и объект архитектуривания (корпорация садоводов, СНТ).

В том примере нужно было вручную рисовать архитектурные схемы (структурные и VAD – цепочка добавленной стоимости) и далее связывать данные excel c фигурами visio в ручном (путем перетаскивания строк из поля «Внешние данные») или в автоматическом (автоматическое связывание по ID) режиме. В этой статье обойдемся без ручной работы: будет показан пример технологии автоматического построения иерархической схемы по данным, хранящимся в репозитарии - файле excel (аналогично автопостроение возможно из базы данных, иных источников ODBC).

Генерировать схемы ЕА будет Емеля Architect штатный мастер организационных диаграмм visio (Organization Chart, он же OrgChart, он же OrgC11). В названии мастера не должно смущать «организационных»: мастер строит не только орг-диаграммы, но и любые структурные иерархические схемы. Важно только, чтобы у объектов схемы (кроме корневых, у которых нет родителя) был ровно один родитель (предшественник), поэтому для построения схем родословных (генеалогическое древо имеет два родителя), графовых, VAD (где в общем случае много предшественников) нужно использовать другие инструменты генерации схемы по данным репозитария.

Входы – выходы. На входе: табличка в excel с данными об архитектуре компании садоводов СНТ (другой Enterprise Architecture). На выходе: автоматически сгенерированная штатным add-in visio «Мастер орг-диаграмм» (плюс пост-обработка сгенерированного) схема архитектуры с последующей публикацией в web (publisher, portal).

Основная цель: показать пример использования подручных инструментов для визуализации корпоративной архитектуры (точнее – дерева архитектуры), а также генерации любых структурных иерархических схем.

1. Генерация схемы и пост обработка

1.1 Работа штатного мастера орг-диаграмм

Для начала необходимо создать исходный файл excel: вначале задать структуру (мастер также позволяет задать формат файла с нужными мастеру полями), а потом заполнить данными.  

При необходимости скорректировали файл репозитария объектов архитектуры, в данном случае прилагаемый excel файл (e2). Ключевой момент: каждый объект должен иметь идентификационный номер (колонка, поле ID) и отсылку к родительскому элементу (колонка, поле Parent).

Следует учесть, что лист excel, по которому будет строиться схема, должен быть активным, а сам файл закрыт. Файл excel примера содержит несколько листов (корневой, процессы, орг-структура, МТО и т.п.), по каждому, кроме технологических (rel, col, abbreviation), можно строить структуру. Все объекты архитектуры суммируются макросом на листе «All», поэтому в случае его использования закрывать файл нужно находясь на листе «All».

Открываем прилагаемый файл visio (можно создать новый) и запускаем Мастер орг-диаграмм. При создании схемы можно выбрать «Организационная диаграмма» или Меню: Вид \ надстройки \ Бизнес \ Мастер организационных диаграмм.

Если открыт файл типа «Организационная диаграмма», то в Меню \ Вкладка «Организационная диаграмма», Кнопка «Импорт», выбираем: «По данным из файла»; «Файл Excel» и выбор файла. Далее: «Столбцы, содержание основные сведения» - Имя = ID; Родитель = Parent. Если заполнить: Имя = Name; Родитель = Parent; Имя (дополнительное) = ID, то будет склейка «ID Name».

«Столбцы, которые следует отображать» добавить поле Name. «Поля, которые добавить как данные фигуры»: ID, Name, Rank, Comment, Type, Number, при необходимости другие. «Не включать рисунки в диаграмму», «Указать число сотрудников на каждой странице», Готово.  

Описания работы мастера:

Создание организационной диаграммы в Visio на основе данных Excel

Создание организационной диаграммы в Visio (автоматически по данным из Excel)

Make Visio organization charts from personnel files

Staff Belt Shape vs Position Belt Shape

Microsoft Visio — работа с организационными диаграммами

В результате работы мастера (см. пример) создаются типы фигур: Executive Belt (головной), Manager Belt (имеет подчинения), Position Belt (не имеет подчинения).

В примере дополнительно автопостроен лист «предприятие» и выполнена выгрузка в html двух листов: «основной» и «предприятие».

1.2 Пост обработка работы мастера

Надстройка (Add-In, Add-On) OrgC11 автоматически добавляет силуэты (иконки) в формируемые генератором фигуры. Чтобы избавиться от силуэтов нужно выделить все фигуры (ctrl + A) и выбрать в вкладке «Организационная диаграмма» \ Рисунок \ Удалить (Удалить рисунок). Можно воспользоваться макросом VBA:

Sub Macro_Del_Pic() 'Delete Picture

   Application.ActiveWindow.SelectAll ' Selected all shapes

   Call Application.Addons.ItemU("OrgC11").Run("/cmd=DeletePicture")

End Sub

Подобным образом меняем шрифт надписи фигур цвет (например, с белого на черный), размер шрифта и т.п. 

Изменение заливки фигур в зависимости от типа фигуры

Полу ручной режим. «Рисунки, связанные с данными» или «Расширенное связывание данных» позволяет выполнить заливку фигур в зависимости от значения, указанного в каком-любо поле данных, в данном примере – поле Type. Можно задавать прямо код цвета (RGB или иной формат), например, в поле Code, т.е. в excel файле в предусмотренном для этого поле устанавливаем код цвета (каждому типу объектов – свой цвет) и передаем их в данные фигуры (добавляем поле в работе мастера орг-диаграмм).

Вариант для ручной установки цвета в зависимости от типа объекта: выделить все (Crtl a), меню Данные \ Расширенное связывание данных \ Изменить рисунок, связанный с данными \ Добавить элемент \ и выбрать значения как на рисунке:

Следует учитывать, что если не установить нужный цвет шрифта (текста), то при каждой перерисовке, например, при обновлении данных, будет восстановлен цвет по умолчанию (белый).

Материалы по заливке:

Работа с Data Graphics 

Color shapes according to their data

Альтернативой полу ручному режиму может служить макрос на VBA, который считывает значения цвета напрямую из excel файла (например, поле Code) и формирует значение переменной visDGCBVFill.

 2. Повторное связывание фигур с таблицей excel и экспорт

OrgC11 не передает связанную таблицу (используемую при авто построении) в окно «Внешние данные», как это работает через меню «Данные»: подключение внешних данных (excel, ODBC), синхронизация подключенных данных. Чтобы получить дополнительные функции по обновлению данных из файла Excel и добавление таблицы в окно «Внешние данные», то можно повторно (поверх OrgC11) связать данные через вкладку «Данные», «Настраиваемый импорт». Выбрать файл excel, лист (All), Выбрать столбцы (например все до поля Comment2), уникальный код обновления = ID, Готово.

Это позволит однонаправленную связку excel – visio. Теоретически возможна и двухнаправленная связь через вкладку «Данные» (не путать с кнопкой «Экспорт» на вкладке «Организационная диаграмма»). Для сравнения: работа OrgC11 требует закрытого файла excel, а обновление данных через меню «Данные» работает в любом варианте.  

После добавления Внешних данных нужно выполнить авто привязку Внешних данных с фигурами (Данные \ Связать данные \ Со всеми фигурами на странице) по полю ID (ID=ID), Готово. В окне Внешние данные по каждой строке должен появиться значок связывания.

Теперь возможен переход по выбранной строке или фигуре с связанное представление (от фигуры к строке и наоборот), обновление данных свойств объектов по кнопке «Обновить». 

Экспорт в web и pdf осуществляются аналогично рассмотренным в Простая Enterprise Architecture. Архитектура компании садоводов. Обеспечивается полнотекстовый поиск.

Итоговая картинка:

3. Критика используемых в примере штатных инструментов Microsoft

3.1 Штатный Мастер орг-диаграмм

Основной недостаток Мастера орг-диаграмм – это отсутствие ранжирования объектов одного уровня иерархии, поэтому профессиональное использование Мастера орг-диаграмм от Microsoft нереально.

Простой пример. Двухуровневая структура. Есть директор и три зама: первый, второй, третий. Мастер Microsoft раскидывает их по-разному, а нужно чтобы "слева - направо" шли: Первый зам, второй зам, третий зам. Если Вы принесете директору схему орг-структуры, где его Первый зам - в самом правом углу (т.е. «на задворках»), то он и его первый зам расскажут вам всё о таком подходе.

Решение проблемы: значение ранга указать в таблице excel, например, в поле Rank («построить в шеренгу»), и передать в OrgC11. Внешним макросом задать функцию «Ранжирование» и после работы штатного мастера OrgC11 в рамках дополнительной пост обработки переставить элементы в зависимости от значения, указанного в поле Rank (рокировка элементов по значению Rank).

К сожалению, при таком алгоритме в качестве «мусора» в свойства объекта на схему будет перенесено технологическое поле Rank. Если функцию ранжирования добавить в OrgC11, то этого можно было бы избежать.

Пример и описание макроса: Трафарет для сортировки оргсхем

Шаблон Visio для сортировки OrgChart

3.2 Экспорт из visio

Дополнительно к visio файлу визуализация предусматривает экспорт из visio в pdf и html (svg, js).

Штатный экспорт из visio в pdf не умеет передавать всплывающие подсказки, поэтому приходится использовать сторонние инструменты экспорта, например, PdfTip.

Штатный экспорт из visio в html еще более убогий. Для выгрузки в html в примере использован Add-ins SvgPublish который включает и транзит «Внешних данных» (исходно полученных из excel-репозитария) в html (интерактивную схему с отображением свойств объектов) и экспорт «по кнопке» на githib (Pages).

3.3 Двухнаправленное связывание с данными

В примере показана односторонняя связь, т.е. правим файл excel и правки по кнопке или по таймеру передаются в схему. Двухсторонняя позволяет править схему и сделанные правки синхронизируются в связанном файле данных: файле excel или ином источнике, связанным по ODBC.

Microsoft иногда не «идет вперед», а наоборот «откатывается назад»: с новыми версиями MS «куда-то» закапывает ранее существующий функционал. Например, ранее связь с Excel могла быть двухсторонней и работала «из коробки». Как сейчас настроить двухстороннюю связь с excel штатными инструментами – не понятно: на visio 2016 настроить ODBC для использования в этом примере - не удалось, в т.ч. вне мастера орг-диаграмм. Обсуждения и «старые» шпаргалки тут:

Связь шейпов Visio с данными в Excel             

http://visioport.epizy.com/biblio/visiobdexcel.htm

https://visio.getbb.ru/viewtopic.php?p=17624#p17624

«Старые» шпаргалки:

https://gtumanov.github.io/Visio/store/DataWizards.pdf

https://surrogate-tm.github.io/own/ODBC.pdf

Применительно к ЕА - двухсторонняя связь (когда правим схему и правки синхронизируются с репозитарием объектов, например, excel) – не то, чтобы критическая функция, но явно нелишняя. Решение проблемы: использование сторонних «заплаток на недоделки microsoft», например, Add-In BackSync.    

3.4 Выгрузка UTF-8 BOM \ UTF-8 noBOM

Microsoft не спешит решить проблему UTF-8 BOM \ UTF-8 noBOM, см. «CSV-файл UTF-8»

Чтобы использовать CSV выгрузку из Excel постоянно приходится руками менять кодировку или ставить внешние «заплатки» типа Save text file UTF-8 encoded with VBA

Редкие системы визуализации поддерживают импорт из Excel, но очень многие позволяют загружать данные через CSV файл. Для этого данные репозитария ЕА требуется выгружать в CSV формат. 

3.5 Экономия гиганта «на спичках»

Поражает ленивость (близорукость) Microsoft: разработав мощнейший инструментарий на протяжении десятилетий (с момента покупки visio) продолжает «экономить на спичках». Доработка указанных «недоработок» для гиганта - «сущая мелочь», но часто существенно ограничивает промышленное внедрение его продуктов, в том числе, разрекламированного мастера орг-диаграмм (OrgChart).

У Microsoft есть «Data Visualizer для Excel», но практическое использование за многие годы существования «Visio Data Visualizer» (кстати поддерживается двунаправленная синхронизация данных) пользователями оценено числом звезд на продукте (на «двойку»). Полагаю, что пока Microsoft не включит «Data Visualizer» в состав стандартной настольной версии visio – ситуация не изменится. Обычно компании элементы ЕА, включая орг-структуру, не ведут в облаке.

Хотелось бы увидеть сторонние аналоги «Data Visualizer», особенно повторяющие функции ARIS SmartDesign (автопостроение схем в интерактивном режиме, а также двухсторонняя синхронизация), что важно для ЕА и BPM (управление бизнес-процессами).  

Заключение

Автопостроение иерархических схем ЕА (BPM и не только) возможно с использование мастера Орг-диаграмм visio. Имеется возможность изменения расположения элементов (18 макетов), настройка цвета для каждого типа элемента (объекта архитектуры) и другие элементы расширенной визуализации. Свойства объектов из репозитария ЕА передаются в схему (таблица значений свойств объекта).  

Дополнительное, т.е. поверх построенной мастером OrgC11 связки, связывание данных позволяет в интерфейсе visio переход от схемы в таблицу и наоборот. При этом возможна актуализация данных схемы, включая название объекта, его атрибуты, без перерисовки схемы: штатно связь односторонняя, но при использовании сторонних плагинов - двухсторонняя.

Классические системы ЕА и ВРМ (начиная с ARIS) не позволяют подобного прямого  доступа к данным (где можно так легко «дотянуться» до данных) и столь расширенного управления визуализацией как это позволяет сочетание excel (БД с ODBC), visio и сторонние плагины к нему. Если кому-то для анализа данных возможностей excel (вкл. PowerQuery и т.п.) окажется недостаточно, то есть VBA, интеграция с Power BI и т.п. Мощные возможности visio в части векторной графики (вкл. ShapeSheet) обусловили его использование как визуализатора (в т.ч. встроенного графического редактора) репозитария ВРМ-систем (visio-образные BPM), например, BPM-X: BPM для всех

Рассмотренный в статье пример выложен второй частью в репозитарий: https://github.com/bpmbpm/EA-example              ea2.xls                  Orgchart.vsdx

Github Page

Комментарии (5)


  1. VGoudkov
    22.04.2023 13:46

    Советую посмотреть Enterprise Architect от https://sparxsystems.com.au/, рисовать архитектуру (и не только) в нём откровенно удобно, так же как и генерировать по ней документацию в Word / HTML. Причём не важно какую - хоть архитектуру предприятия в терминах серверов и сервисов, хоть внутреннюю архитектуру конкретного микросервиса. При желании между этими двумя моделями можно построить tracebilty matrix, в которой будет явно видно, какой сервис какой порт на какой железке использует.
    Данные лежат в РСУБД, с понятной структурой, так что при желании можно организовать ETL в нужную сторону, как и запустить туда внешний BI.
    Ну и понятно "из коробки" уже есть 100500 функций, которые реально нужны в корпоративной среде, когда это становится мастер-системой данных какого-то домена.
    Есть и минусы - в частности, у нас откровенно не зашло управление требованиями в нём, но это скорее из-за недоразвитости внутренних процессов и компетенций конкретных сотрудников.


    1. itGuevara Автор
      22.04.2023 13:46

      так же как и генерировать по ней документацию в Word / HTML.

      Enterprise Architect умеет генерировать хоть что-то подобное тому, что показано в статье?


      1. VGoudkov
        22.04.2023 13:46

        "Из коробки" - разумеется нет. Написать в нём скрипт, который создаёт примерно такое же - не сложно. Собственно, в статье описан похожий подход - здесь у нас shared данные, здесь их отображение в том или ином формате. Плагинами - меняем данные по изменению свойств картинок. EA ещё и новые данные в БД вставляет по мере рисования примитивов. Т.е. принцип то похожий. А дальше кто на что учился :)


        1. itGuevara Автор
          22.04.2023 13:46

          "Из коробки" - разумеется нет.

          В статье показано как раз автопостроение схем "из коробки", в том числе плагины "в составе коробки". Указанные сторонние плагины лишь добавляют "приукрашивание", а само автопостроение, раскраска (заливка) фигур в зависимости от типа объекта и т.п. - это "из коробки" visio (неважно оформлены они плагинами или иначе). Т.е. в базовом варианте достаточно одного visio и "нуль стороннего кода".

          Написать в нём скрипт, который создаёт примерно такое же - не сложно. 

          В этом есть сомнения.


  1. itGuevara Автор
    22.04.2023 13:46

    Как удалить сообщение, если "не туда" нажал.