Введение в автоматизацию Visio

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

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

Предметная область

Сначала следует определиться с предметной областью. Что мы будем называть автоматизацией и какими понятиями будем оперировать. На данном рисунке несколько условно показаны основные способы использования Visio.

Простейший способ (нижний уровень) — рисовать с помощью инструментов — графических примитивов (линий, прямоугольников, эллипсов, текстовых блоков). Visio предоставляет здесь прекрасные возможности, но будем считать, что это к автоматизации не относится.

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

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

Визард — это некоторая программа или макрос, обеспечивающая выполнение определенной задачи. Строится он обычно как диалоговая программа, настраивающаяся в соответствии с ответами пользователя на ряд последовательных вопросов. Запускается через меню «Сервис» или автоматически по соответствующему событию.

На этом уровне также не требуется навыков программирования, не нужно знание объектной модели. Поэтому его также исключаем из рассмотрения.

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

Автоматизацию Visio

Часто шейпов и шаблонов оказывается недостаточно. Например, могут понадобиться чертежи, основанные на постоянно изменяющихся данных, как в случае генерации схемы организации по списку имен и названий из базы данных, схемы локальной сети. Можно автоматизировать повторяющиеся задачи, работать в других программах, используя объекты Visio.

Первый шаг — это создание пользовательских смарт-шейпов (интеллектуальных шейпов). То есть шейпов, не только передающих изображение, но и обладающих поведением. Это делается введением формул, управляющих атрибутами шейпа, такими, например, как геометрия шейпа или его реакция на двойной щелчок мышью.

Основой такого управления является шейп-лист (ShapeSheet). Все в Visio — каждый шейп, группа, стиль, страница, документ — имеют свой шейп-лист — таблицу, в которой хранится информация о данном объекте. Там содержатся такие данные, как высота, ширина, угол, цвет и другие атрибуты, определяющие вид и поведение шейпа. Эту таблицу можно открыть в специальном окне, добавлять или изменять содержащиеся в ней формулы. Причем аргументами могут служить как внутренние данные (имена, текстовые поля), так и данные других объектов. Visio поддерживает процесс создания и использования смарт-шейпов с помощью встроенной библиотеки функций (математических, статистических, обращения к параметрам Visio и среды) и опять же визардов.

Второй шаг — это макросы — простейшие программы, создаваемые и выполняемые непосредственно в среде Visio. Основной инструмент их разработки — встроенный Visual Basic for Applications (VBA). Макросы могут выполнять как простейшие, так и довольно сложные операции. В основном они опираются на объектную модель Visio.

Объектная модель представляет собой путь связи объектов в приложении и связи объектов с их свойствами, методами и событиями, то есть иерархию объектов. Программа управляет рисунком Visio, получая доступ к объектам и используя их свойства, методы и события.

Помимо объектов Visio для повышения функциональности рисунков могут использоваться дополнительные программируемые объекты — объекты ActiveX. Например, можно применять стандартные элементы управления Windows — кнопки, поля ввода текста, выбор из списка. Управляют ими также программы на VBA, которые запускаются событиями и действуют путем изменения свойств объектов или добавлением своих специальных методов.

И наконец, на третьем уровне автоматизации стоят программы, написанные на каких-либо универсальных языках программирования: С++, MS Visual Basic и т.д. Такая программа может существовать автономно, а может являться частью какого-то приложения, например MS Excel, позволяя выводить его данные в виде рисунка Visio.

Эти программы также опираются на объектную модель Visio. Но связь с ней происходит через специальные библиотеки типов, служащие интерфейсом и описывающие объектную модель Visio в терминах нужного языка.

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

Программа цикла

1. Смарт-шейпы. Разнообразных применений этой технологии можно насчитать великое множество. Мы рассмотрим три из них, показывающие связь геометрии шейпа с текстом и размерами рисунка:

  • размерная стрелка, текст в которой зависит от ее расположения. При перемещении концов такой стрелки текст будет показывать ее длину;
  • элемент гистограммы, прямоугольник, длина которого изменяется в зависимости от введенного числа;
  • элемент штампа чертежа, который автоматически позиционируется в нужном месте независимо от размеров листа.

2. Макросы. Рассмотрим, как построить шаблон, автоматически пересчитывающий шейпы на странице рисунка и документирующий состав открытых трафаретов.

3. Внешняя программа. Разберем программу, которая может по данным, содержащимся в таблице Excel построить рисунок со схемой сети. В качестве дополнительного условия пусть она подготовит полученный рисунок к публикации в Web.

4. Обмен данными с базами. Хотелось бы также подробнее рассмотреть задачи связи приложений Visio с базами данных при движении данных в различных направлениях. Рассмотрим такие два случая:

  • расчет стоимости комплектующих по нарисованной схеме;
  • отображение процесса бронирования мест в салоне автобуса.

Вот такие статьи должны постепенно через некоторое время появиться в нашей библиотеке. Сроки оговорить нельзя, так как многое зависит от наличия свободного времени. Программа является ориентировочной и может быть изменена как по вашим просьбам, так и под влиянием других обстоятельств. Само собой разумеется, что возможно и расширение, подключение дополнительных тем. Так что выражайте ваши пожелания в форуме.

Брязгин Дмитрий Егорович
Брязгин Дмитрий Егорович

Системный аналитик с внушительным стажем. Занимаюсь разработкой дополнительных решений для Microsoft Visio с 2013 года.

Оцените автора
VisioPort
Добавить комментарий