Автоматическое перемещение данных, связанных со схемами Visio


Статья первоначально опубликована Кристофером Хопкинсом (Christopher R Hopkins) на английском языке здесь.

Как многие из вас знают, связать данные со схемами Visio – это просто, а поделиться ими с помощью Visio Services в SharePoint еще проще. Но что произойдет, когда вы решите переместить данные, подключенные к схеме Visio на другой сайт, в другую коллекцию сайта или даже на другую ферму?

Если вы возьмете схему Visio, которая связана с данными и переместите ее в другое место, вы можете нарушить связи данных, в зависимости от того, к какому типу данных вы подключены.

Службы Excel
Если вы подключены к данным в книге Excel связи данных хранят название и расположение книги Excel…

DataModule=Microsoft.Office.Visio.Server.EcsDataHandler,Microsoft.Office.Visio.Server; Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=http://spdemo/demo/SupplyChainDemo.xlsx;Mode=Read;Extended Properties="HDR=YES;IMEX=1;MaxScanRows=0;Excel 12.0;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False

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

SQL & SQL Azure
Если вы подключаете свои схемы к SQL или SQL azure у вас может быть прямое соединение с SQL или вы можете использовать файл ODC (что рекомендуется). Связи данных хранят полный путь к файлу ODC, как показано ниже.

Имя файла = http://spdemo/DataConnections/gd212.database.windows.net.odc

Оно должно быть обновлено после того, как вы переместите схему Visio (и файл ODC) на новый сайт или ферму.

Список SharePoint & BCS
Если вы подключаетесь к данным из списка SharePoint или из внешнего списка, связи данных записывают UniqueID этого списка также как и имя сайта, содержащего этот список.

PROVIDER=WSS;DATABASE=http://visio15demo;LIST={FAEEF716-07E1-4F22-AB65-476C4ABFB599};

Оба эти свойства можно обновить после перемещение схемы Visio на новый сайт или ферму.

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

Во вложении к этой статье вы найдёте решение SharePoint, которое продемонстрирует вам как автоматизировать процесс восстановления связей данных в схеме Visio после их перемещения на другой сайт SharePoint, ферму и т.д. В этом примере использовано изолирование решение и FeatureActivated event для запуска процесса обновления связей данных во всех VSDX файлах, которые находятся на моем сайте. Если вы посмотрите код, вы увидите, что я работаю только со связями данных, которые подключены к спискам SharePoint. Я нахожу имя оригинального списка, нахожу этот список на новом сайте, на котором расположена схема, и после этого обновляю непосредственно связи данных.

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

Этот код также демонстрирует как редактировать документ, на базе OpenXML, который хранится в библиотеке документов, в памяти, из изолированного решения.  Эта техника делает это решение идеальным для SharePoint в Office 365, где разрешены только изолированные решения.