Smarte und verbundene Dokumente mit Office 2003 und .NET entwickeln Microsoft Office System 2003 Smarte und verbundene Dokumente mit Office 2003 und .NET entwickeln Geschäftsdaten intelligent mit Dokumenten verbinden
Zur Person Dipl. Inf. Marcel Gnoth, MCSD NTeam GmbH, Berlin www.gnoth.net NTeam GmbH, Berlin www.nteam.de Leiter Softwareentwicklung MS Gold Partner Busines Intelligence, Information Worker, Advanced Infrastructur Autor dotnetpro und dotnet-magazin Trainer (u.a. SPC Berlin, www.spc.de ) Themen VB6, COM Datenbanken, Yukon Verteilte Informationssysteme mit .Net Office System 2003 Integration Reisen in ferne Länder: www.gnoth.net/reise.htm
Agenda Einleitung VBA und das Web Services Toolkit 2.01 Research Services XML-Schemata und Office Dokumente Smart Documents (ISmartDocument) VSTO 2003 VSTO 2005 Beta Smart Tags Information Bridge Framework (IBF) Fazit
Office in den Unternehmen Microsoft Office System 2003 Einleitung Office in den Unternehmen
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? Wenige neuen Features, 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, in ... Anwender muss in der Lage sein, diese Systeme zu bedienen, auch wenn er/sie nur selten damit arbeitet Keine Unterstützung bei der Dateneingabe Viel manuelle Tipparbeit 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 Parsen nach Informationen aufwendig Dokumentformat properitär Elektronische Verarbeitung (auf Servern) aufwendig Austausch mit anderen heterogenen Systemen schwierig
Unterstützung durch Office 2003 Dokumente können als XML gespeichert werden Austausch mit anderen Systemen Verarbeitung auf dem Server ohne Office Verknüpfen eines Office Dokumentes mit einem XML-Schema Prüfen von Nutzereingaben auf Fehler Daten können einfach elektronisch weiterverarbeitet und ausgetauscht werden
Unterstützung durch Office 2003 Kontextbezogene Informationen bereitstellen Aggregation von Informationen aus verschiedenen Systemen Recherchieren von Informationen Einfügen von Daten in ein Office Dokument Vermeidet Fehleingaben Erhöht Datenqualität
Viele Wege führen nach Friedrichshagen ... Microsoft hat viel Energie unter die Oberfläche von Office gesteckt Die Anwender verwenden eh nur 10% der Möglichkeiten Deshalb viel Energie auf Smart Clients und Unterstützung von Information Workern Leute die schnell, einfach auf viele Infos zugreifen müssen Das (stärkste) Argument für Office 2003
Taskpane / Aufgabenbereich Werkzeuge Viele Ansätze Taskpane / Aufgabenbereich Formulare zur Dateneingabe Nachschlageergebnisse Informationen / Aktionen XML-Schemata Kein Freitext mehr Kontextbezogener Zugriff auf TaskPane Smart Tags Aktionen und Infos zu einem ausgewählten Wort Webservice Zugriff Nachschlagewerke, Datenaustausch
Und ich dachte immer Officeprogrammierung ist langweilig Umsetzungen Und ich dachte immer Officeprogrammierung ist langweilig Office VBA VS.Net, Toolkits und Werkzeuge ohne Ende ... XML, Research Service, Smart Tags, Smart Document, ISmartDocument, IBF, VSTO 2003 und 2005, WS für VBA, MOSTL, RSDE, RSCL, RSTV, MOSTL, SharePoint, ...........
Technologieübersicht TaskPane Research Services IBF ISmartDocument VSTO 2003+2005 Im Dokument SmartTags XML VSTO 2005 Kontextbezogene Hilfe
Zugriffe auf die schöne, bunte Web Service Welt von VBA aus Webservice Toolkit 2.01 VBA und Webservices Zugriffe auf die schöne, bunte Web Service Welt von VBA aus
Office 2003 Webservice Toolkit 2.01 Separater Download Tools -> Add Webreferenz Erzeugt VBA-Proxyklassen Dynamische Listen über WS Zugriff Amazon, eBay, ...
Webservice Toolkit 2.01 Demo VBA und Webservices
Fazit Sehr leichte Einbindung von WS in VBA
Research Services Nachschlagewerke für das eigene Unternehmen Microsoft Office System 2003 Research Services Nachschlagewerke für das eigene Unternehmen Webservices und die TaskPane
Research Services (RS) – Überblick Recherche von Informationen über Webservices Word, Excel, PPT, Outlook, Publisher, OneNote, Visio, IE Anzeige der Informationen in der TaskPane Übernahme von Daten in das Dokument Office eigene Dienste Kommerzielle Anbieter Eigenentwicklung WS mit beliebiger Sprache implementieren WS kann auf beliebiger Plattform laufen WS muss zwei XSD – Schemata unterstützen
Verfügbare Research Services Lokal auf dem Computer Thesaurus und Übersetzung Office 2003 Research Services Wörterbuch, Enzyklopädie, Web Suche, Aktienkurse Kommerzielle Anbieter Factiva, eLibrary, Gale, WorldLingo Weitere werden kommen SharePoint Portal server
Research Beispiele
Eigene Research Services entwickeln Beliebige Sprache, beliebige Plattform Ein Webservice mit zwei Methoden Register (oder Registry-Keys direkt schreiben) Query SOAP Response muß Schemata entsprechen MS Werkzeuge RS - SDK RS - Development Extras RS mit Smart Tags erweitern Daten in das Dokument einfügen Andere Aktionen starten ... Dll auf dem Client benötigt!
RS – Schemata
RS SDK – Schemata WS Registration WS Query Beispiele, Doku, Schemata Request Response WS Query Beispiele, Doku, Schemata Codieren der Werbservice Antworten ist „fummlig“ (zu) viel Handarbeit Nicht wirklich schön .WriteStartElement("Content", ns:="urn:Microsoft.Search.Response.Content") .WriteElementString("P", "Folgende Pokemon wurden gefunden:") .WriteStartElement("Image source=""" + pathHTTP + "Pokemon/Gengar.gif"" ") .WriteEndElement() .WriteElementString("P", "Name: " + m_Pokemons.Name) .WriteStartElement("Tabular") .WriteStartElement("Record") .WriteElementString("Name", "Type")
Verwenden von Smart Tag Actions Definiert durch Query Response RS – Smart Tags Verwenden von Smart Tag Actions Definiert durch Query Response Simple Smart Tags Insert, Copy, NewQuery, Hyperlink Smart Tag API Dll Sehr flexibel
RS Hallo Welt SmartTag Northwind RS Research Services Demo RS Hallo Welt SmartTag Northwind RS
RS – Development Extras (RSDE) Separater Download Research Services Class Library (RSCL) OO-Wrapper für SDK Schemata Macht das Leben leichter Mit Quellcode RSCL Wizard Neuer Projekttyp Viele Samples Research Services Tracing and Validation Tool (RSTV)
RSDE Demo RSCL Wizard und RSTV
Installation durch Anwender Installation durch Admin 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 Ausnahme: eigene Smart – Tags Dll auf dem Client Später mehr
Einfache Recherche aus Office Applikationen heraus Fazit 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 Microsoft Office System 2003 XML – Schemata und Office Dokumente Schluss mit dem Freitext
Überblick Office Dokumente (Freitext) mit einem XML-Schema verknüpfen Daten können als XML gespeichert (und weiterverarbeitet) werden Trennung der Daten von der Präsentation
XML in Office Offenes XML-Dateiformat Verknüpfen der Dokumente mit einem XML-Schema GUI-Integration über Aufgabenbereich (auch Outlook ein bisschen)
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
Keine verschachtelten Tags 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, FormTemplate, DataDiagramingML Offen und Lizenzgebührenfrei Erzeugen und verändern von Officedokumenten auf dem Server ohne Office Austausch in heterogenen Systemen
Hello Word in WordML <?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 WordML!</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>
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
XML erlaubt keine überlappenden Tags wie HTML: WordML – im Detail XML erlaubt keine überlappenden Tags wie HTML: <p><b>This is some <i>bolded</b> and Italicized text</i></p> WordML: <p> <r> <rPr> <b/> </rPr> <t>This is some</t> </r> <rPr> <b/> <i/> </rPr> <t>bolded</t> ... etc ... </p>
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
Microsoft Office System 2003 Demo Word – XML – Excel
XML - Schema Validierung Bei der Eingabe Platzhalter bei der Eingabe Dokumente schützen
Schemalvalidierung und Platzhalter Microsoft Office System 2003 Demo Schemalvalidierung und Platzhalter
XML-Format eröffnet viele neue Wege Fazit XML-Format eröffnet viele neue Wege Verarbeiten von Dokumenten ohne Office Schemavalidierung Datenaustausch
ISmartDocument COM Schnittstelle Microsoft Office System 2003 Smart Documents ISmartDocument COM Schnittstelle
Programmieren der Taskpane Smarte Dokumente Programmieren der Taskpane Dokument mit benutzerdefinierten Schema verknüpft Code wird Elementen des Schemas zugeordnet Code Lokal auf Client oder auf Server Wird auf dem Client ausgeführt Erhöhte Sicherheit Einfaches Deployment
Smart Document - Komponenten Dokument mit XML Schema Solution URL verweißt auf XML-Manifest Manifest beschreibt Dateien des XML-Expansion Pack‘s Code (Dll), Bilder, Daten Komponenten können von Webserver geladen werden Jetzt ist das Doc Smart XML Schema Document name address Solution URL XML Manifest dll image schema config
Wo zu finden ..? Word 2003 und Excel 2003 Word: Tools -> Templates and Add-ins Excel: Data -> XML -> XML Expansion Packs
Smart Dokument Installation Manifest muß signiert sein Manifest muß von einem vertrauten Server stammen .net CAS
Smart Documents Demo SmartDoc verwenden
Das Manifest <manifest xmlns="http://schemas.microsoft.com/office/xmlexpansionpacks/2003"> <version>1.0</version> <uri>NorthwindSmartDocDemo</uri> <solution> <solutionID>Smart Doc Files</solutionID> <type>smartDocument</type> <alias lcid="1033">Northwind Smart Document Demo</alias> <file> <type>solutionActionHandler</type> <managed /> <version>1.1</version> <filePath>NorthwindSmartDoc.dll</filePath> <CLSNAME>NorthwindSmartDoc.DocActions</CLSNAME> </file> <type>other</type> <version>1.2</version> <filePath>Interop.SmartTagLib.dll</filePath> </solution> <solutionID>Schema Files</solutionID> <type>schema</type> <alias lcid="1033">Northwind Work Absence Form Schema</alias> <runFromServer /> <filePath>workabsence.xsd</filePath> </manifest>
ISmartDocument COM – Schnittstelle VB6 oder .Net oder VC++ oder Delphi Office Setup PIA‘s für Word/Excel und Smart Tag Support mitinstallieren !!! 17 Methoden Populate OnChange 8 Eigenschaften
ISmartDocument-Porperties Namespace XML-Schema ISmartDocument-Porperties SmartDocXmlTypeCaption SmartDocXmlTypeCount SmartDocXmlTypeName (Zuordnung zwischen Schema-Elementen und dem Code) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:www.gnoth.net.PokemonSD"> <xsd:element name="Name" type="xsd:string" /> <xsd:element name="Skill" type="xsd:string" /> <xsd:element name="Type" type="xsd:string" /> </xsd:schema> Public Const BASEURI As String = "urn:www.gnoth.net.PokemonSD" Public Const Poke_NAME As String = BASEURI & "#Name" Public Const Poke_SKILL As String = BASEURI & "#Skill" Public Const Poke_TYPE As String = BASEURI & "#Type" Public Const TYPESCOUNT As Integer = 3
Fröhliches Late Binding mit Zahlen http://msdn.streetmarket.com/hr #VacationRequest ControlCount = 5 101 ControlIndex + 100 102 103 104 105
Ablauf
Smart Doc implementieren Smart Documents Demo Smart Doc implementieren
Manifest Security Check Smart Doc Security Manifest Security Check Tool verwenden um Manifest und Code zu signieren xmlsign.exe, SmartDoc SDK Kann auf Entwicklerrechnern deaktiviert werden Kleine Regdatei Quellserver muß zu Trusted Sites gehören Localhost = Intranet, trusted 127.0.0.1 = nicht vertraut [HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Common\Smart Tag] "DisableManifestSecurityCheck"=dword:00000001
Smart Document Security - CAS .Net – Code Access Security (CAS) Für Dateien, die auf den Client runtergeladen und ausgeführt werden sollen CAS kann zentral von Admins ausgerollt werden Detaillierte Einstellungen Caspol.exe -ag All_Code -url "file://C:/Smart Doc Files/*" FullTrust -n NorthwindSmartDocDemo
Kostenlos, mit Quellcode nicht supported Vertigo Wraper Kostenlos, mit Quellcode nicht supported http://vertigosoftware.com/wrapper Gute FAQ! Neue Projekttypen in VS.Net Kapselt das ISmartDocument Interface Objektorientiert Programmierung einfacher Weniger Flexibilität
Fazit Sicherheit und Deployment Endanwender erhält kontextsensitive Hilfe Entwicklung ist nicht so elegant COM – basierte Schnittstelle (PIA) Wird mit VSTO 2005 obsolet
VSTO 2003 Visual Studio Tools für Office V1.0 Microsoft Office System 2003 VSTO 2003 Visual Studio Tools für Office V1.0 Word und Excel mit VS.Net programmieren
Strategisches Tool für die Office programmierung Überblick Strategisches Tool für die Office programmierung VSTO 2003 nur für Word und Excel VSTO 2003 ist eine V1.0, der nächste Sprung kommt mit VSTO 2005 Office Applikationen haben COM-API VSTO soll Interop erleichtern VSTO bietet: Vorlagen für VS.Net Aktualisiert lokale Entwicklereinstellungen (CAS) Code Behind – Modell, aber keine Office Designer Gedacht für professionelle Entwickler VS.Net .Net Framework Wird nicht VBA ersetzen (Für Enduser)
VSTO – Entwicklert programmiert Runtime Design time Developer Visual Studio
Business Logic Visual Studio VSTO – Deployment Business Logic Runtime Design time Developer .NET Assembly Code will typically be stored on a share or server for easy deployment and maintenance Visual Studio
Business Logic Excel VSTO – Anwender .NET Security Policy Runtime .NET Assembly .NET Security Policy Runtime Design time Assembly is downloaded from share or server and code runs, subject to restricted security policy Excel
Erzeugen einer VSTO Lösung Demo Erzeugen einer VSTO Lösung
Code in Dokumenten wird geblockt Sicherheit VBA Code in Dokumenten wird geblockt Low, Medium, & High security modes AuthentiCode signatures for code authenticity Codeausführung: Alles oder nichts Anwender treffen „mutige“ Entscheidungen „Dumm, aber glücklich!“
Überblick - Sicherheit VSTO erzeugt normale .Net Assemblies Code Access Security (CAS) muß auf dem Client konfiguriert sein Keine Entscheidung des Anwenders Kein „Makro aktivieren J/N“ Auf Entwicklerrechner wird die CAS bei Projekterstellung durch VSTO aktualisiert
Verknüpfung Dokument – Assembly Document Property wo Assembly liegt CAS Wenn Web offline, dann lädt Word vom Assembly Cache
Komponenten einer VSTO Solution: Überblick Deployment Click Once Depolyment Komponenten einer VSTO Solution: Quellcode (im Source Safe ) Kompiliertes Assembly auf einem Server Office Dokument Enthält Link zum Assembly auf dem Server Zentrales Update auf dem Server
VSTO 2003 Demo Security & Deployment
Ziemlich wenig bis jetzt Hilft bei einigen Details bis jetzt Fazit Ziemlich wenig bis jetzt Hilft bei einigen Details bis jetzt Fast das Gleiche kann auch ohne VSTO mit normalem COM Interop erreicht werden Der große Wurf wird erst mit der nächsten Version kommen Aufgaben Bereich / Task pane Offline Daten / Data Island u.a.
Jetzt gehts erst richtig los Microsoft Office System 2003 VSTO 2005 Beta 1 Jetzt gehts erst richtig los
Office Professional Edition 2003 VSTO Roadmap Word and Excel hosted in VS IDE View controls ActionsPane Schema-based programming model Server-accessible data island Visual Studio projects for Word and Excel Document-centric customizations Version 2005 Version 2003 Visual Studio .NET 2003 Visual Studio 2005 Office Professional Edition 2003
Neue Designer 1. Drag+Drop onto Designer 2. Designer-generated managed classes 3. First-class managed citizens
Programmierbare TaskPane 1. Design a UserControl 2. Add control behaviour 3. Add the control to the ActionsPane
So schauts dann aus...
XML Knoten und die TaskPane 2. Map XML schema 1. Design multiple UserControls 3. Code UserControl behaviour
Demo Die TaskPane
Dateninseln im Dokument 1. Attribute the DataSet as Cached 2. The DataSet is Cached as XML in the doc Vorteile Office Dokumente auf dem Server verarbeiten Offline Modus
Data Islands auf dem Server Keine Officeinstallation auf dem Server ServerDocument doc = new ServerDocument("expenses.xls"); CachedDataItem cdi = _ doc.CachedDataManifest.Views["Sheet1"].CachedData["Expenses"]; cdi.Xml = "new xml string";
Microsoft Office Professional 2003 VS Tools für Office 2005 VSTO Assembly Data Island Web Services Schemas Client VSTO Runtime .NET Framework LoB Data Microsoft Office Professional 2003 Windows Client Deployment Server
Data Island Zugriff auf dem Server VSTO 2005 Data Island Zugriff auf dem Server Data Cache Data Island VSTO ServerDocument Assembly Server-side Assembly Server .NET Framework Windows Server
Kontextbezogene Hilfe Microsoft Office System 2003 Smart Tags Kontextbezogene Hilfe
Verknüpfen Text in Dokumenten mit Geschäftsprozessen Was sind SmartTags? Verknüpfen Text in Dokumenten mit Geschäftsprozessen Smart Tag Action Button Lila gepunktete Linie: Smart Tag Kennzeichnung
Entwicklung von Smart Tags Microsoft Office Smart Tag List (MOSTL) Für “einfache” Smart Tags Leichte Entwicklung und Deployment Können automatisch aktualisiert werden Smart Tag API Alle Möglichkeiten des .Net Frameworks Programmierung (COM-Interface) C#, VB.NET, C++ oder VB6 .Net Applikationen verwenden COM Interop oder VSTO Loader Benötigen Setup (Einträge in die Registry)
Erzeugen einer XML Datei MOSTL Erzeugen einer XML Datei C:\Programme\Gemeinsame Dateien\Microsoft Shared\Smart Tag\LISTS\1031 <FL:smarttaglist xmlns:FL="urn:schemas-microsoft-com:smarttags:list"> <FL:smarttag type="urn:lamborghini-com:cars#car"> <FL:caption>Lamborghini Cars</FL:caption> <FL:terms> <FL:termlist>350, 400, Countach, Diablo, Espada, Gallardo, Islero, Jalpa, Jarama, LM002, Miura, Murcielago, Silhouette, Urraco</FL:termlist> </FL:terms> <FL:actions> <FL:action id="Information"> <FL:caption>&View Information</FL:caption> <FL:url>http://www.lamborghini.com</FL:url> </FL:action> </FL:actions> </FL:smarttag> </FL:smarttaglist>
Dll – Projekt (Klassenbibliothek) COM – API - SmartTagLib Dll – Projekt (Klassenbibliothek) Verweis auf Microsoft Smart Tags 2.0 Type Library COM Bibliothek recognizer Klasse implementieren ISmartTagRecognizer(2) ProgID und GUID Attribute action Klasse implementieren ISmartTagAction(2) [ProgId("MlbSmartTag.Recognizer"), GuidAttribute("90D62E8D-79E3-4197-907F-BF3EC133698D"), ComVisible(true)] public class Recognizer : ISmartTagRecognizer2, ISmartTagRecognizer { }
Assembly Version konfigurieren COM – API - SmartTagLib Assembly Version konfigurieren Default ändern von 1.0.* auf einen Wert Zum Debuggen die Start Action auf Word oder Excel setzen Project Properties | Configuration Properties | Debugging | Start Action | … … Start Application (C#) … Start external program (Visual Basic .NET)
Smart Tag Programmierung Research Services Smart Tags Demo Smart Tag Programmierung Research Services
Smart Tag Installation Setup Program installiert Dll Muss registriert werden Als COM Komponente Als Smart Recognizer und Action Selbstregistrierende DLL (ComRegisterFunctionAttribute) Schlüssel bei der Installation erzeugen HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Actions Wenn der VSTO Loader verwendet wird, dann CAS!
Download Smart Tag Developer Tools Smart Tag Explorer Zeigt an, welche Smart Tags auf einem Rechner aktiv sind Recognize Tester Ermöglicht das Testen, ob ein Smart Tag bestimmte Tokens erkennt
Smart Tag Developer Tools Smart Tags Demo Smart Tag Developer Tools
Information Bridge Framework Office Dokumente mit verschiedenen LOB – Daten verknüpfen
Find Customer Account Rep Warum IBF ? Emails und Dokumente beziehen sich auf Geschäfts-Entitäten Kunde, Bestellung, ... Oft befinden sich die Daten in verschiedenen Systemen Es gibt keinen einfachen Weg diese Daten in Beziehung zu setzen Einarbeitung in die Systeme Copy & Paste ist einzige Integration MS Word Task Pane Option1 Child Label Mary : Ford order is late. Please investigate. Find Orders Copy & Paste Find Customer Account Rep Unproduktiv und Fehleranfällig!
Warum IBF Verknüpft Office Documente mit Daten Zugriff auf Daten über Webservices Informationen werden komfortabel in der TaskPane angezeigt Wenig Programmieren, deklarativer Ansatz
Information Bridge Framework Demo Was kann IBF
IBF-Überblick-Grafik Smart Clients Web Service-basierende Architektur (SOA) Zentraler Metadaten / GUI Server Runtime für Smart Tag / XML Ereignis Initiierung Windows Forms und Taskpane Unterstützung Web Services Metadata Finance ERP Web Services CRM
IBF-Architektur 2 1 4 5 3 Client Server Information Bridge Engine 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
IBF-Architekur Office Application Information Bridge IBF - UI Host Renderer Smart Doc Smart Tag Task Pane Manager IBF Engine Metadata Cache Client Back-end Services XML Instance Data Metadata Metadata Web Service Metadata Designer Existing Web Service Compliant Service (Native) Compliant Service Adapter Compliant Service Adapter BizTalk EAI Workflow Engine Legacy App MS-CRM SAP Siebel Metadata
Let‘s walking through the dark forrest … Information Bridge Framework IBF-Entwicklung Let‘s walking through the dark forrest … Inspiriert durch Vijay Desai. (Sep, 2004) http://www.persistent.co.in/knowledgecenter/InformationBridgeFramework.pdf
Überblick einer einfachen IBF-Entwicklung Sorgfältige Planung (Use Cases) Definieren von: Entities (Geschäftsobjekten) Beziehungen der Entities untereinander Views (Darstellung der Geschäftsobjekte) Operations (Welche Aktionen) Erzeugen eines /mehrerer Webservice Nach Möglichkeit IBF-konform (nicht zwingend) XML Strukturen von Entities erzeugen WsdlToMetadata.exe Metadaten mit VS.Net-Metadata-Explorer erzeugen SmartTag entwickeln GUI entwickeln (UserControl), nicht zwingend
Planung - Anwendungsfälle Applikation: GreetingService Anwender öffnet Word Tippt Namen von Freunden ein SmartTag-Recognizer erkennt Namen Anwender ruft SmartTag->Show Detail auf SmartTag-Action ruft IBF auf, übergibt erkannten Anwendernamen IBF ruft Webservices auf und erhält Ergebnis Ergebnis wird in der TaskPane in einem selbstentwickelten UserControl angezeigt
Entities, Views, Operations Entity: Friend Schema <Entity Name="Friend" DefaultReferenceSchemaName="FriendSchema"> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Friend"> <xs:complexType> <xs:attribute name="Name" type="xs:string" use="required"></xs:attribute> </xs:complexType> </xs:element> </xs:schema>
Entities, Views, Operations View: getGreetingMessage Schema <GreetingMessage> <Salutation>Hello</Salutation> <Name>William</Name> </GreetingMessage> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Salutation" type="xs:string"></xs:element> <xs:element name="GreetingMessage"> <xs:complexType> <xs:sequence> <xs:element ref="Salutation"></xs:element> <xs:element ref="Name"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Name" type="xs:string"></xs:element> </xs:schema>
Entities, Views, Operations Operation: GetGreetingMessage <Operation Name="GetGreetingMessage" EntityName="Friend"> <InputSchemas> <SchemaInstance SchemaName="FriendSchema" Index="1" /> </InputSchemas> <OutputSchemas> <SchemaInstance SchemaName="GreetingMessageSchema" Index="1" /> </OutputSchemas> </Operation>
Neues Projekt: FriendService Neuer WS: SayHello Zwei neue Klassen für Der Webservice Neues Projekt: FriendService Neuer WS: SayHello Zwei neue Klassen für Friend-Entity Enthält XML-Attribute GreetingMessage–View ... [XmlRoot("Friend", Namespace="urn-GreetingService-Data")] public class Friend { private string name; [XmlAttribute("Name")] public string Name { get { return this.name; } set { this.name = value; } }
Ein ganz normaler Webservice 3. Der Webservice Ein ganz normaler Webservice Testmethode einfügen (siehe Code) [WebService(Name="Greeting Service", Description="A Service to send out greeting messages", Namespace="http://InformationBridge/SayHello")] public class SayHello : System.Web.Services.WebService { private GreetingMessage greetingMessage; [WebMethod(Description="A method to greet a friend")] public GreetingMessage GetGreetingMessage(Friend aFriend) { greetingMessage = new GreetingMessage(); greetingMessage.Name = aFriend.Name; if (aFriend.Name=="Marcel") { greetingMessage.Salutation = "Hello "; } else { greetingMessage.Salutation = "Guten Tach "; return greetingMessage;
Webservice Projekt und Test Information Bridge Framework Demo Webservice Projekt und Test
Zwei Gruppen von Metadaten Daten und Logik Metadaten anlegen Zwei Gruppen von Metadaten Daten und Logik Webservice Zugriffe Operations, Entities Darstellung Views GUI-Elemente in der TaskPane Neuer Projekttyp in VS.Net
Metadaten-Typen Metadata = Ein Projekt der IBF Lösung Entity = Geschäftsobjekt View = eine Ansicht eines Geschäftsobjektes Ports = Quelle für XML, Daten, Schemata, … Schema = XML-Schema Transformation = wandelt XML in anderes XML
Eine Entity kann auf verschiedene Art Dargestellt werden Entities und Views Eine Entity kann auf verschiedene Art Dargestellt werden Informationen können aus unterschiedlichen Quellen (WebServices) stammen Kunde Finanzen Bestellungen Privates Entity (Author) View (AuthorSummary) View (AuthorRoyaltyData)
In IBF gibt es eine ganze Reihe von Metadaten Überblick Metadaten In IBF gibt es eine ganze Reihe von Metadaten Scope Entity Entity 2 Entity Entity 1 View 1 Relationship View 2 View Locator View Locator Reference Service Operation Instance Service Operation Instance (Output) Schema (Input) Schema Port
Relationships Ein Autor hat viele Bücher geschrieben Die Entitäten stehen in Beziehung zu einander So kann der Anwender später ein Drill Down machen
Relationships von verschiedenen LOB Systemen Informationen können aus mehreren LOB’s zusammengesammelt werden Information Worker Office 2003 Relationship in Metadata IBF Engine Metadata Cache Client side Server side Web Service Web Service Pubs database Fulfillment System
Metadaten – Geschäftsdaten Metadata Scope SayHello Entity Friend View GreetingMessage Friend.DefaultViewName = GreetingMessage Port XML und Schema für Friend-Schema Port XML und Schema für GreetingMessage-Schema Zuweisen der Schemata zu Entity und GreetingMessage
Metadaten – Der Webservice Port SOAP für den Webservice anlegen Hier wird die Webreferenz verlinkt Operation für GetGreetingMessage anlegen Port SOAP zuordnen Entity Friend zuordnen
Metadata Aktueller Stand der Metadaten Operation Schemata Port zum Webservice Ports
Metadata-Explorer und XML-Datei Information Bridge Framework Demo Metadata-Explorer und XML-Datei
Publishing Metadata
Metadata Explorer: The Publish Metadata Dialog Box
The Publishing Process 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
Information Bridge Framework Demo Publishing
Die GUI
Die GUI Title Bar Region Caption Region
Die GUI – Eine Überschrift (Title bar) View GreetingMessage Verfügt über MenuItemDefinition – Properties Menüaussehen wird über XML definiert XML kommt aus einer Operation MenuType = 1 (Anzeigen) MenuDefinitionOp…Instance hinzufügen Operation hinzufügen
Name des erkannten Freundes anzeigen Die Operation Name des erkannten Freundes anzeigen Input ist ein Schema vom Typ Friend das auch den Namen (Attribut Name) enthält Menüs müssen ein bestimmtes IBF Schema erfüllen Output der Operation muß ein Schema vom Typ MenuDefinitionSchema Deshalb Operation vom Typ: OperationTransformationAggregation <xs:element name="ViewProperties" type="ViewPropertiesType" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="ViewPropertiesType" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:sequence> <xs:any namespace="##any" processContents="lax" minOccurs="0" /> </xs:sequence> <xs:attribute name="Caption" type="xs:string" use="optional" default="" /> <xs:attribute name="Description" type="xs:string" use="optional" default="" /> </xs:complexType> </xs:element>
Die Operation – Wir zeigen eine Überschrift an … Operation wandelt Friend Input in MenuDefinition Output um Schemata Ports für XML-Text
Überschirft Metadaten Information Bridge Framework Überschirft Metadaten Anzeige der Knoten
Aktionen Aktionen bestehen aus Instanzen mehrerer Operationen
Aktions Designer: Instanzen von Operationen erzeugen Action Canvas Metadata Explorer Toolbox
Aktions Designer – Parameter Die Operationen können sequentiell ausgeführt werden Über Transformationsinstanzen können Ein- und Ausgabeparameter zwischen den Operationsinstanzen zugewiesen werden
Aktionen testen Build & Execute Action Button Build & Execute Action Context Menu Item
Aktion aus VS heraus testen Information Bridge Framework Demo Aktion aus VS heraus testen
IBF Client Microsoft Office System (InfoPath, Word, Excel, Visio, Outlook) Visual Studio Tools for Office (VSTO) Actions Pane Deep document centric integration with Word and Excel Information Bridge Framework (IBF) Context & Action Services Engine (CAS) Smart Tag driven Windows Forms Can use either use .NET Assemblies or Web Services Server Microsoft Windows Server 2003 IBF uses IIS6 for the reading/writing web services that access the metadata server. SQL Server 2000 Used as the Metadata Server store IBF Metadata Server based on SQL Server 2000 Metadata store is relatively small (~5MB) as it only stores metadata and not data directly.
All services reside on a single machine Server Konfig All services reside on a single machine SQL Server 2000 MDS Read / Write Web Service Authorization Manager Web services are hosted on one or more separate servers MDS Read / Write Web Service Authorization Manager SQL Server 2000 Web Server
Client Konfig MDS Read / Write Web Service Authorization Manager Visual Studio .NET Metadata Designer IBF Client Office 2003 IIS & SQL Server 2000 IIS & SQL Server 2000 MDS Read / Write Web Service Authorization Manager Windows XP Metadata Designer Visual Studio .NET Office 2003 IBF Client
Entwicklung wird noch nicht genug unterstützt Fazit Hohe Lernkurve Sehr gute XML, XSL, XSD, … Kenntnisse ! Entwicklung wird noch nicht genug unterstützt Version 1.5 für QI 2005 geplant ! Unterstützung für Entwickler stark verbessert Zugriff auf beliebige Webservices möglich Metadaten werden einfacher, wenn die Webservices sich „wohlverhalten“ Get und Put für Entitäten, Beziehungen zwischen Entitäten VSTO 2005 bietet ähnliche Funktionalität Leichter für Entwickler mit .net Erfahrung Auf dem Client muss IBF Runtime sein
Microsoft Office System 2003 Fazit Und was nun ...?
VSTO 2005 wird ein großer Schritt nach vorn Ergebnisse VBA bleibt VSTO 2005 wird ein großer Schritt nach vorn IBF steckt noch in den Kinderschuhen, 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 2005 obsolet VSTO 2003 bringt nicht wirklich Punkte Office Dokumente gewinnen viel durch XML Unterstützung Verbessertes Deployment und Security
InfoPath 2003 Toolkit für VS.Net Info Path mit Assemblies verknüpfen
Java Script oder VB Script InfoPath Entwicklung Java Script oder VB Script Mit dem Toolkit kann auch in .Net entwickelt werden Neues Projekttemplate in VS.Net Info Path- oder Wordformulare? InfoPath muss auf den Clients installiert Der Schwerpunkt bei Infopath liegt auf den Formularen und dem Zugriff auf Datenquellen oder WS Der Schwerpunkt bei Word liegt auf Dokumenten
Zuerst VS.Net und dann Office 2003 installieren Tipps Zuerst VS.Net und dann Office 2003 installieren GAC muss vorhanden sein, wenn Office die PIA’s installiert Dann Office 2003 Professional or Professional Enterprise Edition installieren Andere Versionen unterstützen keine Smart Doc Entwicklung Primary Interop Assemblies bei Office installieren Nicht standardmäßig ausgewählt “Run From My Computer” Option verwenden
Alles wird gut Uff...