Office Programmierung im .Net Zeitalter Herzlich Willkommen meine Damen und Herren zum Oktober TechTalk. Geschäftsdaten intelligent mit Dokumenten verbinden
Kurze Vorstellung Dipl. Inf. Marcel Gnoth, MCSD (marcel@gnoth.net) 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
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
Office Entwicklung – Überblick Programmierung im .NET Zeitalter
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
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
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
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 Aktionen und Infos zu einem selektierten Bereich Webservice Zugriff Nachschlagewerke, Datenaustausch
Big View - Technologieübersicht BizTalk Server Share Point VBA und Webservice Toolkit Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane SQL Server Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0
Nachschlagewerke für das eigene Unternehmen Research Services Nachschlagewerke für das eigene Unternehmen
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
Research Beispiele
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
RS – Schemata
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 Viele Samples Research Services Tracing and Validation Tool (RSTV) zum debuggen
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
Demo Research Services
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, QuantityPerUnit FROM Products WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')
XML – Schemata und Office Dokumente Schluss mit dem Freitext
Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0
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
Freitext
Freitext
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> </Attendees> <Conclusion>Organize another European tour </Conclusion> </ConferenceReport>
Formatierungen
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:i /> <w:t>Health Agency</w:t> </w:p>
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
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> Namespace Declarations Document Properties Section Properties
Save ‘Data Only’ or Transform XML und Word Plain XML vs Word XML: Word Your XML Save ‘Data Only’ or Transform Microsoft Corp. Microsoft Corp. Database 2/21/2003 Strong Buy Strong Buy 2/21/2003 Transform Open/Save WYSIWYG Web Page WordML Microsoft Corp. 2/21/2003 Microsoft Corp. Strong Buy 2/21/2003 Transform Strong Buy
XML in Word-Formularen
XML - Schema Validierung Bei der Eingabe Platzhalter bei der Eingabe Dokumente schützen
Microsoft Office System 2003 Demo Word – XML – Excel
Fazit XML-Format eröffnet viele neue Wege Formulare in Word oder Excel 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 …
Smarte Dokumente Der klassische Weg
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
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
VSTO
Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0
Office Professional Edition 2003 VSTO Roadmap Version 2005 Visual Studio projects for Word and Excel Document-centric customizations Word and Excel hosted in VS IDE View controls ActionsPane Schema-based programming model Server-accessible data island Managed SmartTags Version 2003 Visual Studio .NET 2003 Visual Studio 2005 Office Professional Edition 2003
Ü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)
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
Designer, Controls und die ActionsPane Word und Excel in Visual Studio
Neue Designer 1. Drag+Drop onto Designer 2. Designer-generated managed classes 3. First-class managed citizens
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.TextBox txtData = Me.Controls.AddTextBox(10, 10, 100, 100, "txtData") txtData.Text = "Hallo"
Programmierbare TaskPane 1. Design a UserControl 2. Add control behaviour 3. Add the control to the ActionsPane
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.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop
Controls und ActionsPane Microsoft Office System 2003 Demo Controls und ActionsPane
Daten reisen mit dem Dokument Data-Island Daten reisen mit dem Dokument
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
Dateninseln auf dem Client VSTO Assembly Data Island Web Services Schemas Client VSTO Runtime .NET Framework LoB Data Microsoft Office Professional 2003 Windows Client Deployment Server
Dateninseln auf dem Servers Data Cache Data Island VSTO ServerDocument Assembly Server-side Assembly Server .NET Framework Windows Server
Dateninseln im Dokument - Code Im Dokument “Sonntag”, Blatt “Tabelle1”: Auf dem Server ohne Office füllen <Cached()> Public derKunde As DI_Kunde_Lib.CKunde 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
Microsoft Office System 2003 Demo Data Islands
Kontextbezogene Hilfe Microsoft Office System 2003 VSTO - Smart Tags Kontextbezogene Hilfe
Was sind SmartTags? Erkennt Text in Dokumenten Bietet Aktionen dafür an Smart Tag Action Button Lila gepunktete Linie: Smart Tag Kennzeichnung
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
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
VSTO SmartTag Klassen SmartTag Objekt Konstruktor Parameter 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")
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}"))
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}
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
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)
Microsoft Office System 2003 Demo VSTO SmartTag
Verteilung und Sicherheit von VSTO-Anwendungen Microsoft Office System 2003 VSTO - Deployment Verteilung und Sicherheit von VSTO-Anwendungen
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!“
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
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
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 Dok. auf dem Client Auf dem Server Deployment Manifest Assembly Dokument Application Manifest
Self Updating Process manifest.xml Deploy.xml ExcelApp.dll 1.1 ExcelDoc.xls Deploy.xml <manifest> . . . curVersion=”1.1” . . . </manifest> <manifest> . . . curVersion=”1.0” . . . </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.0”/> . . . ExcelApp.dll 1.0 manifest.xml <manifest> <deploy url=http://…/deploy.xml version=“1.0”/> <manifest> <deploy url=http:…/deploy.xml version=“1.1”/> <assembly Name=“ExcelApp.dll” updateURL= http://../ExcelApp.dll
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
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
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
VSTO 2003 Demo Publish Wizard
Information Bridge Framework Office Dokumente mit verschiedenen LOB – Daten verknüpfen
Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0
Find Customer Account Rep 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 MS Word Task Pane Option1 Child Label Mary : Ford order is late. Please investigate. Find Orders Copy & Paste Find Customer Account Rep
Demo Was kann IBF
IBF-Architektur Ablauf eines IBF-Requests 2 1 4 5 3 Client Server CAS Interprets “Context” using Metadata Metadata Service 1 User selects “Show Details” from Smart Tag IBF Metadata Store 4 Returns data CRM Information Bridge Engine 3 Call Web Service to retrieve data Smart Tag Displays data in Taskpane 5 Other Data ERP Client Server Information Bridge Framework XML Web Services IBF (Metadata Service) .NET Framework SQL Server 2000 Microsoft Office Professional Edition .NET Framework Windows Client Windows 2003 Server Services
Installation Server Client 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.office.informationbridge&mid=f7163331-ecd1-4588-8395-558890ca41dd LOB – Webservices
IBF-Entwicklung Eine kleines Projekt
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
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
IBF – Views Darstellung einer Entität Views in XML planen 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> <BookView xmlns=" NTeam-Data"> <ISBN></ISBN> <Title></Title> <SuggestedPrice></SuggestedPrice> </BookView>
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="Chef@Alfki.de" xmlns="NTeam-Data" /> <BookIDReference ISBN=”0972317937” xmlns="NTeam-Data"/>
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
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;} } ... }
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 { // Fields private string _CustomerID; // Customer ID Attribute [XmlAttribute] public string CustomerID { get{return this._CustomerID;} set{this._CustomerID = value;} } }
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
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 void PutCustomer(Customer objCustomer) { ... }
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) { ... }
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) { ... }
Meta Data Explorer und Wizards Metadaten erzeugen Meta Data Explorer und Wizards
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 Scope Entity Entity 2 Entity Entity 1 View 1 Relationship View 2 View Locator View Locator Operation Instance Operation Instance Port Port
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
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.Information BridgeScope.Metadata.xml WSDL vom Webservice Mit Merge zusammenführen
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
Service Metadata Creation Wizard Views erstellen Service Metadata Creation Wizard
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
Meta Daten Import Service Metadata Creation Wizard Demo Meta Daten Import Service Metadata Creation Wizard
Region Creation Wizard Die Darstellung
Die GUI
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
Action Aktionen sind wie Prozeduren Verwenden Operation-Instanzen wie Befehle Parameter können zwischen den Befehlen übergeben werden
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" />
Aktionen testen Build & Execute Action Button Build & Execute Action Context Menu Item
Erstellen einer Region Testen der Action Demo Erstellen einer Region Testen der Action
Publishing Metadata Drei Orte für die Metadaten XML-Datei in Visual Studio Meta Data Cache auf dem Client Meta Data Server Office 2003 IBF Engine Metadata Cache Information Worker Solution Developer VS .NET Metadata Designer XML File Client side Server side Read Write SQL Server Metadata Services
Publish Metadata Dialog URL zum IBF-Write-WebService
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
IBF Settings Manager Systemsteuerung -> Verwaltung
Testen einer Anwendung Demo Testen einer Anwendung
Ein bisschen Code muss sein! IBF – Smart Tags Ein bisschen Code muss sein!
IBF Smart Tag Projekt IBF geht eigenen Weg bei SmartTags Dll Projekt, mit Strong Name, FullTrust ! Referenzen auf: Microsoft.InformationBridge.Framework.Interfaces Microsoft.InformationBridge.Framework.UI.Interop COM: Microsoft.Office.Interop.SmartTag (Microsoft Smart Tags 2.0 Type Library) IActionHandler Kontextmenü des SmartTag hat Standardeintrag: „Show Details“ Eigene Kontextmenüeinträge anlegen IRecognizer
IRecognizer IRecognizer.Initialize IRecognizer.Recognize Wird beim Start von Word aufgerufen Laden von Daten, die erkannt werden sollen Achtung: nicht zu viele laden! IRecognizer.Recognize Erkennen von Text, der von Word übergeben wird Word-Paragraph, Excel-Cell, Buchstabe oder Wort,… SmartTag wird in das Dokument eingebettet Spezielles XML-Element: ContextInformation muss IBF Schema entsprechen Enthält angaben über Scope, Entity, View,…
ContextInformation-Element Diese Informationen werden vom SmartTag in das Dokument eingebettet <ContextInformation xmlns="http://.../InformationBridge/2004/ContextInformation“ MetadataScopeName="NorthwindIBF3" EntityName="Customers ViewName="Customer_View" ReferenceSchemaName="Xsd.CustomerID (CustomerID-Data)"> <Reference> <CustomerIDReference <CustomerID CustomerID=“ALFKI" xmlns="CustomerID-Data" /> </CustomerIDReference> </Reference> </ContextInformation>
SmartTag mit IBF verknüpfen Normale SmartTags werden als COM-Komponente registriert HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers IBF Client installiert ein Generic SmartTag Word / Excel kommunizieren mit diesem IBF-SmartTags werden mit der MetaData-Solution verknüpft Werden dann von IBF Engine geladen Generisches SmartTag leitet Aufrufe an IBF-SmartTags weiter Ports und Operations GenericSmartTags: Pfad zum Assembly mit IBF-SmartTag GenericRecognizer: Namespace.Klasse des Recognizers LoadRecognizer-Operation verweist bereits auf GenericSmartTag-Port
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
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/
Microsoft Office System 2003 Fazit Und was nun ...?
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
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
Alles wird gut Uff...