Marcel Gnoth, www.gnoth.net
OFF4 - IBF 1.5
Information Bridge Framework 1.5 verbindet Web Services und
Office System 2003
Marcel Gnoth, www.gnoth.net 2
Zur Person• Dipl. Inf. Marcel Gnoth, MCSD
• www.gnoth.net
• NTeam GmbH, Berlin• www.nteam.de• Leiter Softwareentwicklung• MS Gold Partner: Busines Intelligence, Information Worker,
Advanced Infrastructur
• Autor dotnetpro, dotnet-magazin, ComputerWorld, MSDN• Trainer (u.a. SPC Berlin, www.spc.de )• Themen
• VB6, COM, SQL Server• Verteilte nachrichtenbasierte Informationssysteme• Office System 2003 Integration• Reisen in ferne Länder: www.gnoth.net/reise.htm
Marcel Gnoth, www.gnoth.net 3
Agenda
• Einführung• Demo Contoso• Architektur• Ablauf eines IBF-Projektes• Der Webservice und die Geschäftsklassen• Eine einfache IBF-Lösung erstellen
• Meta Data Import, Wizards, Test
• Smart Tag erstellen• Schlussfolgerungen
Marcel Gnoth, www.gnoth.net
Information Bridge Framework
Office Dokumente mit verschiedenen LOB – Daten verknüpfen
Marcel Gnoth, www.gnoth.net 5
Warum IBF ?
Find Customer Account Rep
Find Orders
MS Word Task Pane
Option1Option1
Child
ChildChildChild
Label
LabelMary : Ford order is late. Please investigate.
Unproduktiv und Fehleranfällig!
Copy & Paste
• 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
Marcel Gnoth, www.gnoth.net 6
Warum IBF• Verknüpft Office Dokumente mit Daten• Zugriff auf Daten über Webservices• Informationen werden komfortabel in der TaskPane angezeigt
• Wenig Programmieren, deklarativer Ansatz• Dafür gute XML-Kenntnisse erforderlich
Marcel Gnoth, www.gnoth.net
Demo
Was kann IBF
Marcel Gnoth, www.gnoth.net 8
IBF-Überblick-Grafik• Web Service-basierende Architektur (SOA)• Zentraler Metadaten / GUI Server• Runtime für Smart Tag /
XML Ereignis Initiierung• Windows Forms und
Taskpane Unterstützung
MetadataMetadata
FinanceFinance
ERPERP
CRMCRM
Smart ClientsSmart Clients
Web Web ServicesServices
Web Web ServicesServices
Marcel Gnoth, www.gnoth.net 9
IBF-Architektur
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 10
IBF-Architekur
Legacy Legacy AppApp
Workflow Workflow EngineEngine
SiebelSiebelSAPSAPMS-CRMMS-CRM
Information BridgeInformation Bridge
Back-end ServicesBack-end Services
ClientClient
Office Office ApplicationApplication
Smart TagSmart Tag
Smart DocSmart Doc
Task Pane Task Pane ManagerManager
Host Host RendererRenderer
IBF - UIIBF - UI
IBF IBF EngineEngine
Metadata Metadata CacheCache
Metadata Metadata DesignerDesigner
Metadata Metadata Web ServiceWeb Service
MetadataMetadata
Compliant Compliant Service Service AdapterAdapter
Compliant Compliant Service Service AdapterAdapter
Compliant Compliant Service Service (Native)(Native)
BizTalk BizTalk EAIEAI
Existing Existing Web Web
ServiceService
XML Instance XML Instance DataData
MetadataMetadata
Marcel Gnoth, www.gnoth.net 11
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)
• LOB – Webservices
Marcel Gnoth, www.gnoth.net
IBF-Entwicklung
Let‘s walking through the dark forest …
Marcel Gnoth, www.gnoth.net 13
Eine IBF-Lösung• 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, XSL, 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 14
Bestandteile eines IBF-Projektes• Metadaten
• Bestehen aus XML, sie sind das IBF-Projekt• Befinden sich alle in einer XML-Datei
• Smart Tags• Interaktion zwischen Office Dokumenten und IBF• Aktivierung der IBF-Aktionen
• Eigene Bezutzerschnittstellen• UserControls, WinForms
• Webservice• Lesen und schreiben der Daten• Evtl. BL-Komponenten
Marcel Gnoth, www.gnoth.net 15
Vorgehen bei IBF Programmierung1. Gründliche Planung (Use Cases)
2. Definition von Artefakten und Entitäten1. Ansichten (View) der Entitäten (Geschäftsobjekte)
2. Referenzen (Reference) für Zugriff auf Entitäten
3. Beziehungen (RelationShip) zwischen Entitäten
4. Operationen (Operation)
3. Webservices• Nach Möglichkeit an IBF angepasst
4. Metadaten mit VS 2003 erstellen, Designer + Wizards
5. SmartTag mit VS 2003 programmieren
6. GUI entwickeln (UserControls, WinForms)• nicht zwingend
Marcel Gnoth, www.gnoth.net 16
Planung
• Anzeige eines Kunden aus der NorthWind-DB• Suche nach KundenID (ALFKI, LETSS, … )• Definition von Entitäten
• Kunde• Bestellung
• Operationen• Was soll mit den Entitäten geschehen?• Kunde laden, speichern (get, put)• Bestellstatus ändern (act)
Marcel Gnoth, www.gnoth.net 17
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 18
IBF – References
• Ähnlich einem Primärschlüssel• Ermöglichen Zugriff auf eine bestimmte Entität• ViewLocator
• 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 19
IBF – Relationships
• Stellen Verbindung zwischen zwei Views her• Zum Beispiel:
• View-Customer und View-Orders sind verbunden über eine CustomerID-Referenz
• Navigation zwischen Geschäftsobjekten
Marcel Gnoth, www.gnoth.net 20
Relationships von verschiedenen LOB Systemen
Office 2003Office 2003
IBF EngineIBF EngineMetadata
CacheMetadata
Cache
Information WorkerInformation Worker
Client sideClient side
Server sideServer side
Pubs databaseFulfillment
System
Web Service Web Service
Relationship in Metadata
• Informationen können aus mehreren LOB’s zusammengesammelt werden
Marcel Gnoth, www.gnoth.net 21
Erstellen von Geschäftsklassen
• Nur, wenn Sie den Webservices selber erstellen• Für jede View und für jede Referenz eine Klasse
erstellen• Diese Klassen mit XML-Attributen versehen
• Werden vom SOAP Formatter in das geplante XML serialisiert
• Diese Klassen dienen als Parameter für die zu erstellenden Webservices
Marcel Gnoth, www.gnoth.net 22
Erstellen der Customer-Klasse
• Klasse Customer mit XML-Attributen für den SOAP-Formatter
[XmlRoot("Customer",Namespace="Customer-Data",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="Customer-Data",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 23
Erstellen der CustomerID-Referenz• Klasse Customer_ID mit XML-Attributen für den
SOAP-Formatter• Analoge Klassen für die anderen Referenzen
(Email, …)
//<CustomerID CustomerID="ANYCUSTOMERID" xmlns="CustomerID-Data"/>[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="CustomerID-Data"/>[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 24
Erstellen der Webservices
• Beliebige Webservices können eingesetzt und kombiniert werden
• Eigene Webservices für beliebigen Datenzugriff• Können an IBF angepasst erstellt werden• Weniger Transformationen
• LOB-Webservices• Können genauso verwendet werden
• Drei Arten von Webmethoden• Get, Put, Act
Marcel Gnoth, www.gnoth.net 25
Get-Methoden
• Liefern Entitäten als View zurück• Bekommen meist eine Referenz übergeben
[WebMethod]public Customer GetCustomer(Customer_ID objCustomerID) { ... }
[WebMethod]public Customer GetCustomer(Customer_ID objCustomerID) { ... }
Marcel Gnoth, www.gnoth.net 26
Put-Methoden
• Aktualisieren eine Entität im LOB-System mit den View-Daten
[WebMethod]public void PutCustomer(Customer objCustomer) { ... }
[WebMethod]public void PutCustomer(Customer objCustomer) { ... }
Marcel Gnoth, www.gnoth.net 27
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 28
Test-Methoden
• Webservices haben komplexe Datentypen als Parameter (Referenzen,…)
• Können nicht direkt mit dem IE getestet werden• Deshalb Testmethoden mit einfachen
Parametern
[WebMethod]public Customer GetCustomerTest(string strCustomerID) { ... }
[WebMethod]public Customer GetCustomerTest(string strCustomerID) { ... }
Marcel Gnoth, www.gnoth.net
Coding
Geschäftsklassen und Webservices
Marcel Gnoth, www.gnoth.net
Metadaten erzeugen
Meta Data Explorer und Wizards
Marcel Gnoth, www.gnoth.net 31
Metadaten anlegen• Zwei Gruppen von Metadaten• Daten und Logik
• Webservice Zugriffe• Operations, Entities
• Darstellung• Views• GUI-Elemente in der TaskPane
Marcel Gnoth, www.gnoth.net 32
Metadaten-Typen
• Metadata = Ein Projekt der IBF Lösung• Entity = Geschäftsobjekt• View = eine Ansicht eines Geschäftsobjektes• Port = Quelle für XML, Daten, Schemata, …• Schema = XML-Schema • Transformation = wandelt XML in anderes XML
Marcel Gnoth, www.gnoth.net 33
Arten von Meta Daten
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 34
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 35
Importieren von Meta Daten• XML-Datei mit den MetaDaten ist leer• Eine Vorlage aus dem Ressource Kit
• MOIBF1.5_Reskit_Templates• Microsoft.InformationBridge.
Framework.UI.InformationBridgeScope.Metadata.xml
• WSDL vom Webservice
Marcel Gnoth, www.gnoth.net
Demo
Importieren der Meta Daten
Marcel Gnoth, www.gnoth.net
Views erstellen
Service Metadata Creation Wizard
Marcel Gnoth, www.gnoth.net 38
Entity, View und ViewLocator• Mit Wizard Artefakte erstellen• Entity = Customer• View = Darstellung der Entity• ViewLocator besorgt die Daten für die View
Marcel Gnoth, www.gnoth.net
Demo
Service Metadata Creation Wizard
Marcel Gnoth, www.gnoth.net
Region Creation Wizard
Die Darstellung
Marcel Gnoth, www.gnoth.net 41
Die GUI
Marcel Gnoth, www.gnoth.net 42
Region Creation Wizard• Erzeugt eine Region
• UserControl• HTML
• Erzeugt eine Action• Für die Darstellung
• Bug bei nicht englische.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 43
Action• Besteht aus mehreren Operation-Instanzen
Marcel Gnoth, www.gnoth.net 44
Aktions Designer – Parameter • Die Operationen können sequentiell ausgeführt werden• Über Transformationsinstanzen können Ein- und
Ausgabeparameter zwischen den Operationsinstanzen zugewiesen werden
Marcel Gnoth, www.gnoth.net 45
Aktionen testen
Build & Execute Action Button
Build & Execute Action Context Menu Item
Marcel Gnoth, www.gnoth.net 46
Aktionen testen
• ControlLib Assembly mit StrongName versehen• Full Trust für Assembly auf Machinenebene
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
Demo
Erstellen einer Region
Testen der Action
Marcel Gnoth, www.gnoth.net
IBF – Smart Tags
Ein bisschen Code muss sein!
Marcel Gnoth, www.gnoth.net 49
Was sind SmartTags?
• Verknüpfen Text in Dokumenten mit Geschäftsprozessen
Smart Tag Action Button
Lila gepunktete Linie: Smart Tag Kennzeichnung
Marcel Gnoth, www.gnoth.net 50
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)
• IBF-SmartTags sind anders als die anderen
Marcel Gnoth, www.gnoth.net 51
IBF Smart Tag Projekt
• 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)
• Implementieren der Interfaces:• IRecognizer• IActionHandler
Marcel Gnoth, www.gnoth.net 52
IRecognizer
• IRecognizer.Initialize • Laden von Daten
• IRecognizer.Recognize• Word-Paragraph, Excel-Cell, Buchstabe oder Wort,…
• SmartTag wird in das Dokument eingebettet• Spezielles XML-Element: ContextInformation• muss IBF Schema entsprechen
Marcel Gnoth, www.gnoth.net 53
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>
<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>
Marcel Gnoth, www.gnoth.net 54
IActionHandler
• Eigene Kontextmenüeinträge• Sonst nur Standardeintrag: ShowDetails
• Eigene Aktionen
Marcel Gnoth, www.gnoth.net
Demo
Ein SmartTag für IBF
Marcel Gnoth, www.gnoth.net 56
SmartTag mit IBF verknüpfen
• Normale SmartTags werden als COM-Komponente registriert
• IBF Client verfügt über Genric Recognizer• IBF-SmartTags werden mit der
MetaDataSolution verknüpft• Werden dann von IBF Engine geladen
Marcel Gnoth, www.gnoth.net 57
Generic SmartTag Recognizer• Import Meta Data vom Ressourcekit• Ports
• GenericSmartTags: Pfad zum Assembly• GenericRecognizer: Namespace.Klasse des Recognizers• LoadRecognizer-Operation verweist bereits auf
GenericSmartTag-Port
• Action• Entities > GenericSmartTags
> Views > GenericRecognizers > Actions > AddAction
Marcel Gnoth, www.gnoth.net 58
Action und Operation verknüpfen
Marcel Gnoth, www.gnoth.net 59
Testen
• Meta Data Projekt als Startprojekt• Projekteigenschaften
MetaData/Action Debugger Mode• MetaData, Managed, Native
• BreakPoints im SmartTag-, UserControl-Code• BreakPoints im MetaData-Explorer
Marcel Gnoth, www.gnoth.net 60
Publishing Metadata• Bis jetzt Meta Daten nur auf Client• Beim Debuggen werden MetaDaten des VS-
Projektes verwendet• Meta Daten müssen auf den Server
Marcel Gnoth, www.gnoth.net 61
Publish Metadata Dialog
• URL zum IBF-Write-WebService
• Clients kennen den Read-WebService
• Office-Applikationenladen MetaDaten
Marcel Gnoth, www.gnoth.net 62
The Publishing Process
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 63
Fazit• Hohe Lernkurve
• Sehr gute XML, XSL, XSD, … Kenntnisse !
• Entwicklung wird noch nicht genug unterstützt• Version 1.5 seit QI 2005• 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
Marcel Gnoth, www.gnoth.net 64
Mendocino
• Vorgefertigte IBF-Lösungen• Mit SAP
Marcel Gnoth, www.gnoth.net 65
Ressourcen
• Vijay Desai. (Sep, 2004), http://www.persistent.co.in/knowledgecenter/InformationBridgeFramework.pdf
• IBF-Buch• Code Project WalkThrough• IBF-MOC Kurs• Ressource Kit• NewsGroup
Marcel Gnoth, www.gnoth.net 66
Alles wird gut
Uff...Uff...