Marcel Gnoth - www.gnoth.net
Office Programmierungim .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
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
Marcel Gnoth - www.gnoth.net
Office Entwicklung – Überblick
Programmierung im .NET Zeitalter
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
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
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
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
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
Marcel Gnoth - www.gnoth.net
Research Services
Nachschlagewerke für das eigene Unternehmen
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
Marcel Gnoth - www.gnoth.net 12
Research Beispiele
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
Marcel Gnoth - www.gnoth.net 14
RS – Schemata
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
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
Marcel Gnoth - www.gnoth.net
Demo
Research Services
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) ')
Marcel Gnoth - www.gnoth.net
XML – Schemata und Office Dokumente
Schluss mit dem Freitext
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
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
Marcel Gnoth - www.gnoth.net 22
Freitext
Marcel Gnoth - www.gnoth.net 23
Freitext
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>
Marcel Gnoth - www.gnoth.net 25
Formatierungen
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>
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
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
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
Marcel Gnoth - www.gnoth.net 30
XML in Word-Formularen
Marcel Gnoth - www.gnoth.net 31
XML - Schema Validierung
• Bei der Eingabe
• Platzhalter bei der Eingabe• Dokumente schützen
Marcel Gnoth - www.gnoth.net
Demo
Word – XML – Excel
Microsoft Office System 2003
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 …
Marcel Gnoth - www.gnoth.net
Smarte Dokumente
Der klassische Weg
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
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
Marcel Gnoth - www.gnoth.net
VSTO
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
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
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)
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
Marcel Gnoth - www.gnoth.net
Designer, Controls und die ActionsPane
Word und Excel in Visual Studio
Marcel Gnoth - www.gnoth.net 43
Neue Designer1. Drag+Drop onto Designer
2. Designer-generated
managed classes
3. First-class
managed citizens
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"
Marcel Gnoth - www.gnoth.net 45
Programmierbare TaskPane1. Design a UserControl
2. Add control behaviour
3. Add the control to the ActionsPane
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
Marcel Gnoth - www.gnoth.net
Demo
Controls und ActionsPane
Microsoft Office System 2003
Marcel Gnoth - www.gnoth.net
Data-Island
Daten reisen mit dem Dokument
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
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
Marcel Gnoth - www.gnoth.net 51
Dateninseln auf dem Servers
Windows Server
.NET Framework
Data CacheData Island
Server-side
Assembly
Server
VSTO ServerDocument Assembly
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
Marcel Gnoth - www.gnoth.net
Demo
Data Islands
Microsoft Office System 2003
Marcel Gnoth - www.gnoth.net
VSTO - Smart Tags
Kontextbezogene Hilfe
Microsoft Office System 2003
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
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
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
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")
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}"))
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}
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
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)
Marcel Gnoth - www.gnoth.net
Demo
VSTO SmartTag
Microsoft Office System 2003
Marcel Gnoth - www.gnoth.net
VSTO - Deployment
Verteilung und Sicherheit von VSTO-Anwendungen
Microsoft Office System 2003
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!“
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
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
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
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
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
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
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
Marcel Gnoth - www.gnoth.net
Demo
Publish Wizard
VSTO 2003
Marcel Gnoth - www.gnoth.net
Information Bridge Framework
Office Dokumente mit verschiedenen
LOB – Daten verknüpfen
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
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
Marcel Gnoth - www.gnoth.net
Demo
Was kann IBF
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
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
Marcel Gnoth - www.gnoth.net
IBF-Entwicklung
Eine kleines Projekt
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
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
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>
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"/>
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
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;}
}...
}
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;}
}}
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
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) { ... }
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) { ... }
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) { ... }
Marcel Gnoth - www.gnoth.net
Metadaten erzeugen
Meta Data Explorer und Wizards
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
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
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
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
Marcel Gnoth - www.gnoth.net
Views erstellen
Service Metadata Creation Wizard
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
Marcel Gnoth - www.gnoth.net
Demo
Meta Daten ImportService Metadata Creation Wizard
Marcel Gnoth - www.gnoth.net
Region Creation Wizard
Die Darstellung
Marcel Gnoth - www.gnoth.net 101
Die GUI
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
Marcel Gnoth - www.gnoth.net 103
Action
• Aktionen sind wie Prozeduren• Verwenden Operation-Instanzen wie Befehle• Parameter können zwischen den Befehlen übergeben
werden
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" />
Marcel Gnoth - www.gnoth.net 105
Aktionen testen
Build & Execute Action Button
Build & Execute Action Context Menu Item
Marcel Gnoth - www.gnoth.net
Demo
Erstellen einer RegionTesten der Action
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
Marcel Gnoth - www.gnoth.net 108
Publish Metadata Dialog
• URL zum IBF-Write-WebService
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
Marcel Gnoth - www.gnoth.net 110
IBF Settings Manager
• Systemsteuerung -> Verwaltung
Marcel Gnoth - www.gnoth.net
Demo
Testen einer Anwendung
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
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/
Marcel Gnoth - www.gnoth.net
Fazit
Und was nun ...?
Microsoft Office System 2003
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
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
Marcel Gnoth - www.gnoth.net 122
Alles wird gut
Uff...Uff...