marcel gnoth - office programmierung im.net zeitalter geschäftsdaten intelligent mit dokumenten...

117
Marcel Gnoth - www.gnoth.net Office Programmierung im .Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Upload: wilhelmina-geschke

Post on 05-Apr-2015

119 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Office Programmierungim .Net Zeitalter

Geschäftsdaten intelligent mit Dokumenten verbinden

Page 2: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 2

Kurze Vorstellung

• Dipl. Inf. Marcel Gnoth, MCSD ([email protected])– Bis Sep. 05 bei der Berliner NTeam GmbH– Ab Jan. 06 bei Avanade Deutschland

• Autor – dotnetpro, dotnet-magazin, Developerworld, MSDN– SQL Server 2005 Buch, Galileo Computing, Feb ‘06

• Sprecher – BASTA! + SQLCON– SQL Server Days (28.-29. Nov. 05 in München)

• Themen– VB6, COM, SQL Server, .Net– Verteilte nachrichtenbasierte Informationssysteme

• MS Message Queueing, SQL Server Service Broker

– Office System 2003 Integration– Reisen in ferne Länder: www.gnoth.net/reise.htm

Page 3: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 3

Agenda

• Office Entwicklung – Überblick

• Kurzer Ausflug zu den Research Services

• Office Dokumente und XML

• Visual Studio Tools für Office (VSTO 2.0)– Smart Tags

• Information Bridge Framework (IBF 1.5)– SmartTags

Page 4: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Office Entwicklung – Überblick

Programmierung im .NET Zeitalter

Page 5: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 5

Office als Client

• Mehr als 400 Mio Officeinstallationen• Für sehr viele Menschen ist Office das

Hauptwerkzeug im Büro• Wie kann Ihnen das Arbeiten leichter gemacht

werden?• Weniger neuen Features für den Anwender• Bessere Integration in die Unternehmens IT

Page 6: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 6

Probleme im Büroalltag für Anwender...

• Anwender muss Informationen in verschiedenen Systemen zusammensuchen– Outlook, SharePoint, CRM, in HR, in SAP, SQL Server,

Oracle, ... – Anwender muss in der Lage sein, diese Systeme zu

bedienen, auch wenn er/sie nur selten damit arbeitet– Schneller Zugriff auf Infos

• Keine Unterstützung bei der Dateneingabe– Viel manuelle Tipparbeit– Keine Validierung

• Austausch zwischen den verschiedenen Systemen könnte für den Anwender leichter sein.– Nur Copy & Paste– Oder abtippen

Page 7: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 7

Probleme im Büroalltag für IT ...

• Office Dokumente sind Freitext– Nutzer kann fehlerhafte, unstrukturierte Eingaben machen– schlechte Datenqualität– Elektronische Verarbeitung der Informationen aufwendig

• Formulare mit Word und Excel erstellen– InfoPath ist noch nicht weit verbreitet– Prüfen des Inhalts

• Dokumentformat properitär– Austausch mit anderen heterogenen Systemen schwierig

• Elektronische Verarbeitung (auf Servern) aufwendig– Office Installation auf dem Server unerwünscht

• Verteilung von Office Lösungen• Sicherheit

Page 8: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 8

Wege zur Lösung

• Taskpane / Aufgabenbereich– Formulare zur Dateneingabe– Nachschlageergebnisse– Informationen / Aktionen

• XML-Dateiformat und XML-Schemata– Offenes Dateiformat – Kein Freitext mehr– Kontextbezogener Zugriff auf TaskPane– Serververarbeitung von Dokumenten

• Smart Tags– Kontextbezogener Zugriff auf TaskPane– Aktionen und Infos zu einem selektierten Bereich

• Webservice Zugriff– Nachschlagewerke, Datenaustausch

Page 9: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 9

Big View - Technologieübersicht

XML Dateiformat

und Schemata

Smart Tags

ResearchService

- Formulare- Prüfen der Daten- Serververarbeitung- Datenaustausch- Kontextsensitive Unterstützung

InformationBridge

Framework

VSTO 2.0

- Nachschlagen von Informationen- Übernehmen von Daten in das Dokument- Zwei einfache Webservices

- Nachschlagen von Informationen- Interaktion mit LOB Apps- TaskPane- Datenaustausch

- Programmierung der Taskpane- Dokumente auf Server verarbeiten- Dateninseln für Offline Zugriff- Datenaustausch

VBA und Webservice

Toolkit

- Office Automation- Zugriff auf Webservices- keine Programmierung für die TaskPane

- Erkennen von Texten- Aufrufen von Aktionen

BizTalkServer

SQLServer

SharePoint

Page 10: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Research Services

Nachschlagewerke für das eigene Unternehmen

Page 11: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 11

Research Services (RS) – Überblick

• Recherche von Informationen über Webservices– Word, Excel, PPT, Outlook, Publisher, OneNote, Visio, IE

• Anzeige der Ergebnisse in der TaskPane• Übernahme von Daten in das Dokument

• Office enthält RS – Thesaurus und Übersetzung– Wörterbuch, Enzyklopädie, Web Suche, Aktienkurse

• SharePoint durchsuchen

• Kommerzielle Anbieter– Factiva, eLibrary, Gale, WorldLingo

Page 12: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 12

Research Beispiele

Page 13: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 13

Eigene Research Services entwickeln

• Beliebige Sprache, beliebige Plattform für Webservice– SOAP Response muß Schemata entsprechen

• Zwei Methoden– Register (oder Registry-Keys direkt schreiben)– Query

• MS Werkzeuge– RS - SDK– RS - Development Extras (RSDE)

• Simple Smart Tag Actions– Insert, Copy, NewQuery, Hyperlink

Page 14: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 14

RS – Schemata

Page 15: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 15

RS – Development Extras (RSDE)

• Separater Download• Research Services Class Library (RSCL)

– OO-Wrapper für SDK Schemata– Erleichtert Programmierung– Mit Quellcode

• RSCL Wizard – Neuer Projekttyp– Mit Quellcode

• Viele Samples• Research Services

Tracing and Validation Tool (RSTV) zum debuggen

Page 16: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 16

Deployment / Registry

• Installation durch Anwender– Eingabe der URL

• Installation durch Admin– Verwenden einer .reg - Datei– HKEY_CURRENT_USER\Software\Microsoft\...

…Office\11.0\Common\Research– HKEY_LOCAL_MACHINE\Software\Microsoft\...

…Office\11.0\Common\Research

Page 17: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Research Services

Page 18: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 18

Fazit Research Services

• Einfache Recherche aus Office Applikationen heraus

• Kombinieren mit Volltextsuche des SQL Servers

• Dynamisches Update

• WS können auf jedem System gehostet werden!

SELECT ProductName, QuantityPerUnitFROM ProductsWHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')

SELECT ProductName, QuantityPerUnitFROM ProductsWHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')

Page 19: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

XML – Schemata und Office Dokumente

Schluss mit dem Freitext

Page 20: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 20

Big View - Technologieübersicht

XML Dateiformat

und Schemata

Smart Tags

ResearchService

- Formulare- Prüfen der Daten- Serververarbeitung- Datenaustausch- Kontextsensitive Unterstützung

InformationBridge

Framework

VSTO 2.0

- Nachschlagen von Informationen- Übernehmen von Daten in das Dokument- Zwei einfache Webservices

- Nachschlagen von Informationen- Interaktion mit LOB Apps- TaskPane- Datenaustausch

- Programmierung der Taskpane- Dokumente auf Server verarbeiten- Dateninseln für Offline Zugriff- Datenaustausch

VBA und Webservice

Toolkit

- Office Automation- Zugriff auf Webservices- keine Programmierung für die TaskPane

- Erkennen von Texten- Aufrufen von Aktionen

BizTalkServer

SQLServer

SharePoint

Page 21: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 21

XML in Office

• Offenes XML-Dateiformat

• Verknüpfen der Dokumente mit einem XML-Schema

• GUI-Integration über Aufgabenbereich(auch Outlook ein bisschen)

• Excel Limitationen– Features and limitations of XML Spreadsheet format

• http://office.microsoft.com/en-us/assistance/HP010733621033.aspx

Page 22: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 22

Freitext

Page 23: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 23

Freitext

Page 24: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 24

Inhalt als XML

<ConferenceReport> <Date>3/24/2004</Date> <Summary> <Keyword>XML Conference (Europe)</Keyword> <Abstract>Role of XML on the Desktop</Abstract> </Summary> <Attendees> <Attendee Name="John" Doe”> <Department>Health Agency</Department> <Potential> <Sales>100</Sales> <Growth>25%</Growth> <Remarks>The team comprises great innovators</Remarks> <ToDo>Contact their IT Manager</ToDo> </Potential> </Attendee> <Attendee Name="Judith" Jones”> <Department>Finance Agency</Department> </Attendee> </Attendees> <Conclusion>Organize another European tour </Conclusion></ConferenceReport>

Page 25: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 25

Formatierungen

Page 26: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 26

Formatierung als XML

• WordML• Eigenes Schema• HTML ähnlich• Keine verschachtelten

Tags

<w:p> <w:r> <w:rPr> <w:b /> </w:rPr> <w:t>John Doe</w:t> </w:r> <w:r> <w:rPr> <w:i /> </w:rPr> <w:t>Health Agency</w:t> </w:r></w:p>

Page 27: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 27

Dokumente und XML-Schemata

• Selbstdefinierte (Geschäfts-) Schemata– Datenorientiert

• Kunde, Auftrag, Mitarbeiter, ...

– Erlauben Zerlegung des Dokumentes in Datenelemente

• MS-Referenz-Schemata– Präsentationsorientiert

• Fett, Kursiv, Tabelle, Zelle, ...

– WordprocessingML, SpreadsheetML

– Erzeugen und verändern von Officedokumenten auf dem Server ohne Office

• WordprocessingML Transform Inference Tool

– Austausch mit heterogenen Systemen

Page 28: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 28

Hello World - etwas schöner

<?mso-application progid="Word.Document"?><w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-

microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><o:DocumentProperties><o:Title>Hello World</o:Title><o:Author>John Peltonen</o:Author><o:LastAuthor>John Peltonen</o:LastAuthor><o:Revision>1</o:Revision><o:TotalTime>0</o:TotalTime><o:Created>2004-02-18T04:15:00Z</o:Created><o:LastSaved>2004-02-18T04:15:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>1</o:Words><o:Characters>12</o:Characters><o:Company>3SHARP</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>12</o:CharactersWithSpaces><o:Version>11.5604</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/></w:fonts><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style></w:styles><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:proofState w:grammar="clean"/><w:attachedTemplate w:val=""/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXML w:val="off"/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat></w:docPr>

<w:body><wx:sect><w:p><w:r><w:t>Hello World!</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440"

w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect>

</w:body></w:wordDocument> Section PropertiesSection Properties

Namespace DeclarationsNamespace Declarations

Document PropertiesDocument Properties

Page 29: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 29

XML und Word

Plain XML vs Word XML:

Your XML

WordMLMicrosoft Corp.

2/21/2003

Strong Buy

Word

Microsoft Corp.

2/21/2003

Strong Buy

Microsoft Corp.

2/21/2003

Strong Buy

Save ‘Data Only’ or Transform

Transform

Open/Save

Database

WYSIWYG Web Page

Microsoft Corp.

2/21/2003

Strong Buy

Transform

Page 30: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 30

XML in Word-Formularen

Page 31: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 31

XML - Schema Validierung

• Bei der Eingabe

• Platzhalter bei der Eingabe• Dokumente schützen

Page 32: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Word – XML – Excel

Microsoft Office System 2003

Page 33: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 33

Fazit

• XML-Format eröffnet viele neue Wege– Verarbeiten von Dokumenten ohne Office– WordprocessingML Transform Inference Tool – Schemavalidierung– Datenaustausch

• Formulare in Word oder Excel– InfoPath bietet mehr, ist aber nicht überall nötig

• Ablage im SharePoint– Automatisch in DB eintragen

• Kontextsensitive Unterstützung für den Anwender– folgt …

Page 34: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Smarte Dokumente

Der klassische Weg

Page 35: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 35

Was ist ein smartes Dokument ?

• Dokument ist mit einem XML Schema verknüpft

• Abhängig von der Cursorposition im Dokument passen sich Funktionen der Taskpane an

• SmartTags erkennen Text im Dokument– Anwender kann Informationen und Aktionen für den

erkannten Text abrufen

• Offline Funktionalität

Page 36: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 36

Klassischer Weg: ISmartDocument

• COM Schnittstelle– Von .NET aus unangenehm, wegen COM-Interop– viel Late Binding

• Schnittstelle ist sehr altmodisch– Steuerelemente werden über Index angesprochen

• Vertigo Wrapper für COM-ISmartDocument– Kostenlos, mit Quellcode, nicht supported– http://vertigosoftware.com/wrapper

• Neue Projekttypen in VS.Net• Kapselt das ISmartDocument Interface

– Objektorientiert – Programmierung einfacher– Weniger Flexibilität

Page 37: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

VSTO

Page 38: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 38

Big View - Technologieübersicht

XML Dateiformat

und Schemata

Smart Tags

ResearchService

- Formulare- Prüfen der Daten- Serververarbeitung- Datenaustausch- Kontextsensitive Unterstützung

InformationBridge

Framework

VSTO 2.0

- Nachschlagen von Informationen- Übernehmen von Daten in das Dokument- Zwei einfache Webservices

- Nachschlagen von Informationen- Interaktion mit LOB Apps- TaskPane- Datenaustausch

- Programmierung der Taskpane- Dokumente auf Server verarbeiten- Dateninseln für Offline Zugriff- Datenaustausch

VBA und Webservice

Toolkit

- Office Automation- Zugriff auf Webservices- keine Programmierung für die TaskPane

- Erkennen von Texten- Aufrufen von Aktionen

BizTalkServer

SQLServer

SharePoint

Page 39: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 39

VSTO Roadmap

Office Professional Edition 2003Office Professional Edition 2003

Visual Studio Visual Studio projects for Word projects for Word and Exceland ExcelDocument-centric Document-centric customizationscustomizations

Version 2003

Version 2005

Visual Studio .NET 2003Visual Studio .NET 2003 Visual Studio 2005Visual Studio 2005

Word and Excel Word and Excel hosted in VS IDE hosted in VS IDE View controlsView controlsActionsPaneActionsPaneSchema-based Schema-based programming programming modelmodelServer-accessible Server-accessible data islanddata islandManaged Managed SmartTagsSmartTags

Page 40: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 40

Überblick VSTO

• Strategisches Tool für Office Entwicklung• Office Applikationen haben COM-API

– VSTO soll Interop erleichtern

• VSTO 1.0– Nur eine dünne Schicht über der COM API

• VSTO 2.0– Word und Excel Vorlagen und Designer für VS.Net– Outlook Add-ins– InfoPath Toolkit

• Gedacht für professionelle Entwickler– VS.Net– .Net Framework– Wird nicht VBA ersetzen (Für Enduser)

Page 41: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 41

Features VSTO 2.0

• Integrierte Designer für VS• Voller Zugriff auf .NET Framework, Web Services,

ADO .NET, integriertes Debugging• Databinding, Data Cache (Offlinedata)

• Unterstützt managed Controls – (Microsoft und Drittanbieter)

• Neue VSTO “Host” Controls

• Managed Document Actions Pane & Smart Tags

• Schemabasiertes Programmiermodell• CLR-basiertes Sicherheitsmodell

Page 42: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Designer, Controls und die ActionsPane

Word und Excel in Visual Studio

Page 43: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 43

Neue Designer1. Drag+Drop onto Designer

2. Designer-generated

managed classes

3. First-class

managed citizens

Page 44: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 44

Controls

• Managed Controls (WinForms-Controls)• Spezielle Host Controls

– Erweitern OO-Modelle, DataBinding– Host Controls in Excel

• Chart, ListObject• NamedRange, XMLMappedRange

– Host Controls in Word• Bookmark• XMLNode, XMLNodes

• Steuerelemente können dynamisch hinzugefügt und gelöscht werden– Ermöglicht interaktive Dokumente, Controls werden

abhängig vom Anwenderverhalten erzeugt und entfernt

Dim txtData As Microsoft.Office.Tools.Excel.Controls.TextBoxtxtData = Me.Controls.AddTextBox(10, 10, 100, 100, "txtData")txtData.Text = "Hallo"

Dim txtData As Microsoft.Office.Tools.Excel.Controls.TextBoxtxtData = Me.Controls.AddTextBox(10, 10, 100, 100, "txtData")txtData.Text = "Hallo"

Page 45: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 45

Programmierbare TaskPane1. Design a UserControl

2. Add control behaviour

3. Add the control to the ActionsPane

Page 46: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 46

ActionsPane Programmierung

• ActionsPane wird sichtbar, wenn Steuerelemente hinzugefügt werden

• Docking der TaskPane– Nicht nur links, auch recht, oben und unten– Stackorder der Controls

Globals.ThisWorkbook.ActionsPane.Controls.Add(New DateTimePicker)

Globals.ThisWorkbook.ActionsPane.Controls.Add(New DateTimePicker)

Globals.ThisWorkbook.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTopGlobals.ThisWorkbook.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop

Page 47: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Controls und ActionsPane

Microsoft Office System 2003

Page 48: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Data-Island

Daten reisen mit dem Dokument

Page 49: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 49

Data Cache / Data Islands

• Dokumente können mit Daten befüllt werden– Auf Server oder Client– Data Caching erzeugt ein “Data Island” im Dokument– Daten sind verfügbar, auch wenn der Client offline ist

• Klasse ServerDocument bietet Zugriff ohne Office• Skalierbar und gut für ASP.NET geeignet

• VSTO Data-Caching unterstützt– Alle Public Properties mit dem Cached-Attribut– Klasse muss vom XMLSerializer serialisierbar sein

Page 50: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 50

Dateninseln auf dem Client

Windows Client

Microsoft Office Professional 2003

.NET Framework

Schemas

Data Island

VSTO Runtime

Web Web ServicesServices

Client

VSTO Assembly

Deployment Server

LoB Data

Page 51: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 51

Dateninseln auf dem Servers

Windows Server

.NET Framework

Data CacheData Island

Server-side

Assembly

Server

VSTO ServerDocument Assembly

Page 52: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 52

Dateninseln im Dokument - Code

• Im Dokument “Sonntag”, Blatt “Tabelle1”:

• Auf dem Server ohne Office füllen

Dim dataHostItem1 As CachedDataHostItem = _ srvDoc.CachedData.HostItems("Sonntag.Tabelle1")Dim dataItem1 As CachedDataItem = _ dataHostItem1.CachedData("derKunde")If dataItem1.Xml Is Nothing Then Dim derKunde As New ClassLibrary1.CKunde derKunde.Name = "Marcel1" derKunde.Bestellung = "Bier1" dataItem1.SerializeDataInstance(derKunde) srvDoc.Save() srvDoc.Close()End If

Dim dataHostItem1 As CachedDataHostItem = _ srvDoc.CachedData.HostItems("Sonntag.Tabelle1")Dim dataItem1 As CachedDataItem = _ dataHostItem1.CachedData("derKunde")If dataItem1.Xml Is Nothing Then Dim derKunde As New ClassLibrary1.CKunde derKunde.Name = "Marcel1" derKunde.Bestellung = "Bier1" dataItem1.SerializeDataInstance(derKunde) srvDoc.Save() srvDoc.Close()End If

<Cached()> Public derKunde As DI_Kunde_Lib.CKunde<Cached()> Public derKunde As DI_Kunde_Lib.CKunde

Page 53: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Data Islands

Microsoft Office System 2003

Page 54: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

VSTO - Smart Tags

Kontextbezogene Hilfe

Microsoft Office System 2003

Page 55: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 55

Was sind SmartTags?

• Erkennt Text in Dokumenten• Bietet Aktionen dafür an

Smart Tag Action Button

Lila gepunktete Linie: Smart Tag Kennzeichnung

Page 56: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 56

Entwicklung von Smart Tags

• Smart Tag COM-API– Alle Möglichkeiten des .Net Frameworks– Programmierung (COM-Interface)

• ISmartTagRecognizer, ISmartTagAction • C#, VB.NET, C++ oder VB6• .Net Applikationen verwenden COM Interop und VSTO Loader

– Benötigen Setup (Einträge in die Registry)• HKEY_CURRENT_USER\Software\Microsoft\Office\Common\

Smart Tag\Recognizers

– SmartTags sind systemweit aktiv in allen SmartTag fähigen Applikationen und Dokumenten

• Microsoft Office Smart Tag List (MOSTL)– Für “einfache” Smart Tags

• C:\Programme\Gemeinsame Dateien\Microsoft Shared\Smart Tag\LISTS\1031

– Leichte Entwicklung und Deployment

Page 57: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 57

Managed SmartTags mit VSTO und IBF

• VSTO bringt eigene Klassen mit– Microsoft.Office.Tools.Word.SmartTag und … Action– Microsoft.Office.Tools.Excel.SmartTag und … Action– Sehr einfache Managed Entwicklung– Aber nur lokal im Dokument gültig, werden im Dokument

registriert, nicht systemweit– Reicht aber in sehr vielen Fällen aus, ist sogar besser

• IBF-Client installiert ein generisches SmartTag– Spezielle managed IBF-SmartTags implementieren– SmartTags sind in allen IBF-fähigen Anwendungen gültig– Siehe IBF-Teil

Page 58: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 58

VSTO SmartTag Klassen

• SmartTag Objekt– Excel: Microsoft.Office.Tools.Excel.SmartTag– Word: Microsoft.Office.Tools.Word.SmartTag– Namespace ist wichtig, es gibt auch

Microsoft.Office.Interop.Word.SmartTag

• Konstruktor Parameter– SmartTag Typ– Caption

Dim myTag As SmartTag = New SmartTag _ ("www.gnoth.net#office", "Product Info")Dim myTag As SmartTag = New SmartTag _ ("www.gnoth.net#office", "Product Info")

Page 59: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 59

Recognizer initialisieren

• Recognizer erkennt Texte• Terms Collection

– Statische Strings– Achtung, nicht zu viele verwenden

• Expressions Collection– Reguläre Ausdrücke

myTag.Terms.Add("Tofu")myTag.Terms.Add("Halumi") myTag.Expressions.Add( _ New System.Text.RegularExpressions.Regex _ ("[A-Z]{1}[0-9]{3}"))

myTag.Terms.Add("Tofu")myTag.Terms.Add("Halumi") myTag.Expressions.Add( _ New System.Text.RegularExpressions.Regex _ ("[A-Z]{1}[0-9]{3}"))

Page 60: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 60

Aktionen hinzufügen

• Menüeinträge für SmartTag-Kontextmenü• Action-Objekte erstellen

– Excel: Microsoft.Office.Tools.Excel.Action– Word: Microsoft.Office.Tools.Word.Action

• Caption-Property setzen• Zum Actions-Array des SmartTags

hinzufügen

Dim theAction As Action = New Action("Hole es Dir")myTag.Actions = New Action() {theAction}Dim theAction As Action = New Action("Hole es Dir")myTag.Actions = New Action() {theAction}

Page 61: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 61

Ereignisse einer Action

• BeforeCaptionShow• Click

AddHandler theAction.Click, New _ ActionClickEventHandler(AddressOf theAction_Click)

AddHandler theAction.BeforeCaptionShow, New _ BeforeCaptionShowEventHandler(AddressOf _ theAction_BeforeCaptionShow)

Sub theAction_Click(..., ByVal e As ActionEventArgs)

Dim txtW As New TextBox txtW.Text = e.Text Globals.ThisDocument.ActionsPane.Controls.Add(txtW)

End Sub

AddHandler theAction.Click, New _ ActionClickEventHandler(AddressOf theAction_Click)

AddHandler theAction.BeforeCaptionShow, New _ BeforeCaptionShowEventHandler(AddressOf _ theAction_BeforeCaptionShow)

Sub theAction_Click(..., ByVal e As ActionEventArgs)

Dim txtW As New TextBox txtW.Text = e.Text Globals.ThisDocument.ActionsPane.Controls.Add(txtW)

End Sub

Page 62: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 62

SmartTag mit Dokument verknüpfen

• VSTO-SmartTags sind nur in Dokumenten aktiv, mit denen sie verknüpft sind

• VstoSmartTags Collection– Excel: ThisWorkbook class– Word: ThisDocument class

'in Public Class ThisDocument

Me.VstoSmartTags.Add(myTag)

'in Public Class ThisDocument

Me.VstoSmartTags.Add(myTag)

Page 63: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

VSTO SmartTag

Microsoft Office System 2003

Page 64: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

VSTO - Deployment

Verteilung und Sicherheit von VSTO-Anwendungen

Microsoft Office System 2003

Page 65: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 65

Sicherheit in VBA

• VBA-Code in Dokumenten kann geblockt werden– Low, Medium, & High security modes

• AuthentiCode Signaturen für Code Authentifizierung• Codeausführung: Alles oder nichts• Anwender treffen „mutige“ Entscheidungen

– „Dumm, aber glücklich!“

Page 66: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 66

Code Access Security (CAS)

• VSTO erzeugt normale .Net Assemblies• CAS muß auf dem Client konfiguriert sein• Caspol.exe oder .Net Framework Konfiguration

– Assembly Location– Assembly Strong Name

• Keine Entscheidung des Anwenders– Kein

„Makro aktivieren J/N“

Caspol.exe -ag All_Code -url "file://C:/Smart Doc Files/*" FullTrust

-n NorthwindSmartDocDemo

Page 67: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 67

Dokumenten Sicherheit

• Dokument auf freigegebener Netzressource– UNC– SharePoint

• Dem Dokument muss vertraut werden– Office Document Membership Condition – http://msdn2.microsoft.com/en-us/library/9w6bd8f1(en-US,VS.80).aspx – http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=13696

– Msosec.dll

• Oder Full Trust für freigegebener Netzressource

Page 68: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 68

Verknüpfung Dokument – Assembly

• Dokument -> Eigenschaften– In VSTO 1.0 Pfad zum Assembly– In VSTO 2.0 nur GUID des

Runtime Storage Control

– In VSTO 2.0 ist Application Manifest im Dokument gespeichert

– Application Manifest verweist auf ein Deployment Manifest auf dem Server

AssemblyDeploymentManifest

ApplicationManifest

Dokument

Dok. auf dem ClientAuf dem Server

Page 69: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 69

Self Updating Process

ExcelDoc.xls

manifest.xml

<manifest><deploy url=http://…/deploy.xmlversion=“1.0”/>

<manifest> . . .curVersion=”1.0” . . .</manifest>

Deploy.xml

<manifest><deploy url=http:…/deploy.xml version=“1.0”/> . . .

ExcelApp.dll 1.0

<manifest> . . .curVersion=”1.1” . . .</manifest>

<manifest><deploy url=http:…/deploy.xml version=“1.1”/><assembly Name=“ExcelApp.dll” updateURL= http://../ExcelApp.dll

ExcelApp.dll 1.1

<manifest><deploy url=http:…/deploy.xml version=“1.1”/><assembly Name=“ExcelApp.dll” updateURL= http://../ExcelApp.dll

Page 70: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 70

Verteilungswerkzeuge

• Publish Wizard– Erstellt Application und Deployment Manifeste– Verteilt Lösung an einen bestimmten Ort (http://Server/...)

• ServerDocument Klasse– Methoden und Properties für den Zugriff auf Manifeste

• MSI Files• Manuell

msbuild.exe /target:Publish /property:PublishDir =\\PublishSrv\PublishDir\ /property:UpdateUrl =\\DeploymentSrv\DeployDir\ C:\ExcelWorkbook1\ExcelWorkbook1.csproj

Page 71: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 71

Offline Zugriff auf Assemblies

• Wie kann sichergestellt werden, das der Anwender auch offline mit den Assemblies arbeiten kann?– Installation der Assemblies lokal auf dem Computer– Internet Explorer Cache– IntelliMirror

• Die Dokumente können auch ohne Verbindung zum Assembly bearbeitet werden

Page 72: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 72

VSTO Client Requirements

• Office 2003 Professional Edition SP1– Oder Excel/Word/Outlook standalone editions

• .NET Framework 2.0• VSTO 2005 Runtime• Office Primary Interop Assemblies (PIAs)• Sicherheitseinstellungen

Page 73: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Publish Wizard

VSTO 2003

Page 74: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Information Bridge Framework

Office Dokumente mit verschiedenen

LOB – Daten verknüpfen

Page 75: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 75

Big View - Technologieübersicht

XML Dateiformat

und Schemata

Smart Tags

ResearchService

- Formulare- Prüfen der Daten- Serververarbeitung- Datenaustausch- Kontextsensitive Unterstützung

InformationBridge

Framework

VSTO 2.0

- Nachschlagen von Informationen- Übernehmen von Daten in das Dokument- Zwei einfache Webservices

- Nachschlagen von Informationen- Interaktion mit LOB Apps- TaskPane- Datenaustausch

- Programmierung der Taskpane- Dokumente auf Server verarbeiten- Dateninseln für Offline Zugriff- Datenaustausch

VBA und Webservice

Toolkit

- Office Automation- Zugriff auf Webservices- keine Programmierung für die TaskPane

- Erkennen von Texten- Aufrufen von Aktionen

BizTalkServer

SQLServer

SharePoint

Page 76: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 76

Warum IBF ?

• Emails und Dokumente beziehen sich auf Geschäftsentitäten (Kunde, Bestellung, ... )

• Daten befinden sich in verschiedenen Systemen• Es gibt keinen einfachen Weg diese Daten

in Beziehung zu setzen• Schulung der Anwender für die Systeme• Copy & Paste ist einzige Integration

• Zugriff auf LoB Daten über Webservices– Oder Assemblies

• Wenig Programmierung,deklarativer Ansatz– Dafür gute XML-Kenntnisse erforderlich

Find Customer Account Rep

Find Orders

MS Word Task Pane

Option1Option1

Child

ChildChildChild

Label

LabelMary : Ford order is late. Please investigate.

Copy & Paste

Page 77: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Was kann IBF

Page 78: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 78

IBF-Architektur

• Ablauf eines IBF-Requests

Windows 2003 Server Services

.NET Framework

IBF Metadata Store

SQL Server 2000

IBF (Metadata Service)

Windows Client

XML

Microsoft Office Professional Edition

Web Services.NET Framework

Information Bridge Framework

Client Server

CRM

ERP Other Data

Metadata Service

In

form

ati

on B

ridg

e E

ngin

e1User selects “Show

Details” from Smart

Tag

2

CAS Interprets “Context” using Metadata

3Call Web Service to retrieve data

Smart TagDisplays data in Taskpane

5

4 Returns data

Page 79: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 79

Installation

• Server– Windows 2003 + IIS für IBF-Webservices– SQL Server 2000 +– MOIBF 1.0 Server

• Client– Office 2003 (mit Primary Interop Assemblies !!!)– Visual Studio 2003– MOIBF 1.5 Client (Anwender, Entwickler)– MOIBF 1.5 Meta Data Designer (Entwickler)

• ACHTUNG: verträgt sich nicht gut mit VS2005! – http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.offi

ce.informationbridge&mid=f7163331-ecd1-4588-8395-558890ca41dd

• LOB – Webservices

Page 80: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

IBF-Entwicklung

Eine kleines Projekt

Page 81: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 81

Eine IBF-Lösung - Übersicht

• IBF ist ein Framework für:– Zugriff auf Webservices– Zugriff auf Assemblies– Anzeige von Informationen in der TaskPane– Interaktion mit SmartTags

• Eigentlich keine Programmierung • Alles XML-Metadaten (XML, XSD, XSLT, XPath)• Ausnahmen

– SmartTag (Standardlösungen vorhanden)– Evtl. UserControls (können vom Wizard generiert werden)– Evtl. WinForms– Evtl. Webservices für LOB-Zugriff– Evtl. Office Automation

Page 82: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 82

Vorgehen bei IBF Programmierung

• Gründliche Planung (Use Cases)• Definition von Artefakten und Entitäten

– Ansichten (View) der Entitäten (Geschäftsobjekte)– Referenzen (Reference) für Zugriff auf Entitäten– Beziehungen (RelationShip) zwischen Entitäten– Operationen (Operation)

• Webservices– Nach Möglichkeit an IBF angepasst

• Metadaten mit VS 2003 erstellen– Designer + Wizards

• SmartTag mit VS 2003 programmieren

Page 83: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 83

IBF – Views

• Darstellung einer Entität– Mind. eine Default-View– Mehrere Views für eine Entität möglich

• Views in XML planen

<Customer xmlns="NTeam-Data"><CustomerID></CustomerID><CompanyName></CompanyName><ContactName></ContactName><ContactTitle></ContactTitle> <EMail></ EMail >

<Region></Region><Phone></Phone></Customer>

<Customer xmlns="NTeam-Data"><CustomerID></CustomerID><CompanyName></CompanyName><ContactName></ContactName><ContactTitle></ContactTitle> <EMail></ EMail >

<Region></Region><Phone></Phone></Customer>

<BookView xmlns=" NTeam-Data"><ISBN></ISBN>

<Title></Title><SuggestedPrice></SuggestedPrice></BookView>

<BookView xmlns=" NTeam-Data"><ISBN></ISBN>

<Title></Title><SuggestedPrice></SuggestedPrice></BookView>

Page 84: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 84

IBF – References

• Ähnlich einem Primärschlüssel– Ermöglichen Zugriff auf Daten einer bestimmten Entität– ViewLocator verwendet die Referenzen

• Mehrere Referenzen für eine Entität möglich– Mind. eine Default-Referenz– Kunde – KundenID– Kunde – Email

<CustomerID ID="ALFKI" xmlns=" NTeam-Data " />

<CustomerEmail Address="[email protected]" xmlns="NTeam-Data" />

<BookIDReference ISBN=”0972317937” xmlns="NTeam-Data"/>

<CustomerID ID="ALFKI" xmlns=" NTeam-Data " />

<CustomerEmail Address="[email protected]" xmlns="NTeam-Data" />

<BookIDReference ISBN=”0972317937” xmlns="NTeam-Data"/>

Page 85: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 85

Erstellen von Geschäftsklassen

• Nur, wenn Sie die Webservices selber erstellen

• Für jede View und für jede Referenz eine Klasse erstellen

• Diese Klassen mit XML-Attributen versehen– Werden vom XMLSerializer in das geplante XML serialisiert

• Diese Klassen dienen als Parameter für die zu erstellenden Webservices

Page 86: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 86

Erstellen der Customer-Klasse

• Klasse Customer mit XML-Attributen für den XMLSerializer

[XmlRoot("Customer",Namespace="Cust...",IsNullable=false)][XmlType("Customer", Namespace="Customer-Data")]public class Customer {

// Customer ID[XmlElement]public string CustomerID {

get{return this._CustomerID;}set{this._CustomerID = value;}

}// Company Name[XmlElement]public string CompanyName {

get{return this._CompanyName;}set{this._CompanyName = value;}

}...

}

[XmlRoot("Customer",Namespace="Cust...",IsNullable=false)][XmlType("Customer", Namespace="Customer-Data")]public class Customer {

// Customer ID[XmlElement]public string CustomerID {

get{return this._CustomerID;}set{this._CustomerID = value;}

}// Company Name[XmlElement]public string CompanyName {

get{return this._CompanyName;}set{this._CompanyName = value;}

}...

}

Page 87: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 87

Erstellen der CustomerID-Referenz

• Klasse Customer_ID mit XML-Attributen für den XMLSerializer

• Analoge Klassen für die anderen Referenzen (Email, …)

//<CustomerID CustomerID="ANYCUSTOMERID" xmlns="Cust..."/>[XmlRoot("CustomerID", Namespace="CustomerID-Data",

IsNullable=false)][XmlType("CustomerID", Namespace="CustomerID-Data")]public class Customer_ID {

// Fieldsprivate string _CustomerID;// Customer ID Attribute[XmlAttribute]public string CustomerID {

get{return this._CustomerID;}set{this._CustomerID = value;}

}}

//<CustomerID CustomerID="ANYCUSTOMERID" xmlns="Cust..."/>[XmlRoot("CustomerID", Namespace="CustomerID-Data",

IsNullable=false)][XmlType("CustomerID", Namespace="CustomerID-Data")]public class Customer_ID {

// Fieldsprivate string _CustomerID;// Customer ID Attribute[XmlAttribute]public string CustomerID {

get{return this._CustomerID;}set{this._CustomerID = value;}

}}

Page 88: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 88

Erstellen der Webservices

• Beliebige Webservices können eingesetzt und kombiniert werden

• Eigene Webservices für Datenzugriff– Können für IBF optimiert erstellt werden– Weniger Transformationen

• Drei Arten von Webmethoden– Get, Put, Act

Page 89: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 89

Get- und Put- Methoden

• Liefern Entitäten als View zurück• Bekommen eine Referenz übergeben

• Aktualisieren eine Entität im LOB-System mit den View-Daten

[WebMethod]public Customer GetCustomer(Customer_ID objCustomerID) { ... }

[WebMethod]public Customer GetCustomer(Customer_ID objCustomerID) { ... }

[WebMethod]public void PutCustomer(Customer objCustomer) { ... }

[WebMethod]public void PutCustomer(Customer objCustomer) { ... }

Page 90: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 90

Act-Methoden

• Operationen, die über das Lesen und Schreiben von Entitäten hinausgehen

• z.B. BestellStatus ändern

[WebMethod]public void ChangeOrderStatus(OrderID orderID,

OrderStatus status) { ... }

[WebMethod]public void ChangeOrderStatus(OrderID orderID,

OrderStatus status) { ... }

Page 91: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 91

Test-Methoden

• Webservices haben komplexe Datentypen (Klassen) als Parameter (Referenzen,…)

• Können nicht direkt mit dem IE getestet werden

• Deshalb Testmethoden mit einfachen Parametern (String, Integer, …)– Diese rufen dann die „echten“ Methoden mit ihren

komplexen Parametern auf

[WebMethod]public Customer GetCustomerTest(string strCustomerID) { ... }

[WebMethod]public Customer GetCustomerTest(string strCustomerID) { ... }

Page 92: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Metadaten erzeugen

Meta Data Explorer und Wizards

Page 93: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 93

Arten von Metadaten

• MetadataScope = Ein Projekt der IBF Lösung• Entity = Geschäftsobjekt• View = eine Ansicht eines Geschäftsobjektes• View Locator = Referenz auf

Daten einer View• Relationship

– Autoren und Bücher

• Operations = Befehle• Port = Verbindung zur

Außenwelt

• XML-Schemata• XSL-Transformationen

Relationship View 2

Entity

Scope

EntityEntity 2

Operation

Instance

View Locator

View 1

Entity 1

Operation

Instance

View Locator

PortPort

Page 94: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 94

IBF-Projekt anlegen

• Neuer Projekttyp in Visual Studio .Net 2003• Enthält nur eine Datei: MSIBFMetadata.xml• Metadata Explorer

– Bearbeiten der MetaDaten

• MetaData Guidance– Wizards

Page 95: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 95

Importieren von Meta Daten

• XML-Datei mit den MetaDaten ist leer• Eine Vorlage aus dem Ressource Kit mit

Standardmetadaten importieren– MOIBF1.5_Reskit_Templates– Microsoft.InformationBridge.

Framework.UI.InformationBridgeScope.Metadata.xml

• WSDL vom Webservice• Mit Merge zusammenführen

Page 96: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 96

Meta Data Explorer

• Bearbeiten der XML-Datei• Zwei Gruppen von Metadaten

• Daten und Logik– Webservice Zugriffe– Operations, Entities

• Darstellung– Regions– Views– GUI-Elemente in der TaskPane

Page 97: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Views erstellen

Service Metadata Creation Wizard

Page 98: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 98

Entity, View und ViewLocator

• Über Meta Data Gudiance Window starten• Mit Wizard Artefakte erstellen• Entity = Customer• View = Darstellung der Entity• ViewLocator besorgt die Daten für die View

Page 99: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Meta Daten ImportService Metadata Creation Wizard

Page 100: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Region Creation Wizard

Die Darstellung

Page 101: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 101

Die GUI

Page 102: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 102

Region Creation Wizard

• Erzeugt eine Region– UserControl– HTML

• Erzeugt eine Action– Für die Darstellung der

Region

• Bug bei nicht englischem .Net– Wizard verwendet XSD.exe und prüft englische

Textausgaben!! – Lösung: Ressource-Datei umbennen

C:\Programme\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\DE\xsd.resources.dll

Page 103: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 103

Action

• Aktionen sind wie Prozeduren• Verwenden Operation-Instanzen wie Befehle• Parameter können zwischen den Befehlen übergeben

werden

Page 104: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 104

Aktionen testen

• ControlLib-Assembly mit StrongName versehen• Full Trust für Assembly auf Maschinenebene

einstellen

• Erwarten Input-Parameter wie im Schema der Referenz definiert

<CustomerID ID="ALFKI" xmlns="CustomerID-Data" /> <CustomerID ID="ALFKI" xmlns="CustomerID-Data" />

Page 105: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 105

Aktionen testen

Build & Execute Action Button

Build & Execute Action Context Menu Item

Page 106: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Erstellen einer RegionTesten der Action

Page 107: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 107

Publishing Metadata

• Drei Orte für die Metadaten– XML-Datei in Visual Studio– Meta Data Cache auf dem Client– Meta Data Server

Metadata ServicesMetadata Services

VS .NETVS .NET

Metadata DesignerMetadata Designer

SQL ServerSQL Server

Client sideClient side

Server sideServer side

Office 2003Office 2003

IBF EngineIBF EngineMetadata

CacheMetadata

Cache

Information WorkerInformation Worker Solution DeveloperSolution Developer

ReadRead WriteWrite

XML File

Page 108: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 108

Publish Metadata Dialog

• URL zum IBF-Write-WebService

Page 109: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 109

Testen einer IBF Lösung

• Meta Data Projekt als Startprojekt der Solution– Word-Prozeß wird gestartet– VS.Net hängt sich an den Word-Prozeß

• Projekteigenschaften:MetaData / Action Debugger Mode– MetaData oder Managed– BreakPoints im SmartTag-, UserControl-Code– BreakPoints im MetaData-Explorer

• Beim Debuggen werden MetaDaten des VS-Projektes (XML-Datei) verwendet

• Office Applikationen laden Daten direkt aus dem Cache– Bei Problemen: IBF Settings Manager

Page 110: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 110

IBF Settings Manager

• Systemsteuerung -> Verwaltung

Page 111: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Demo

Testen einer Anwendung

Page 112: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 117

Fazit• Hohe Lernkurve

– Sehr gute XML, XSLT, XSD, … Kenntnisse !

• Unterstützung für Entwickler kann noch ausgebaut werden– Version 1.5 seit Februar 2005

• Zugriff auf beliebige Webservices möglich– Metadaten werden einfacher, wenn die Webservices sich

„wohlverhalten“

• VSTO 2.0 bietet ähnliche Funktionalität– Leichter für Entwickler mit .Net Erfahrung

• Client braucht IBF Runtime• Vorgefertigte IBF-Lösungen, z.B.: Mendocino

– Von SAP und Microsoft– Zugriff auf SAP Daten vom Office aus– http://www.sap.com/solutions/mendocino/index.epx

Page 113: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 118

IBF - Ressourcen

• dotnet magazin 10/05 + 12/05 IBF Artikel• The Code Project

– IBF 1.5 Walkthrough - Part 1 http://www.codeproject.com/csharp/IBFWalkthroughPart1.asp

– IBF 1.5 Walkthrough - Part 2:http://www.codeproject.com/csharp/IBFWalkthroughPart2.asp

• James Henry, Developing Business Intelligence Solutions Using Information Bridge and Visual Studio .NET, ISBN: 0972317937

• IBF-MOC Kurs• Ressource Kit• NewsGroup: nntp://msnews.microsoft.com/

Page 114: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net

Fazit

Und was nun ...?

Microsoft Office System 2003

Page 115: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 120

Ergebnisse

• VBA bleibt• VSTO 2.0 wird ein großer Schritt nach vorn• IBF steckt ist noch jung, hat aber großes Potential• Research Services: gutes Aufwand/Nutzen Verhältnis• Formulare in Word oder InfoPath

– Je nach Schwerpunkt

• ISmartDocument ist aufwendig zu programmieren– Wird mit VSTO 2.0 obsolet

• Office Dokumente gewinnen viel durch XML Unterstützung

• Verbessertes Deployment und Security

Page 116: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 121

Ressourcen rund um Office und .NET

• Office Zealot: www.officezealot.com• MSDN Office: http://msdn.microsoft.com/office/ • News Groups

– http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=16 • Redistributable Primary Interop Assemblies

– http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en

• Programming Office Applications Using Visual C# – http://msdn.microsoft.com/office/understanding/vsto/articles/

default.aspx?pull=/library/en-us/odc_vsto2005_ta/html/officevstocsharpdev.asp

Page 117: Marcel Gnoth -  Office Programmierung im.Net Zeitalter Geschäftsdaten intelligent mit Dokumenten verbinden

Marcel Gnoth - www.gnoth.net 122

Alles wird gut

Uff...Uff...