Project 2003 Sviluppare Soluzioni EPM con Project Server (1/4)

44
Massimiliano Bosco – Aliware – Torino – [email protected] Project 2003 Sviluppare Soluzioni EPM con Project Server (1/4)

description

Project 2003 Sviluppare Soluzioni EPM con Project Server (1/4). Massimiliano Bosco – Aliware – Torino – [email protected]. Finalità della sessione. Programmazione in Project 2003 Project Server 2003 Project Data Service (PDS) Integrazione applicazioni e connettori - PowerPoint PPT Presentation

Transcript of Project 2003 Sviluppare Soluzioni EPM con Project Server (1/4)

Page 1: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Massimiliano Bosco – Aliware – Torino – [email protected]

Project 2003

SviluppareSoluzioniEPM con

Project Server(1/4)

Page 2: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Finalità della sessione

• Programmazione in Project 2003• Project Server 2003• Project Data Service (PDS)• Integrazione applicazioni e connettori

– Esempi sui meccanismi di scambio dati con SAP, Siebel, applicativi gestionali custom di terze parti, etc.

• Analisi dati della raccolta di progetti (portfolio)• Ottimizzazione del processo di sviluppo con le

nuove tecnologie (Web Service, XML, Visual Studio .NET)

Page 3: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Destinatari

• Programmatori Office con esigenze di – condivisione dei dati di progetto in team– implementazione e/o migrazione a soluzioni

client-server ed EPM– integrazione e sincronizzazione dati tra

applicazioni eterogenee

• Programmatori “classici” (VB, VBA, .NET) che sviluppano in client-server e devono integrare le loro applicazioni in Office

Page 4: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Prerequisiti

• Conoscenze di base della piattaforma Microsoft Project 2002 professional e server

• Conoscenza di base dei linguaggi di programmazione MS Visual Basic e Visual Basic .NET

• Concetti di base in ambito database e SQL• Risulteranno utili l’esperienza nello sviluppo di

applicazioni Web (ASP o ASP.NET) e la conoscenza di BizTalk server

Page 5: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

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– Schema generale di un connettore– 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#

Page 6: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Strumenti

• MS Project SDK 2003

go.microsoft.com/fwlink/?linkid=21722

Page 7: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Strumenti lato client• VBA: macro recorder, IDE (automazione task,

add-in, integrazione con altre applicazioni Office, etc.)

• Project Guide: guide e wizard personalizzabili dal programmatore con XML content definition, link a pagine HTML, script

• OLE DB provider: accesso ai dati del progetto sul client o in project server

• COM Add Ins: funzionalità aggiuntive e personalizzate richiamabili da menu (impl. VB o .NET)

Page 8: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Strumenti lato server

• Project Data Service (PDS): API basata su XML per l’accesso a progetti, risorse, custom field,…

• Servizio Enterprise Data Maintenance (EDM): sincronizzazione dati del PDS tramite messaggi SOAP/XML o file drop

• Object Link Provider (OLP): interfaccia per collegare i dati di progetto e la gestione documentale (normalmente WSS) a cui ci si deve attenere nell’integrazione con gestori di terze parti per documenti, attività, eventi, etc.

• Project Server Web Parts e URL options: personalizzazione delle pagine di PWA (nascondendo con le options o modificando le sezioni con le Web parts)

Page 9: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Alcune richieste tipiche

• Sincronizzare elenchi di risorse– HR, Active Directory, fogli elettronici, DB, XML, etc.

• Sincronizzare attività– Gestionali, ERP, schedulatori, etc.

• Personalizzare report– Applicativi stand-alone, pagine ASP o ASP.NET

• Esportazione dei dati– Testo, fogli elettronici, DB, XML

• Business intelligence– Estensioni cubi OLAP per gestione rischi, problemi,

calcolo valore della produzione, etc.

Page 10: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

RisposteMicrosoft Project Professional 2003

Microsoft Project Web AccessMicrosoft Office Outlook 2003

Microsoft Office Web Controls 2003Line of Business Applications

•Microsoft Office Project Server 2003•Project Data Services (PDS)

•Windows Sharepoint Services

•Session Manager•View Publishing

•Exchange Server

Microsoft Windows Server 2003 Family

Windows 2000 Server Family

Microsoft SQL Server 2000Project Server TablesProject Web Tables

SQL 2000 Analysis Services

Client Tier

Web Front End

Services

E-Mail

Database Tier

Page 11: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Possibili architetture

1-Tier(monolithic)

Client logicBusiness logicData storage

3-Tier

“Thin” Client

N-Tier

2-Tier

“Fat” Client

Internet

XML Web

service

XML Web

service

Page 12: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Requisiti SW• Sistema operativo e server Web:

– Windows Server 2003 (IIS 6.0) o Windows 2000 Server (IIS 5.0)

• Windows SharePoint Services (WSS):– Project Server 2003 funziona solo con WSS – (non con

SharePoint Team Services)• WSS richiede Windows Server 2003• In caso di aggiornamento occorre migrare da STS a WSS

• Database:– SQL Server 2000 SP3 o MSDE 2000 SP3 – SQL Server 2000 Analysis Services se occorre– DTC (partizionando il DB SQL)

• Visual Studio .NET, opp. SOAP Toolkit 2.0 o superiore• .NET Enterprise Servers (p. es. BizTalk) se occorre

Page 13: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Internet ExplorerProject Web Access

Internet ExplorerProject Web Access

Oulook 2003Oulook 2003

Project ProfessionalProject Professional

Internet Information S

ervicesInternet Inform

ation Services

Windows SharepointServices

Windows SharepointServices

Project Server 2003Core

Project Server 2003Core

SQL Analysis ServerSQL Analysis Server

SQ

L S

erver 2000S

QL

Server 2000Session Management

Service

View ProcessingService

Scheduled ProcessService

WSS Database

Project DataTables

PWA Tables

View Tables

OLAP Cubes

ApplicationClient Database

Architettura

Page 14: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Requisiti SWScelta del DB

• SQL Server 2000 – Obbligatorio in ambienti di produzione– Consente prestazioni e scalabilità ottimali– Fornisce gli “Analysis Services” per generare report

avanzati e cubi OLAP• MSDE

– Non fornito con l’installazione– Non prevede la connessione agli “Analysis Services”

e quindi non è possibile generare cubi e/o report avanzati

– Ha delle limitazioni sul numero di batch T-SQL concorrenti e quindi in definitiva sul numero di utenti contemporanei

Page 15: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Project Data Service (PDS)

• PDS è l’API di Project Server• Supporto per i metodi delle versioni precedenti• Due ruoli:

– Servizio middle tier• ProjectsStatus: elenco progetti e informazioni base• ResourcesStatus: elenco risorse e stato

– Security gatekeeping• ProjectsAccess: accesso al progetto e check out• ResourcesAccess: accesso a risorse e check out

Page 16: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

PDS e i Web Services• Componenti accessibili per mezzo di Internet anziché DCOM

Web ServicesWeb ServicesDescription LanguageDescription Language

Web ServicesWeb ServicesDescription LanguageDescription Language

Sono definiti in termini di formati e ordine di precedenza dei messaggi

Discovery DocumentDiscovery DocumentDiscovery DocumentDiscovery Document W3C prevede che il sito offra un documento che descrive i servizi attivi

Implementati con standard Internet aperti XML, XSD, HTTP, SMTPXML, XSD, HTTP, SMTPXML, XSD, HTTP, SMTPXML, XSD, HTTP, SMTP

UDDIUDDIUDDIUDDI W3C ha standardizzato un insieme di criteri per pubblicazione e ricerca

SOAPSOAPSOAPSOAP I consumatori spediscono e ricevono messaggi XML

Page 17: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Uso di PDS

• Preliminarmente:– Scaricare la guida PDS Reference da MSDN– Installare Visual Studio .NET(oppure il SOAP Toolkit

3.0)

• Da programma:– Effettuare il logon a PDS con UserID e password– Ottenere il security cookie– Preparare la richiesta XML– Inviare il flusso XML unito al security cookie– Ricevere la risposta XML

Page 18: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Uso di PDS

• Preliminarmente:– Scaricare la guida PDS Reference da MSDN (link da

SDK o download.microsoft.com)– Installare Visual Studio .NET (oppure il SOAP Toolkit

3.0)

• Da programma:– Effettuare il logon a PDS con UserID e password– Ottenere il security cookie– Preparare la richiesta XML– Inviare il flusso XML unito al security cookie– Ricevere la risposta XML

Page 19: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Uso di PDS (2)

• Demo:– Esempio di accesso in VB 6 con SOAP

Toolkit 3.0– Esempio di accesso in C# da Visual

Studio .NET

Page 20: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Background su PDS

• Introdotto per la prima volta in Project 2002

• Usato da vari tipi di client per l’accesso ai dati della raccolta di progetti– Project professional– Project Web Access– Applicativi sviluppati da solution provider

• Accede alle tabelle e alle viste del DB di project server con funzione di gateway

Page 21: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Background su PDS (2)

Page 22: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Background su PDS

• Garantisce la consistenza dei dati nel DB• Gestisce una connessione al DB in nome e per

conto del client• Autentica il client e accede ai dati rilevanti del

progetto• Fornisce metodi per l’accesso diretto alle viste

del DB– Usato nella personalizzazione dei report– Non è permesso l’accesso diretto alle tabelle per

assicurare che l’utente veda i soli dati per cui dispone dei privilegi d’accesso

Page 23: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto

Page 24: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (2)

1. Il client effettua il logon a Project Server2. Se ok richiede a PDS i dati della connessione con

GetLoginInformation3. Se ok effettua una connessione diretta al database e

richiede il relativo SPID4. Al PDS richiede l’accesso al progetto o alla risorsa con

ProjectAccess o ResourceAccess rispettivamente5. Effettua le query sul DB richiamando direttamente le viste6. Al PDS comunica la fine dell’operazione per mantenere

la sicurezza dei dati con ProjectAccessCompleted o ResourceAccessCompleted

7. Quindi chiude la connessione

Page 25: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (3)

• GetLoginInformation– Avviene inviando la seguente richiesta SOAP

<Request>

<GetLoginInformation/>

</Request>

Page 26: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (4)– La risposta in XML è la seguente:

<Reply><HRESULT>0</HRESULT> <STATUS>0</STATUS> <UserName>Administrator</UserName> <GetLoginInformation>

<DBType>0</DBType> <DVR>{SQL Server}</DVR> <DB>ProjectServer</DB><SVR>MYPROJECTS</SVR>

<ResGlobalID>1</ResGlobalID> <ResGlobalName>resglobal</ResGlobalName> <UserName>MSProjectUser</UserName> <Password>password</Password> </GetLoginInformation>

</Reply>

Page 27: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (5)

• Con la GetLoginInformation otteniamo i dati per una connessione ADO

• E’ di vitale importanza considerare da subito gli aspetti di sicurezza– UserID e password per l’accesso al DB

viaggiano in chiaro– La connessione deve essere protetta con SSL

se la rete non è fidata (es. Internet)

Page 28: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (6)

• Una volta aperta la connessione ADO occorre recuperare con una query T-SQL lo SPID da ripresentare al PDS per le richieste successive– La query è banale:

SELECT @@SPID

– Project Server utilizza lo SPID per tracciare gli accessi in lettura e in lettura/scrittura ai progetti e alle risorse globali (tabelle MSP_PROJ_SECURITY e MSP_RES_SECURITY)

Page 29: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (7)

• L’utente che vuole accedere ai dati del progetto per creare un report deve prima richiamare ProjectsAccess specificando l’ID del progetto (ottenuto p.es. da ProjectsStatus), lo SPID e il relativo timestamp. – Nella tabella MSP_PROJ_SECURITY appare

una riga come la seguente:

PROJ_ID SEC_SPID SEC_SPIDDATESTAMP SEC_READCOUNT SEC_WRITECOUNT------- -------- ----------------------- ------------- -------------- 1 51 2001-10-17 10:55:00.000 1 0

Page 30: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (8)

– La chiamata in XML è la seguente:

<Request> <ProjectsAccess> <Mode>0</Mode> <SPID>58</SPID> <SPIDTimestamp>20011017105500</SPIDTimestamp> <Project> <ProjectID>3</ProjectID>

</Project></ProjectsAccess>

</Request>

Page 31: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (9)• Nella risposta XML otteniamo la lista dei progetti e delle

eventuali risorse globali:<Reply>

<HRESULT>0</HRESULT> <STATUS>0</STATUS><UserName>Administrator</UserName><ProjectsAccess>

<Mode>0</Mode><ResGlobalID>1</ResGlobalID>

<ResGlobalName>resglobal</ResGlobalName> <Project>

<ProjectID></ProjectID> <ProjectName> </ProjectName>

<ProjectType></ProjectType> <ReplyStatus></ReplyStatus>

</Project> </ProjectsAccess>

</Reply>

Page 32: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (10)• La sicurezza e l’integrità dei dati sono assicurate

dalle regole seguenti:– L’account utente specificato nella stringa ADO deve

avere i permessi di accesso alle viste di SQL server– L’account MSProjectUser creato in fase di installazione

dispone dei privilegi necessari in quanto appartiene al ruolo MSProjectRole ma non ha accesso diretto alle tabelle

• Eventuali deroghe devono seguire le linee guida contenute nel file PJDB.HTM contenuto nella directory di installazione di Project Server– Non è garantita la compatibilità dei client che accedono

alle tabelle con versioni future di PDS

Page 33: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (11)

• Esempio di vista SQL per sola lettura:

CREATE VIEW dbo.MSP_TASKS_PROJ_READVIEW AS SELECT * FROM MSP_TASKS

WHERE PROJ_ID IN

(SELECT PROJ_ID FROM MSP_PROJ_SECURITY WHERE @@SPID = SEC_SPID AND SEC_READCOUNT > 0)

WITH CHECK OPTION

Page 34: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (12)

• Esempio di vista SQL per accesso read/write alle risorse enterprise globali (tipo 3)

CREATE VIEW dbo.MSP_TASKS_RES_READVIEW AS SELECT * FROM MSP_TASKS

WHERE PROJ_ID IN (SELECT PROJ_ID FROM MSP_PROJECTS WHERE PROJ_TYPE = 3)

WITH CHECK OPTION

Page 35: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (13)

• Esempio di uso delle viste per estrarre un elenco delle risorse impegnate in un progetto e delle relative attività:

select p.TASK_ID 'Task Number', p.TASK_NAME 'Task Name', CONVERT(VARCHAR(4), p.TASK_DUR_VAR/(60*60)) + 'd' 'Duration', r.RES_NAME 'Resource Name' from MSP_TASKS_PROJ_READVIEW p inner join MSP_ASSIGNMENTS_PROJ_READVIEW a on (p.TASK_UID = a.TASK_UID) inner join MSP_RESOURCES_PROJ_READVIEW r on (a.RES_UID = r.RES_UID) order by TASK_OUTLINE_NUM

Page 36: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (14)

• Esempio di output della query precedente:

Task Number Task Name Duration Resource Name

----------- ------------- -------- -------------

1 Write outline 1d Writer

2 Write draft 2d Writer

3 Create art 1d Artist

Page 37: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso diretto (15)• Al termine delle operazioni occorre richiedere a

PDS la rimozione dei record nelle tabelle MSP_PROJ_SECURITY e MSP_RES_SECURITY

<Request> <ProjectsAccessCompleted>

<Mode>0</Mode> <SPID>58</SPID> <Project> <ProjectID>3</ProjectID>

</Project>

</ProjectsAccessCompleted>

</Request>

Page 38: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso a Project ServerDim sURL As String sURL = "http://myserver/projectserver/LgnIntAu.asp" Dim oXMLDocument As DOMDocument30 Set oXMLDocument = New DOMDocument30 oXMLDocument.Load sURL

'Wait for the XML Document to load from Microsoft ‘Project Server Const cTimeout As Long = 45 Dim startTime As Long, elapsed As Long startTime = Timer Do While oXMLDocument.readyState < 4

DoEvents elapsed = Timer - startTime If elapsed > cTimeout Then GoTo errTimeout

Loop

Page 39: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso a Project Server (2)

Dim sCookie As String Dim oNode As IXMLDOMNode If oXMLDocument.parseError.errorCode = 0 Then

If Not oXMLDocument Is Nothing Then Set oNode =

XMLDocument.selectSingleNode("Reply/Cookie") If Not oNode Is Nothing Then

sCookie = oNode.Text End If

End If Else

sCookie = "" End If

Page 40: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Accesso a Project Server (3)

errTimeout:

MsgBox prompt:="Login Timeout Occurred." & vbCrLf & "Elapsed time = " _ & elapsed & " seconds" & vbCrLf & "xmlDocument.ReadyState = " & _ oXMLDocument.readyState, Title:="Login Timeout"

MsgBox prompt:=oXMLDocument.xml

Page 41: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Struttura delle chiamate a PDS

<Request>

<MethodName>

<Parameter1>value</Parameter1>

<Parameter2>value</Parameter2>

...

<ParameterN>value</ParameterN>

</MethodName>

</Request>

Page 42: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Trattamento dei dati XML

• Per isolare il singolo dato occorre accedere al nodo corrispondente del documento XML col metodo selectSingleNode del parser

• Per inviare la richiesta a PDS si può utilizzare il metodo SOAPXmlRequest

Page 43: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Riferimenti

• download.microsoft.com– MS Project Server 2003 Software Development Kit (SDK)– MS Project 2003 Resource Kit

• Office developer center: articoli, SDK, esempi, codice

http://msdn.microsoft.com/office/understanding/project/ • Getting started: developing with Project 2003

http://msdn.microsoft.com/office/understanding/project/techarticles/default.aspx?pull=/library/en-us/odc_pj2003_ta/

html/odc_pjgetstarted.asp/

Page 44: Project 2003  Sviluppare Soluzioni EPM  con Project Server (1/4)

Articoli KB

• Q307033 HOW TO: use an XML Web Service by using ASP.NET from an Office VBA Macro in Word or Excel

• Q301273 HOW TO: Write a Simple Web Service by Using Visual Basic .NET

• Q308359 HOW TO: Write a Simple Web Service by Using Visual C# .NET

• Q892964 How to troubleshoot common errors that occur when you use the PDSTest tool or the PDSTest.NET tool to test the Project Server 2003 Project Data Service

• KB811318 PRB: "Access Denied" Error Message When You Call a Web Service While Anonymous Authentication Is Turned Off