понедельник, 4 августа 2014 г.

Связь рисунков Visio с данными

Варианты обеспечения связи

В последнее время в некоторых (даже весьма уважаемых) источниках появляются примерно такие утверждения:
"Рисунки, связанные с данными – это функция Visio профессиональный 2013 и Visio Pro для Office 365 и она недоступна в Visio стандартный 2013".
"Обновление данных работает только в одну сторону (из базы на диаграмму), т.е. штатными средствами обновление данных в источнике не сделать".
Неправда все это! Вернее это бывает правдой в определенных случаях. Но начинающий пользователь не всегда может разобраться в тонкостях, поэтому такие утверждения сплошь и рядом его обманывают.
Любая версия Visio всегда обеспечивала как минимум несколько способов связи рисунка с данными. Вот основные из них.

Возможность разработки своего дополнения, обеспечивающего связь рисунка Visio с листом Excel или таблицей базы данных, существовала всегда (по крайней мере, последние 15 лет). Это работало и в простейших и в самых профессиональных версиях. Причем дополнение могло писать данные в любую ячейку шейп-листа, то есть в любой атрибут шейпа (фигуры). Естественно, этот путь работает и сейчас, в том числе и в Visio 2013. Только он не для всех удобен, потому что требует навыков разработки дополнения (или написания макросов).
Со временем Microsoft написала более-менее универсальное дополнение и стало включать его в комплект поставки. Это 5 визардов (помощников) для работы с БД. Визарды появились где-то в районе Visio 2000. Они считались ценными и включались в состав только профессиональных, дорогих версий. В Visio 2013 они тоже есть (только в профессиональном и Pro для Office365).
Дополнение не было в должной мере документировано, поэтому осваивается непросто. По сравнению с произвольным дополнением набор функций был конечно ограничен, но достаточно широк для решения многих универсальных задач. Передача данных поддерживается в обе стороны – из БД в шейпы и из шейпов в БД.
В качестве основного приемника данных в шейпах используются данные шейпа (Shape Data или несколько ранее Custom Properties). Хотя могут использоваться и другие атрибуты шейпов.
С введением этого дополнения стала возможным связь рисунка Visio с источником данных без программирования, только с помощью настроек.
В Visio 2007 введен еще более "продвинутый" элемент – окно "Внешние данные" и поддерживающий его транспорт данных. Принцип "без программирования" стал выражен еще ярче. Количество настроек снизилось. Количество выполняемых функций – тоже.
Новая технология стала однонаправленной. Теперь данные движутся только от базы данных в рисунок Visio. Обратный путь не обеспечивается. Дополнение работает только в профессиональных версиях Visio.
Одновременно введен еще и специальный элемент для отображения внешних данных Data Graphics – специальные выноски, которые могут автоматически прилепляться к любому шейпу после связывания его с внешними данными.
И как всегда, наиболее широко рекламируется самое последнее достижение. В случае Visio им как раз и стала связка окна "Внешние данные" и отображение в Data Graphics. То есть наиболее простая для пользователя технология с минимум функций. Именно она обладает указанными в начале свойствами – однонаправленность передачи данных и поставка только с профессиональными версиями.
Но забывать про наличие ранних, более мощных технологий – это большая ошибка. Да, они осваиваются чуть тяжелее. Зато их возможности намного превышают последний урезанный вариант. И, что тоже очень существенно, свое дополнение позволяет обойтись минимальной комплектацией Visio, а это может сэкономить (для Visio 2013) до 10 000 руб. на каждой лицензии.

Технология "Рисунки, связанные с данными"

Про эту технологию в последнее время сказано достаточно много. Вот несколько ссылок:
Связывание схем с внешними данными – пошаговый пример настройки связи между Visio 2010 и листом Excel. Тема Data Graphics не затрагивается.
Создание новых рисунков, связанных с данными – пошаговый пример добавления к шейпам предыдущей схемы элементов Data Graphics для отображения внешних данных.
Trilogy-meter Data Graphics Part I, Part II, Part III, – к сожалению, только на английском. Подробное описание решения задачи с использованием связи Visio с внешними данными. В трех последовательных статьях показан как сам процесс настройки связи с данными, так и решение сопутствующих задач (создание своих элементов Data Graphics, импорт изображений, технология обновления данных). Создавалось еще в 2009 г. для Visio 2007.
Building Custom Data Graphics for Visio 2007 – базовая статья Марка Нельсона о том, что такое Data Graphics, какие они бывают, как их создавать и как применять. Тоже на английском. От 2006 г., когда Data Graphics только зарождались.
Creating custom data graphics in Visio – современный пошаговый пример создания собственных значков. На английском.
Особенности технологии: данные двигаются только в одном направлении – из БД в рисунок Visio; технология доступна только в профессиональных версиях Visio.
Подробности
Начиная с Visio 2007 объект документ Visio содержит коллекцию объектов DataRecordSet. Объект DataRecordSet отвечает за передачу данных из БД в Visio.
Данные из DataRecordSet отображаются в окне "Внешние данные". Именно это окно пользователь видит и использует для настройки связи внешних данных с шейпами. Но программист имеет доступ и к самому объекту DataRecordSet, что позволяет использовать его в своих дополнениях, обеспечивающих, например, автоматическое соединение внешних данных с шейпами по определенному алгоритму.
В момент создания связи строки внешних данных с шейпом в шейпе автоматически создаются строки данных шейпа (Shape Data), соответствующие полям внешних данных. Строки добавляются только в том случае, если шейп не имеет строк данных с нужными наименованиями. То есть, если нужные поля создать заранее, они будут найдены и заполнены автоматически.
Область применения
Сокращенные возможности технологии предполагают и соответствующее сужение области применения. Технология применяется там, где нужно быстро добавить индикацию внешних данных на каком-либо готовом рисунке.
Яркий пример использования приведен на странице Карта Российских регионов. Здесь к основе (множество шейпов, составляющих карту) подключаются данные с сайта переписи населения в формате Excel. В результате на карте появляются в виде индикаторов данные о составе населения. Естественно, к одной и той же основе могут быть подключены различные источники данных для отображения нужной информации.
Основа не обязательно создается вручную. Она может быть получена другим дополнением Visio, например, путем автоматического построения оргсхемы организации. То есть сначала с помощью визарда оргсхем изображается структура организации, потом на нее накладывается нужная текущая информация из другой базы или файла.
Технология не обязательно заканчивается на Data Graphics. Для многих применений достаточно того, что данные появляются в Shape Data. При этом они легко могут просматриваться в интерактивном режиме через окно "Данные шейпа".
Наконец после появления внешних данных в Shape Data они могут отображаться не только в индикаторах, добавляемых к шейпу-основе. Этот шейп сам по себе может быть выполнен по технологии смарт-шейпа и изменяться в зависимости от данных. Вот пример, в котором смарт-шейпы применены в качестве таких сложных индикаторов, отображающих интенсивность использования веб-сервисов на предприятии.

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

Технология DataBase визардов

Пример подключения внешних данных из Excel к рисунку Visio 2003 рассмотрен в статье Связь шейпов Visio с данными в Excel. Пример охватывает подготовку файла в Excel, настройку связи, настройку шейпов для отображения данных, прямое и обратное обновление данных. Как уже отмечалось, по этой технологии передача данных осуществляется в обе стороны.
Через меню Add-Ons / Visio Extras в Visio 2007 доступны следующие дополнения:

  • Database Export Wizard
  • Database Refresh
  • Database Settings...
  • Database Update
  • Database Wizard
  • Export to Database...
  • Link to ODBC Database.

Два из них (Database Refresh и Database Update) являются простыми исполняющими дополнениями, а остальные 5 выполнены по типу визардов, подразумевающих настройку выполняемых операций.
Совсем не обязательно использовать весь этот комплект дополнений полностью. В описанном выше примере понадобились только Database Settings, Link to ODBC Database, Database Refresh и Database Update. В других задачах могут быть задействованы другие комбинации.
Общая схема передачи данных следующая


DataBase дополнение использует выбираемый при настройке ODBC драйвер, связывающий его с нужным источником – таблицей БД или файлом Excel. В рисунке Visio данные поставляются в секцию Shape Data.
Так же как и в вышеописанной технологии, целевой шейп может быть автоматически подстроен для приема данных в момент настройки соединения. В секцию добавляются именованные строки для приема данных, существующих в присоединяемой таблице.
Технология в основном рассчитана на ручную работу, хотя синхронизирующие дополнения Refresh и Update, как и любое дополнение могут быть вызваны программным путем из некоторого пользовательского приложения.
Область применения
Технология в принципе могла бы использоваться везде, где сейчас используется технология с окном "Внешних данных", и дополнительно в тех случаях, когда нужна обратная передача данных. Она тоже не требует знания программирования.
Тем не менее, широкого распространения она не получила. Причина скорее всего в том, что она уже вызывала трудности освоения у неподготовленного пользователя и в то же время не давала той свободы, которую предоставляет технология с разработкой своих дополнений.
Существенным ограничением является то, что связь устанавливается между конкретным шейпом и конкретной таблицей БД. Связываемые объекты должны появиться заранее и не поддерживаются сложные связки данных.

Разработка своих дополнений

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


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

1 комментарий:

  1. Этот комментарий был удален администратором блога.

    ОтветитьУдалить