Scoprirete che su Office non si può solo contare ma anche sviluppare 1 Information Bridge Framework Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT [email protected] 2 Agenda • • • • • • • • • Information Bridge Overview Architettura Web services Solution Metadata User Interface Region Search Smart tags e attached schema documents Hyperlinks Deployment 3 Agenda • Prima parte: alla scoperta di IBF! – Introduzione a Information Bridge Framework – Demo user-side – Architettura e componenti fondamentali – Livello intro • Seconda parte: alla conquista di IBF! – Sviluppiamo una soluzione completa – Demo dev-side – Livello advanced 4 Cosa diamo per scontato • Conoscenza del .NET Framework – Interfaccia, Ereditarietà – Code Access Security • Conoscenza architetture n-tier – Data Layer, Business Layer, UI Layer • Conoscenza di XML – Document, Schema XSD, Trasformazioni XSL • Conoscenza di Web Services – WSDL, Web Method, .ASMX • Conoscenza di Windows Forms – Custom User Control 5 Overview 6 Il problema Outlook Maria, Controlla il codice di assistenza SR27090 della Contoso. Gran capo Trova Ordini Copia & Incolla • E-mail e documenti si riferiscono a business entity – Clienti, Ordini, Prodotti • Non è semplice ottenere dettagli o drill-down • Accesso manuale a diverse applicazioni per ottenere info Trova il cliente 7 Information Bridge Framework: Mission Enable information workers to discover, engage, and act on enterprise business objects from within Office CRM ERP 8 La soluzione • Information Bridge Framework permette di lavorare con entità di business eterogenee da applicazioni Office – Word 2003 – Excel 2003 – Outlook 2003 (se Word è e-mail editor) – InfoPath 2003 (da v.1.5) – Internet Explorer 6.0 (da v.1.5) 9 Audience • IBF è per – Utenti che utilizzano e-mail e documenti all’interno di processi aziendali – Utenti che necessitano di dati forniti da fonti diverse – Utenti che possono/devono utilizzare diverse applicazioni aziendali – Sviluppatori professionisti • IBF NON è per – Utenti che eseguono processi aziendali strutturati all’interno di singole applicazioni • Utenti SAP che inseriscono ordini quotidianamente – Sviluppatori per hobby o advanced-user 10 I Pilastri: Metadati • IBF è basato su metadati – e non sul codice • Utilizza metadati XML per – Esporre business object (entità) – Mettere in relazione entità attraverso sistemi diversi – Definire le azioni che un utente può eseguire su un’entità – Accedere e agire in modo contestuale su entità tramite smart tag e attached schema document – Collegare proprietà o campi di BO a elementi di UI – Gestire la security e authorization • Sfrutta il supporto per XML di Office 2003 11 Architettura 12 Punti chiave dell’architettura • Separare i developer della soluzione Office dai developer di Web Services • Ridurre il codice tramite definizioni dichiarative – Azioni, operazioni e trasformazioni • Fornire un modo per gestire modifiche e l’evoluzione della soluzione • Riutilizzare lo stesso codice su diverse applicazioni Office 13 Demo 14 Architettura 15 Con Information Bridge InfoPath Attached Schema Documents Smart Tags UI dichiarativa del task pane Connessioni dichiarative verso i servizi Managed, Connected Solution Schema Web services sviluppati seguendo le Guidelines di IBF Data Sources, Apps Visual Studio .NET / VSTO / SmartTag Codice per UI complesse Information Bridge Declarative Solution Tools Information Bridge Client Run-time 16 Princìpi • Web service sviluppati seguendo le linee guida di IBF – Espongono specifici metadati necessari al runtime di IBF • Declarative solution schema – Il CAS (Context and Action Service) Metadata service consente all’amministratore di unire vari metadati provenienti da diversi servizi e aggiungere altri informazioni quali • Relazioni fra Web Service • Collegamenti a elementi di UI (menu, controlli di Windows Forms, XSL) • Azioni che coinvolgono operazioni su vari Web Service • Autorizzazioni • Client-side add-in per Office – L’engine CAS intercetta i metadati della soluzione – Interpreta il contesto Office e presenta • Azioni disponibili • Risultato di azioni 17 Architettura 18 Flusso 6 9 Applicazione Office Office Application 1 Utente seleziona “Show Details” documento con markup 5 3 Recupera le informazioni dal servizio addetto 4 Interpreta i dati di instanza Context & Action Service 7 Naviga all’interno del servizio 8 Naviga attraverso i servizi 10 Chiama il servizio da eseguire Interpreta Markup Task Pane <ERP:Order ID=4711> </ERP:Order> Recupera l’instanza di info Interpreta 4 e Visualizza 3 8 Naviga Esegue azioni 5 Presenta i dati nel Task Pane 6 Utente naviga (nel Task Pane) 9 Utente seleziona un’azione Metadata 2 Interpreta il context utilizzando i metadati 7 Line of Business Service 10 Data Feed Information Bridge Framework 19 Metadati Namespace Entity View Reference Action Operation Get (Reference) Web Service Operation Put (Reference, Update Schema) Act (Reference, Act Schema) 20 Metadati • Entity – Business object astratti • Cliente, Ordine, Prodotto • Views – Modi diversi di “guardare” un’entità – Ognuna ha uno schema fisso • Actions – “Cose” che un utente può fare • Visualizzare un ordine, Cancellare una richiesta • Operations – Chiamata a Web Service o assembly 21 Metadati Namespace Namespace Entity Entity Entity Entity View 3 Ref 4 Ref 3 Ref 1 Ref 2 View 1 View 2 Action 1 Service Op 1 Web Services Action 2 Service Op 1 UI Op 1 .net Assembly Relationship UI Op 1 Action 3 Service Op 1 UI Op 1 HTML Windows form Actions 22 UI - Smart Tag Smart tags vengono creati: • Recognizer di smart tag • Inserendo i tag manualmente dal task pane • Documenti auto-generati • Copia & incolla Information Bridge registra un action handler per smart tag standard e generico 23 UI – Attached Schema Document Dati possono essere collegati a UI in diversi modi: • Office task pane • Floating task pane • Dialog box / menù • Windows Forms • In-line all’interno del documento Gli eventi sono scatenati da Information Bridge • Information Bridge cattura gli eventi mentre l’utente si muove attraverso i nodi XML • Information Bridge riconosce il contenuto XML corrispondente al contenuto dei metadati 24 End to End Model 4 1 Inserire smart tags in documenti 5 Click su smart tags Esporre applicazioni enterprise come Web services IBFcompliant Data Source Web Service Custom Application Web Service SAP Web Service Metadata 3 Deploy Office Professional 2003 con Information Bridge Client 2 Creare Solution Schema • Relazioni cross-services • Collegamenti a elementi UI • Autorizzazioni • Azioni 25 DevTools: Overview MS Word .NET Developer Task Pane Label Label Option1 Option1 UI Design XSL or Windows Forms Child Child Child Child Metadata Designer Context & Action Service Metadata Designer Developer/ Business Analyst Metadata Authentication Manager MSCRM Web Service Custom Web Service SAP Web Service Web Services Development .NET Web Services Developer 26 DevTools: Metadata Designer importa file xml 1 MD provenienti da web services IBF-compliant Crea progetti e scope Crea action = SUM (operation, transforms) Associa operation a group Operation custom verso controlli Windows Forms 2 Sviluppatore • • • • • Add-in per Visual Studio .NET Importa metadati da Web services sviluppati secondo le linee guida di IBF Progettare e creare tutti i metadati necessari per una soluzione Pubblica i metadati verso un Metadata Service Wizards per creare nuovi elementi Crea relationships tra views 3 Pubblicazione verso Metadata Service Metadata Service Metadata 27 Deployment Client MetaData Service Authorization Manager Distribution Server Client framework può essere distribuito tramite SMS, Group policy di AD o setup eseguito dall’ utente Web Server Requisiti del server: • Requisiti del client : • .NET Framework 1.1 SP1 • Office System 2003 Professional • Windows 2000 o XP Professional SQL 2000 Server Microsoft Windows Server 2003 • IIS 6.0 • Authorization Manager • SQL Server 2000 SP3a • .NET Framework 1.1 + SP1 28 Information Bridge: In sintesi • Integrazione fra il mondo Office e sistemi eterogenei di back-end • Definizione dichiarativa dei componenti di una soluzione – Le relazioni fra oggetti sono definite nei metadati di una soluzione e non nel codice – Lo sviluppatore non è sempre necessario (solo UI e WS) • Performance – I metadati possono essere “cachati” sul client • Semplicità di deployment – I client installano automaticamente le soluzioni nuove o quelle modificate • Scambio asincrono (5 thread di default) di metadati fra client e MDS 29 Information Bridge: In sintesi • Riutilizzo di componenti UI o Web Services – Riciclabili in diverse applicazioni Office – Sopravvivono al “cambio di stagione” • Es: nuova tecnologia di accesso ai dati • Scambio di dati xml e non di classi binarie fra i layer • Connessione diretta fra Office e Web Service – Nessuna perdita di prestazioni causata da “hop” extra • Invocazione dinamica di Web Service – Installazione senza codice o proxy client-side • Dati aggiornati – I dati sono sempre “attuali” – Action operano direttamente sui Web Services 30 Caffè!!! 31 Web Services 32 Progettare i Web Services • IBF “digerisce” qualsiasi Web Service WS-I Compliant • Ma se seguiamo le linee guide ci semplifichiamo la vita • Progettare i WS pensando ai metadati di IBF – Entity – View – Operation – Reference 33 Entity • La “cosa” a cui vogliamo accedere – Business object astratti • Cliente, Ordine, Fattura • Punti di partenza • Forniscono un contesto – L’utente dovrà fare “qualcosa” con un’entità • Può non avere nessuna rappresentazione a livello database 34 View • Rappresentazione fisica di un’entità – Un modo di “guardare” un’entità • ClienteDettaglio • Clienti • Ogni entità – Avrà una default View – può avere N Views • Una View può essere una singola instanza o una lista • Una View ha un singolo schema associato 35 Operation • Operation == Funzione in un linguaggio object-oriented • 10 tipi diversi di operation – Trasformazione di contenuti da uno schema all’altro – Visualizzazione di elementi di UI – Costruzione di menù – Chiamate a assembly .NET custom – Chiamate a metodo esposto da un Web Service 36 Schema • Uno schema XSD definisce una struttura dati • Metadati di IBF utilizzano schema come dati di input o output 37 Reference • Una reference è un identificatore univoco per recuperare il contenuto di una view • Definito con uno schema • WS utilizzano reference come identificatore per operazioni di Get o Update • Item References – Identificano una singola instanza • List Refences – Identificano una lista di istanze 38 Stop! Aiuto non mi ricordo niente!! • Entity – Cliente • View – ClienteDettaglio <ClienteDettaglio xmlns=“urn-SampleSolution-Data”> <Nome>Luca</Nome> <Cognome>Regnicoli</Cognome> <Email>[email protected]</Email> </ClienteDettaglio> 39 Stop! Aiuto non mi ricordo niente!! • Reference – <ClienteId Nome=“Luca” xmlns=“..” /> • Operation – GetClienteDettaglio(ClientId) As Cliente – Nota importantisssssima: • Le reference sono classi complesse • A IBF piacciono molto • Possiamo utilizzare string, Int32 ma ci complichiamo la vita con IBF 40 Linee guida • Esporre metadati aggiungendo attributi .NET a classi e proprietà – Serializzazione XML • Strutturare i metodi coinvolgendo reference – GetClienteDettaglio(ClienteId) • Progettare i metodi pensando ai metadati di IBF e in particolare alle View 41 Demo 42 Solution Metadata… dai che sono quasi finiti 43 Schema completo dei metadati Metadata Scope Groups Relationship Entity ViewLocator View Action Operation Transformations Reference Schema Get() Operation Web Service Operation Put() Operation Ports Act() Operation 44 Metadata scope • Categoria top-level – Contiene gli altri metadati (Entity, View, Schema) • Partizionare metadati in raggruppamenti logici • I progetti possono essere organizzati in sezioni corrispondenti a specifiche applicazioni line-ofbusiness – CRM (Clienti) – HR (Dipendenti) – ERP (Ordini) – SR (Service Request) 45 View Locator • Ogni View specifica uno schema – View data schema • Una soluzione IBF può includere diversi modi per ottenere lo stesso View schema – ClienteDettaglio -> GetClienteById(R1) – ClienteDettaglio -> GetClienteByEmail(R2) • View locator permettono di trasformare uno reference schema in input nel View schema – Trasformazioni XSL – Operation (Chiamata a Web Service) 46 Relationship • Descrivono la relazione fra due View – Clienti e Ordini • Forniscono funzionalità di navigazione fra due View • Una relazione è una trasformazione che accetta il contenuto di una View e la converte in una reference verso un’altra View 47 Port • Descrivono la location e i dettagli di accesso di una fonte dati – URL verso un Web Services (file .asmx) – Modello di autenticazione del servizio – Path o strong-name di un assembly .NET • Divise in tre categorie – SOAP – Assembly .NET – File • Trasformazioni XSL 48 Transformation • Oggetti utilizzati da IBF per convertire uno schema in un’altro • Divise in tre categorie – XSLT – XPath – Regular Expression 49 Group • Meccanismo di classificazione per applicare permission a operazioni sui metadati • Utilizzati da Authorization Manager – Role-based security 50 Demo 51 User Interface Region 52 Regions • Region - Il building blocks fondamentale del task pane • Una regione ospita solitamente un controllo Windows Forms 53 Action! • Per visualizzare una Region occorre definire una Action • Coppia/e di Transformation e Operation 54 Action Pipeline 55 Un’azione classica: visualizzare una Region Operation: ShowRegion Action 3 1 SOAP Operation 2 1 Utente fornisce un contesto di reference come input 2 Recupero dei dati tramite una chiamata SOAP 3 Visualizza i dati risultanti in una regione • • • • • • Esempio: un cliente con clienteNome=Contoso Utilizzo del View Locator per chiamata SOAP GetCliente Input ClienteNome, restituisce un oggetto Cliente con <Nome>, <Cognome>, ecc. Trasforma i dati restituiti nello schema di input necessario all’Operation ShowRegion Accetta input per l’operazione Imposta le informazioni in proprietà degli user user control (txtNome.Text, ecc.) 56 Operations • Operation di tipo SOAP – Già visti nella demo sui WS • “Custom” Operations – Agire sul documento o – Visualizzare elementi UI • Esempi di Custom Operations • ShowRegion (custom Windows Forms control) • ShowHTML (XHTML statico) • ShowDialog (WinForms control in una dialog) 57 “UI” Operations - ShowRegion • ShowRegion visualizza un controllo di WinForm • Classico controllo + implementazione IRegion • L’assembly deve avere i diritti .NET di Full Trust 58 Altre interface utili • IRegion – Contiene una proprietà che viene impostata al cambiamento dei dati • IMediator – Broker tra la regione e il framework • IVisualStyles – Fornisce accesso ai temi di Office • IApplicationService – Fornisce accesso all’oggetto “application” • IDocumentService – Fornisce accesso all’oggetto “document” 59 Controllo Reference List Titolo con menù Reference • • Descrizione espansa Menù Paginazione 60 Demo 61 Search 62 Search Entry Point Main Menu Tool Bar (optional) Right Click Search Tab 63 Search UI Information Bridge fornisce 3 controlli • Controllo “Pick a Search” – Elenco di ricerche disponibili – Sensibile al contesto attuale • Search Criteria – Ognuna è una Search Action – Search criteria mappato a View Locator – UI personalizzabile • Result List Region – Region Reference List 64 Demo 65 Smart Tag e Attached schema documents 66 Smart Tags 67 Recognizer e Action Handler • Smart Tag – Un frammento di XML incorporato all’interno di un documento Excel, Word o email di Outlook • Classe Recognizer (ISmartTagRecognizer2) – Identifica le keyword o regular expression – Inserisce gli smart tag nel documento • Sottolinea il termine con una linea tratteggiata • Classe Action Handler (ISmartTagAction2) – Gestisce i menù di smart tag e i suoi comandi 68 Smart Tag e Information Bridge • Normalmente dovremmo creare una serie di assembly e registrarli sul client – Non è un semplice copia/incolla • IBF installa un generico recognizer e un generico action handler • Possiamo specificare quanti recognizer/action handler vogliamo all’interno dei metadati • L’assembly dello smart tag viene chiamato da IBF al posto di Office • IBF trasferisce tutte le chiamate Office dirette al generico recognizer/handler verso il recognizer/handler configurato nei metadati 69 Attached Schema Document 70 Come funziona? • Utente entra nel nodo XML • Information Bridge gestisce l’evento XML • Il nodo viene “impacchettato” e spedito al Information Bridge Engine come reference • Normale elaborazione di IBF – ViewLocator / Views – Esecuzione delle operation sulla default action – Presentazione della UI (se definita) • ShowRegion / ShowHTML / ShowDialog 71 Demo 72 Hyperlinks 73 Hyperlinks 74 Hyperlinks in Information Bridge • URL Moniker con una specifica sintassi che puntano a una reference di metadati • ibf:v1/Microsoft.Solutions.SampleSolution .SR/ServiceRequest/ServiceRequestDetails/ Xsd.TicketNumber%20(urn-SampleSolutionData)/ref?root=TicketNumber&xmlns=urnSampleSolution-Data&Id=SR178787 • <a href=“ibf:v1/.....”>Clicca qui</a> 75 Hyperlinks • Supporto ai link disabilitato di default – Abilitare EnableProtocolHandler nel Information Bridge Settings Manager (Adm Tools) • Funzionalità di insert/copy link disabilitata di default – Abilitare Enable Insert and Copy for <combo> • Hyperlinks o • Hyperlinks and Smart Tags 76 Se hyperlinks sono abilitati... 77 Demo 78 Deployment 79 Configurazione del server MDS Tutti i servizi risiedono su un’unica macchina MDS Read / Write Web Service Authorization Manager I servizi sono ospitati su uno o più server separati MDS Read / Write Web Service SQL Server 2000 Authorization Manager Web Server SQL 2000 Server 80 Configurazione del server MDS – Non supportata Web services e database sono ospitati su macchine diverse Tutti i servizi sono su server separati 81 Deploy del server • Eseguire Microsoft.InformationBridge.Service.MSI • Impostare le porte per i servizi di read e write – default 8081 per Read e 8082 per Write • La path del file roles.xml è memorizzata nel database – Se aggiungiamo altri server, l’installazione determinerà e userà automaticamente tale location 82 Configurare il server • IIS Settings – Servizio di Read default sulla 8081 – Servizio di Write default sulla 8082 – Application pool creato durante l’installazione • Consiglio di security – Non configurare la porta di Write su un server di produzione – Migrazione del database tramite • SQL Server (backup/restore, detach/attach, dts…) • Ambiente multi-server – Creare una share per roles.xml – Aggiungere le permission alla share per ogni server di front-end 83 Deploy del client • Eseguire Microsoft InformationBridge.Client.MSI – UI mode – Silent mode (package SMS) • Abilitare gli smart tag • Abilitare Word come e-mail editor di Outlook – HTML come default e-mail format • Configurare adeguatamente il tempo di aggiornamento della cache dei metadati • Ospitare gli assembly degli user control (Region) in una location centralizzata 84 Configurare il client <engine.config settings> <InformationBridgeEngine> <MetadataService Url="http://iwt32:8081/Information BridgeReadService.asmx" Assembly="" Class="" /> <Cache Enabled="true" Encryption="true" Location="" PercentDiskSize="1" /> <CacheRefresh Enabled="true" Day="1" Hour="*" Min="*" Sec="0" /> <Execution NumberOfThreads="5" OperationTimeout="120000" /> </InformationBridgeEngine> Group Policy • Override del file di configurazione locale 85 Security • HTTPS consigliato per la comunicazione fra MDS e i client • HTTPS consigliato per la comunicazione SOAP – WSE 2.0 Adapter nel Resource Kit di IBF 1.5 • Encryption della cache locale per utente • Utilizzare Auth Manager e Groups/Roles in Active Directory per dare accesso ai metadati • Non utilizzare dati sensibili all’interno di smart tag – Disabilitare Tools/Options/Save/Embed Smart Tags • Firmare gli assembly con strong-name – Policy centralizzata basata su strong-name (no URL!) • Implementare funzionalità di single sign-on per non costringere l’utente a digitare 2948 password 86 Scoprirete che su Office non si può solo contare ma anche sviluppare 87