Marcel Gnoth, OFF4 - IBF 1.5 Information Bridge Framework 1.5 verbindet Web Services und Office...

Preview:

Citation preview

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="Chef@Alfki.de" xmlns="NTeam-Data" />

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

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

<CustomerEmail Address="Chef@Alfki.de" 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...