Project PSI开发详解:程序设计与数据交互

需积分: 11 5 下载量 162 浏览量 更新于2024-08-16 收藏 2.89MB PPT 举报
"这篇资料主要介绍了PSI程序设计流程,特别是在使用Visual Studio 2005开发Project Server接口时的一些步骤和技术。PSI是Project Server Interface的缩写,是Microsoft Office Project Server 2007提供的一系列托管代码API,通过Web服务进行通信。它允许开发者构建与Project Server交互的应用程序,涵盖了多个方面,如项目管理、资源计划、时间表、报告、安全、事件通知等。" 在项目开发过程中,首先需要在Visual Studio 2005中添加Web引用,以便调用Project对象。这通常涉及到以下URL: 1. 登录Windows集成验证的Web服务:`http://<ServerName>:<Port>/<PWAPath>/_vti_bin/PSI/LoginWindows.asmx` 2. 登录表单验证的Web服务:`http://<ServerName>:<Port>/<PWAPath>/_vti_bin/PSI/LoginForms.asmx` 3. 项目管理相关的Web服务:`http://<ServerName>:<Port>/<PWAPath>/_vti_bin/PSI/Project.asmx` 接着,引入`PSLibrary`命名空间,即`using PSLibrary = Microsoft.Office.Project.Server.Library;`。为了与Project Server进行交互,需要处理登录和登出操作。对于Windows集成验证,可以直接使用当前用户的Credential;而对于Project Server验证,可能需要创建一个CookieContainer,并通过Login和Logoff方法进行身份验证。 完成登录后,需要设置其他对象的URL和Credential或CookieContainer,以便后续操作。在读取Project Server数据时,可以调用提供的Web服务方法,例如`this.project.ReadProjectList()`,返回的数据通常以XML格式传输,但由于数据对象继承自`System.Data.DataSet`,因此可以方便地通过DataSet的方法来处理和显示数据。 以获取项目列表为例,可以创建一个方法`getProjectList`,循环遍历`ReadProjectList()`返回的`ProjectDataSet`,并将项目UID和名称添加到ListView中: ```csharp public void getProjectList(ListView view) { WebService_Project.ProjectDataSet ds = this.project.ReadProjectList(); foreach (WebService_Project.ProjectDataSet.ProjectRow pr in ds.Project) { view.Items.Add(new ListViewItem(new string[] { pr.PROJ_UID.ToString(), pr.PROJ_NAME })); } } ``` 此外,该资源还提到了ProjectServerInterface(PSI)的架构概述,包括与Project Data Store(PDS)的关系,以及如何利用PSI进行Project Server事件开发、Windows SharePoint Services的相关开发、工作流开发、Web部件开发和Reporting Database的开发。Project Professional 2007和Project Web Access(PWA)均通过PSI与Project Server进行通信,不直接访问数据库,以保证数据一致性。 在开发中,PSI提供了对项目计划、任务分配、调度、预算、安全性、事件通知、对象链接等多个核心功能的访问接口。通过这些接口,开发者可以构建复杂的企业级项目管理系统,实现与Project Server的深度集成。同时,由于所有的数据交换都是通过Web服务进行,这意味着应用程序可以跨平台和远程访问Project Server,极大地扩展了开发者的可能性。然而,为了保持系统的稳定性和数据的安全性,不建议直接访问Project Server的数据库,而应通过PSI提供的API进行操作。