Project 2003 Sviluppare Soluzioni EPM con Project Server (2/4) Massimiliano Bosco – Aliware – Torino – [email protected] Agenda • Parte 1: programmazione in ambito EPM – – – – – Alcune richieste tipiche Soluzioni stand-alone, client-server, EPM Architettura di Project Server 2003 Project Data Service (PDS) Esempio 1.1: utilizzo del PDS • Parte 2: architetture di connessione – Regole generali per i connettori – Esempio 2.1: importare le risorse con file XML • Parte 3: uso dei cubi OLAP e loro estensioni – Acquisizione dati da Sharepoint – Esempio 3.1: gestione rischi e problemi • Parte 4: estendere il PDS con codice gestito (.NET) – Schema generale di un’estensione PDS – Esempio 4.1: estensione PDS in C# Strumenti • MS Project SDK 2003 go.microsoft.com/fwlink/?linkid=21722 Regole generali per i connettori •Modello da SDK: ERP Connector Solution Starter •Interfacce standard (Enterprise Data Maintenance) •SOAP •File Drop •Vantaggi •EDM effettua le chiamate a PDS •Mapping dei dati nel business layer •Personalizzazione •PDS Extensions EDM • 3 tipi di servizio – Sincronizzazione dei dati delle risorse – Sincronizzazione dei membri del team – Sincronizzazione delle liste di custom field EDM (2) • Scenario 1: accesso alle risorse – Occorre sincronizzare le risorse di Project Server 2003 con l’archivio di un sistema Human Resource (HR) con frequenza giornaliera. – Ogni notte l’HR scarica un file XML in una cartella ben individuata. Il file XML può contenere metadati, quali la lista dei custom field associati alla risorsa – Il servizio EDM preleva il file, applica alcune regole di livello business all’XML ed effettua le chiamate PDS per aggiornare il pool di risorse enterprise (es. con ResourcesUpdate e ResourcesDeactivate) EDM (3) • Scenario 2: project team – Un sistema PSA (Professional Services Automation) gestisce un archivio di risorse in base a competenze, disponibilità, etc. – Occorre sincronizzare i dati dei team del PSA tutte le volte che il Resource Manager li modifica – Ad ogni commit il PSA effettua una chiamata SOAP a EDM inviandogli la lista aggiornata dei team – Dopo la convalida della richiesta XML, EDM effettua le chiamate a PDS per aggiungere o eliminare membri dal team di progetto EDM (4) • Scenario 3: enterprise custom fields – Un portale di gestione della conoscenza, delle competenze e di e-learning gestisce un elenco delle competenze per ciascun utente. Ogni competenza è identificata da un codice univoco. – I servizi di back end del portale scaricano in un file XML la lista delle competenze coi relativi codici – EDM raccoglie col metodo file drop il file, lo convalida e importa i nuovi codici, permettendo di associare alle risorse le loro competenze Uso di file drop HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\MS Project \Services\Configuration\Connector\[Monitor Location] • La chiave [Monitor Location] è descrittiva e viene usata ai fini del tracciamento (Es: projectsolution1, etc.) • Possono esserci diverse [Monitor Location] Metodi • Resource Data Methods – ResourcesUpdate : inserisce o modifica una risorsa – ResourcesDeactivate : disattiva una risorsa senza eliminarla dal DB • Project Team Methods – ProjectTeam : modifica la composizione del team • Enterprise Field Update – EnterpriseFieldUpdate : sincronizza il valore dei campi personalizzati con applicazioni esterne Esempio <Request> <ResourcesUpdate> <Resources> <Resource> <Name>EDM Tester</Name> </Resource> </Resources> </ResourcesUpdate> </Request> Risposta <Reply> <AllSucceeded></AllSucceeded> <Conversations> <Conversation> <Request></Request> <Reply></Reply> <Summary> <STATUS></STATUS> <HRESULT></HRESULT> </Summary> </Conversation> <Conversation> <Request></Request> <Reply></Reply> <Request></Request> <Reply></Reply> -- can be multiple PDS requests and replies -<Summary> <STATUS></STATUS> <HRESULT></HRESULT> </Summary> </Conversation> </Conversations> </Reply> Uso di un client SOAP Dim Dim Dim Dim Dim oSOAPClient As SoapClient30 sPDSRequest As String sPDSReturnXML As String sProjectServerURL As String verbosity As Integer sProjectServerURL = "http://servername/projectserver" verbosity = 3 Set oSOAPClient = New SoapClient30 oSOAPClient.MSSoapInit sProjectServerURL & "/PDSBiz.wsdl" sPDSRequest = "<Request><PDSInfo/></Request>“ sPDSReturnXML = oSOAPClient.submit(sProjectServerURL, _ "User Account", "Account Password", _ sPDSRequest, verbosity) Uso di HTTP Post Dim Dim Dim Dim oXMLHttp As XMLHTTP sPDSRequest As String sPDSReturnXML As String sProjectServerURL as String sProjectServerURL = "http://myserver/projectserver" Set oXMLHttp = New XMLHTTP oXMLHttp.open "POST", sProjectServerURL & _ "/logon/ADMRequest.asp", False sPDSRequest = GetRequest() ‘ sintetizza la ‘ la richiesta XML oXMLHttp.send sPDSRequest sPDSReturnXML = oXMLHttp.responseXML.xml Riferimenti • download.microsoft.com – MS Project Server 2003 Software Development Kit (SDK) • Siebel solution starter • mySAP connector – MS Project 2003 Resource Kit • Configurazione EDM http://www.msdn.microsoft.com/library/default.asp?url=/library/enus/pjsdk/html/pdsConfiguringServiceForEDM.asp • Web services MOC 2524: Sviluppo di Web Services usando Visual Studio.NET MOC 2500: Programmazione XML MOC 2349: Programmazione col framework .NET in C# MOC 2415: Programmazione col framework .NET in VB.NET