четверг, 21 августа 2014 г.

Использование дополнения Visio в качестве графического интерфейса PDM системы

Об одном не слишком распространенном способе применения Visio.
Традиционный интерфейс PDM системы предполагает отображение информации о составе изделий в виде дерева или таблицы. Тяжело придумать что-либо другое, имея в качестве инструмента окошко на экране монитора. То есть чаще всего пользователь видит примерно такое изображение.
В этом плане Visio позволяет существенно расширить наблюдаемое поле. Размеры страницы практически не ограничены, масштаб изменяется легко, плюс возможности поиска. То есть появляется возможность отобразить сразу все дерево состава сложного изделия и наблюдать на этом фоне какую-то нужную информацию.
В данном случае речь идет о таком использовании Visio для PDM STEP Suite (НИЦ CALS-технологий "Прикладная логистика"). Собственно тип PDM системы в данном случае не очень и важен. Важно то, что в этой системе внешняя прикладная программа может добраться до данных о составе через представления Oracle, то есть с использованием ADODB. Дальше задействуется привычный метод связи Visio с внешними данными и можно смотреть, что получается.
Дополнение представляет собой шаблон Visio с несколькими макросами, выполняющими выборку внешних данных через ADODB, размещение их на странице рисунка, в том числе управляемое. Действия вызываются через дополнительное меню (в нем перечислены практически все функции дополнения).
Основой связи с данными является довольно простой шейп, снабженный данными шейпа (Custom Properties) вот такой конфигурации.
Для максимального сжатия информации шейп компактно отображает сразу несколько полей пользовательских данных. Уникальным идентификатором для связи с базой является InstanceID.
Работа начинается с того, что на листе отображается дерево состава изделия или нужный его фрагмент. Для этого имеются функции "Выбрать компоненты" и "Нарисовать все".
Первая выбирает составные части, непосредственно входящие в состав указанного изделия, вторая - рекурсивно выбирает и отрисовывает все дерево. То есть после их применения из исходного изображения
получится такое изображение (Выбрать компоненты)
или такое (Нарисовать все)

 Алгоритм авторазмещения данных простейший, поэтому сложное дерево состава обычно уходит далеко за пределы листа.
Для интерактивного переразмещения изображения служит функция "Выбрать все ниже". Функция применяется к верхушке какого-то куста состава. При выполнении этого макроса селектируются все входящие изделия, после чего весь куст вручную переносится в новое расположение.


 Оказалось, что одной такой функции достаточно, чтобы довольно быстро в интерактивном режиме оптимизировать размещение шейпов на листе. И после подстройки размеров листа получается схема состава изделия, готовая для дальнейшей работы.

Дальше собственно и начинается тот процесс, ради чего все затевалось. В наборе макросов реализовано несколько прикладных функций для раскраски схемы состава по данным БД.
К примеру, функция "Состояние" подкрашивает все составные части, разработка которых не завершена, в желтый цвет. Для этого макрос обходит все нарисованные шейпы заданного типа, используя хранящийся в них уникальный идентификатор, выбирает из базы данные о состоянии и меняет цвет заливки шейпа. В результате через несколько секунд после нажатия кнопки получается примерно такое изображение.

Набор таких функций можно наращивать по мере возникновения необходимости в отображении той или иной информации. Каждая новая функция - это всего лишь новый запрос к данным, который пристраивается к уже существующему механизму обхода шейпов на рисунке и изменения закраски.
Ненужная подкраска снимается функцией "Убрать подкраску".
Такой рисунок сохраняется в виде файла Visio, естественно сохраняя связи с базой данных. То есть схему состава обычно приходится строить один раз, а пользоваться можно многократно.
Естественно, со временем состав изделия изменяется. Для отслеживания изменений имеются макросы "Сравнить" и "Сравнить все". Первый действует на один текущий уровень входимости от выбранного изделия (шейпа). Второй - на весь куст, расположенный ниже выбранного шейпа.
Макрос обходит дерево, изображенное на рисунке, повторно запрашивая из базы состав для каждого узла дерева и сравнивая его с составом, полученным из рисунка по связям между шейпами. Обнаруженные отличия отображаются опять же цветом. Красным подкрашиваются изделия, удаленные из базы, синим - сборки, состав которых в базе отличается от приведенного на рисунке. То есть может получиться примерно такое изображение.

В зависимости от количества расхождений пользователь выбирает дальнейшие действия: подправить отдельные фрагменты изображения (если их мало) либо опять воспользоваться функцией "Нарисовать все".
Функции выборки и отображения работают с учетом контекстов. В данном решении для каждого контекста используется свой тип мастер-шейпа, а так как дерево состава строится от какого-то корня, то тип этого корня определит фильтрацию данных последующего отображения. В принципе, на одном листе могут быть отображены несколько деревьев состава изделия в разных конекстах.
Другая возможность фильтрации позволяет учитывать в дереве состава покупные изделия либо работать только с изготавливаемыми.
В итоге получилось приложение Visio под следующий сценарий работы. Создается и хранится файл Visio со схемой состава разрабатываемого сложного изделия. Когда возникает необходимость оценить состояние разработки, файл открывается, автоматически проверяется его актуальность, затем также автоматически подкраской отображается запрошенная информация. Схема позволяет быстро оценить и количество проблемных мест, и их расположение в структуре изделия.
Некоторым недостатком такого сценария применения является необходимость установки Visio. Несмотря на то, что можно обойтись самой дешевой версией (Standard), это оказалось неудобно. Поэтому реально схемы состава наиболее актуальных изделий используются не на локальных рабочих станциях, а коллективно. Скрипт, ежедневно запускаемый по расписанию, открывает по очереди все схемы, запускает в них макросы сравнения, отображения состояния и публикации в формате PDF на сайте SharePoint. В результате на сайте ежедневно обновляется комплект схем с нанесенными данными в формате PDF.
Если пользователя устраивает предложенный формат отображения, он пользуется данными с сайта. Если хочется чего-то своего, устанавливает Visio и работает в соответствии со своими предпочтениями.
Это приложение не задумывалось как универсальное, а делалось под конкретные условия для решения конкретных задач. Однако подход универсален и типичен для Visio. Значит нечто аналогичное легко может быть создано и в других условиях. Если, конечно, PDM система обеспечивает внешний доступ к данным.

Комментариев нет:

Отправить комментарий