Visualisierungsportale für
Unternehmensdaten (IT, BI)
mit Visio und SharePoint
Šenaj Lelić
V-TSP
Microsoft Schweiz
Vortrag- Text
Viele kennen Visio als Tool für Flussdiagramme,
Organigramme und Netzwerkdokumentationen. Dabei
verkennt man schnell, dass Visio eigentlich auch eine
sehr mächtige Graphikengine ist, die für viele
Visualisierungsaufgaben anprogrammiert werden kann.
Diese Session zeigt die Grundlagen der Visio Engine und
führt in die zwei Programmierumgebungen innerhalb
von Visio ein. Damit erstellte Diagramme können dann
mit SharePoint 2010 und den Visio Services publiziert
werden. Der Publikationsmechanismus der Visio Services
hat ebenso ein API welches für die programmatische
Steuerung und Navigation verwendet werden kann und
so die reine Publikation mit Funktionen erweitert.
Warum brauche ich Visio?
Netzwerkportale mit Monitoring
Prozessportale
Visualisierung von AD, SharePoint und sonstigen
Infrastrukturen
Eigene graphische Visualisierungen
Wieso Visio ?
Fertige graphische Engine
Einfach einzubinden (ActiveX, Direkte Ansteuerung,
Add-In)
Mächtige 2D Visualisierung für Diagramme (kein
Zeichenprogramm)
Standard-Microsoft Office-Tool UND Applikation
Agenda
Visio ShapeSheet – „das unbekannte Wesen“
Grundlagen im ShapeSheet
Visio Automation – „kennt man so ein wenig“
Programmierung im Objektmodell
Visio als Komponente – Das Visio Drawing Control
Einbetten und nutzen – ein paar Grundgedanken
Visio Services – Visio goes SharePoint
Grundlagen Visio Services
Nutzung und Programmierung der Visio Services
Visio Shapes
ShapeSheet Grundlagen
Das ShapeSheet
Ist die erste Programmierumgebung von Visio
Ist essenziell für die Nutzung UND Programmierung
in Visio
Ist wie ein „graphisches Excel“
Was der Anwender tut landet im ShapeSheet
Poweruser und Programmierer arbeiten direkt im
ShapeSheet
Grundlagen ShapeSheet
Der Inhalt einer Zelle heisst IMMER Formel (auch
wenn nur eine Ziffer drin steht)
Kann als Formel oder als berechneter Wert
eingesehen und genutzt werden (Wichtig im
Objektmodell)
Ist etwas USA-lastig 
Besteht aus Zellen und Zellbezügen
Demo 1
Einführung in das ShapeSheet
Programmierung im
ShapeSheet
Besteht aus dem Setzen von Zellformeln und –
funktionen
Das Visio ShapeSheet kennt hunderte von Funktionen
Mathematische
Geometrische
Logische
Relationale
ALLES was das Shape ausmacht, steht im ShapeSheet
Ausnahme: der Text des Shapes
ShapeSheet - 2
Jede Shape hat einen externen und internen Namen
Extern: Prozess.3
Intern: Sheet.5
Achtung: die IDs müssen NICHT übereinstimmen
Das ShapeSheet ist für EIN Shape definitorisch
ShapeSheet-Referenzen können auf andere Shapes und
Zeichenblätter gehen, jedoch die Datei nicht verlassen
Demo 2
ShapeSheet - 2
ShapeSheet - 3
Viele Eigenschaften des Shapes sind NUR über das
ShapeSheet erreichbar, es gibt hierfür KEINE
„Properties“ im Objektmodell
Beispiele:
Farbe in „FillForeGnd“
Breite in „Width“
Schutzfunktionen in „Protection“
Einfache „Shape-Events“ in „Events“
ShapeSheet - 4
Kenntniss des ShapeSheets ist UNERLÄSSLICH für
die Visio-Programmierung
Vorteil: die Logik liegt im Shape, nicht im Code
Deployment: Weitergabe der Schablone
Regel:
S
F
„Shapes First, Then Code“
T
C
ShapeSheet – Zus.fassung
Das Shape ist das ShapeSheet ist das Shape
Das ShapeSheet ist die Grundlage von allem
Viele Lösungen nutzen NUR das ShapeSheet
Visio Lösung := Vorlage + Schablone (+evtl. Code)
Wer Excel kann, kann auch das ShapeSheet
Visio - Code
Automation in Visio
Visio Automation
Programmierung gegen das Visio-Objektmodell
Verfügbar:
in jeder COM-Fähigen Sprache (VBA, VB6, C++)
In .NET über PIAs, C#, VB.NET etc..
Empfehlung:
Visio ab 2007 (bedingt durch Deployment NICHT
durch Code
Code auch bei 2003 möglich
Grundlegender Einstieg
Oberstes Element: Visio.Application
Dann hierarchisch:
Documents->Document->Pages->Page>-Shapes>Shape
Generell: Cells->Cell, aber andere Art von Coding!
Cells („ZellennameAusSHapeSheet“).
Programmierung am Shape
Cells.(„Zellenname“) kann als Wert oder als Formel
übergeben und ausgelesen werden:
Cells.(„XX“).Formula= String der Formel
Cells.(„XX“).Result(VisEINHEIT) = Wert
VisEINHEIT: visMilimeters, visSeconds etc..
Wichtig: übergeben Sie die richtige Einheit
Alternativ: resultStr – gibt den Inhalt immer als
(berechneten !) String zurück
Programmierung - Auswahl
Programmierung über externe EXE (Add-On)
Programmierung über Einbetten (Drawing Control)
Programmierung über In-Memory-Dll (Add-In)
ACHTUNG: Änderung von Visio 2003 zu 2007 (dann
aber konsistent mit anderen Office Add-Ins) im
Deployment
Demo 3
Visio Objektmodell - 1
Automation - 2
Prototyping in VBA ist Immer noch OK
Tip: Makro-Rekorder für „ungewöhnliche“ Zugänge
im Objektmodell
Bei Add-Ins
Application Objekt ist direkt im Application-Fields der
ThisAddin-Klasse verfügbar
Add-Ins: In-Process-Memory. Erweiterungen von Visio
Werden aber IMMER mitgeladen, also schonendes
Ressourcenhandling nötig
Dateikennezichnung über ShapeSheet
Demo 4
VBA und Makro-Rekorder
Demo 5
Visio Drawing Control und
Add-Ins
Hinweise
Das Objektmodell war bis Visio 2007 für alle
Editionen (Standard, Professional) identisch
Ab Visio 2010 blockiert das Objektmodell Aufrufe
die nicht der Edition entsprechen, bsp:
Diagram Validation: Premium only
Data Connectivity: ab Professional
Generell: bis auf Application – kein new nötig und
auch nicht unterstützt!
Visio Automation – Zsfssg.
Automation ist „die halbe Miete“
Jeder Aspekt, der nicht über das ShapeSheet zu
erreichen ist, ist per Code ansprechbar ( und Zellen
über das ShapeSheet)
Es bestehen diverse Einbindungsmöglichkeiten
Visio Services
Publikation von Diagrammen
Visio Services - Überblick
Visio Services – eine Komponente von SharePoint 2010
Grundlagen: Visio Services ist ein
PUBLIKATIONsmechanismus
Anwendung: Visio Web Access Webpart
Datenaktualisierung: Datenquellen werden aktualisiert
– und damit Datengrafiken
Endanwender-sicher: Diagramme können NICHT in
Visio Services geändert werden
Poweruser-sicher: Berechtigte Anwender KÖNNEN
die Diagramme ändern – im Visio Client
Demo 6
Visio Web Access Webpart
Grundlagen zu Visio Services
Visio Services:
Komponente von SharePoint Enterprise Server
Reine Publikation, ohne Diagrammänderung
MIT Aktualisierung der Datengrafiken (!)
Speicherung in speziellem – neuen – Format nötig:
Visio for Web oder Visio Webdrawing (VDW)
Zeigt sich dem Anwender als „Visio Web Access“
Webpart
Das Visio Services Webpart unterstützt WebpartConnections
Datenverknüpfungen in
Visio
Services
Unterstützte Data Sources
SQL
SharePoint Lists
Excel Services
OLE DB / ODBC
Custom Data Adapters
Nicht unterstützt
Access / Excel (JET & ACE)
SQL Analysis Services
Visio Services für den
Programmierer und Poweruser
Die Visio Services haben ein API: Mashup API
Das API steht z.B. als JavaScript zur Verfügung
Visualisierung von Shapedaten in anderem
Webpart über JavaScript Komponente
Highlightning von Shapes in Visio Web Access
Diagramm
Get Drawing URL and Page
Name
From
Provider sendet document URL
Consumer lädt das Diagram zur Ansicht
Page Name nur über SharePoint Designer konfigurierbar
Get Shapes to Highlight
From
Provider sendet Liste von Shape Namen
Consumer betont die angegebenen Shapes
Highlight Color nur über SharePoint Designer konfigurierbar
Get Filter Results From
Provider sendet Shape Data Werte
Consumer betont Shapes mit passenden Werten
Get Shape to View From
Provider sendet Shape Namen
Consumer zentriert Sicht auf das angegebene Shape
Zoom Level nur über SharePoint Designer konfigurierbar
Send Shape Data To
Provider ist hier VWA
Auswahl welche Daten an den Consumer gehen
Consumer verarbeitet die Argumente
Multiple Argumente nur über SharePoint Designer
Einschließlich der betroffenen Shape Data Felder
Connections verbinden
Web part page kann viele connection beinhalten
Aber: nur eine connection per connection Definition
Visio Services JavaScript API
JavaScript basiert
Programmatischer Zugriff auf
Shape Data
Hyperlinks
Ausrichtungsfeld-Koordinaten
Ebenso:
Highlight shapes
Overlays für das Diagramm
Mouse events beantworten
Pan und Zoom properties ändern
API Szenarien
Events im Diagramm bewirken Änderungen auf der
Seite
OnClick()
{
for (var j = 0; j < data.length; j++)
{
if (data[j].label == "Step")
{
document.getElementById('StepData').src=
"http://localhost:8080/details.aspx?ID=" + "'" + data[j].value + "'";
return;
}
}} // NOTE: this is pseudo code.
API Szenarien
Events auf der Seite triggern Änderungen im
Diagramm
OnClick()
{
shapes = page1.getShapes();
foreach shape in shapes
{
if (shape.data[0].value = TextBox.value)
{
shape.addHighlight();
}
}
} // NOTE: this is pseudo code.
Visio Services JavaScript API
VWA
Control
getActivePage()
setActivePage()
diagramComplete
Page
getShapes()
shapeMouseEnter
Shapes
shapeMouseLeave
selectionChanged
getItemById()
getItemAtIndex()
diagramError
Shape
Shape
getSelectedShape()
setSelectedShape()
getShapeData()
getHyperlinks()
Visio Services API
VWA Instanz und an events anbinden
//------------------------------------------------------------------------------------------------// Wait till the Visio Web Access HTML & Script has been sent
// down from the server and create a VwaControl Object
//
// Also add handlers for the onDiagramComplete & shapeSelectionChanged
//------------------------------------------------------------------------------------------------Sys.Application.add_load(onApplicationLoad)
function onApplicationLoad()
{
vwaControl= new Vwa.VwaControl("WebPartWPQ3");
vwaControl.addHandler("diagramcomplete", onDiagramComplete);
}
vwaControl.addHandler("shapeselectionchanged",
shapeSelectionChangedHandler);
Visio Services API
selectionChanged
für Shape Data handlen
function shapeSelectionChangedHandler(source, shapeId)
{
var vwaPage = vwaControl.getActivePage();
var vwaShapes = vwaPage.getShapes();
var vwaShape = vwaShapes.getItemById(shapeId);
var data = vwaShape.getShapeData();
for (var j = 0; j < data.length; j++)
{
if (data[j].label == "Step")
{
document.getElementById('StepData').src=
"http://vsdemo02:8080/processImproved.aspx?ID=" + "'" +
data[j].value + "'";
}
}
return;
Visio Services API
Overlays nutzen
vwaShape.addOverlay(
"myOverlay" + j,
generateOverlayMarkup(vwaShape),
Vwa.HorizontalAlignment.center,
Vwa.VerticalAlignment.middle,
shape.getBounds().width,
shape.getBounds().height);
function generateOverlayMarkup…
var shapeWidth = shape.getBounds().width;
var shapeHeight = shape.getBounds().height;
// Data for path is clock-wise from top left
return "<Path Stroke=\"Red\" StrokeThickness=\"2\" Fill=\"#00000000\"
Data=\"M0,0 L" + shapeWidth + ",0 L" + shapeWidth + "," + shapeHeight + "
L0," + shapeHeight + "z\" \/>";
Objekt: VWA
Properties
Version
diagramURL
displayMode
Methoden
getDiagramURL
openDiagram
refreshDiagram
getActivePage – setActivePage
getAllPageIDs
isShapeInView
Objekt: Page
Methods
getSelectedShape - setSelectedShape
centerViewOnShape
getSize
getID
getShapes
getPosition – setPosition
getZoom – setZoom
isShapeInView
Objekt: Shapes
Properties
Count
Methods
getItemAtIndex
getItemByID
Objekt: Shape
Properties
ID
boundingBoxLeft – boundingBoxRight
boundingBoxTop - boundingBoxBottom
Methods
getID
getBounds
getShapeData
getHyperlinks
addHighlight – removeHighlight (rectangle)
addOverlay – removeOverlay (html or xaml)
Demo 7
Visio Services – komplexeres
Szenario
51
Zusammenfassung
Visio Web Access Web Part
Erzeugung einfacher Dashboards mit
automatischem Refresh
Web Part Connections
Für Poweruser: erlauben mash ups ohne
Code in JavaScript
JavaScript API
Mächtige Dashboard Applikationen mit
Javascript, html, asp, etc.
Visio 2003-2010
Das Dateiformat ist das GLEICHE (Ausnahme: VDW)
Alle Lösungen auf ShapeSheet-Basis funktionieren von
2003 – 2010 gleichermassen
Funktionen werden „stummgeschaltet“ sind aber „aktiv“
wenn die richtige Plattform die Datei öffnet
AUSNAHME: Addins wie Flowchart (Code-Abhängigkeit)
Links und Referenzen
Visio 2010 SDK
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1c
dbb7e7-6bd4-488f-91bd-7bd732dbf378&displaylang=en
Visio Services
http://technet.microsoft.com/en-us/library/ff829834.aspx
Demo-Environment:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7
51fa0d1-356c-4002-9c60-d539896c66ce&displaylang=en
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
PowerPoint template
Example of a slide with a subhead
Set the slide title in “Sentence case”
Set subheads in “Sentence case”
Set subhead to 60pt to match the title size
The subhead color is defined for this template but must be
selected; In PowerPoint 2007/2010, it should match the section title
color
Hyperlink color: www.microsoft.com
Bar chart
Line chart