Project Server PSI的简单调用方式:读取我的问题和风险

本文介绍如何在PWA中利用内置功能高效查询项目的问题和风险,避免复杂CAML查询,通过示例代码展示如何使用PWAWebService进行跨项目查询,包括问题、风险数量统计及资源列表读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PWA中其实已经内置了跨所有项目工作环境来查询其中的风险和问题,而不用我们再去写复杂的CAML来查询了,效果如下:

读取个数提醒:

读取处理结果摘要:

我们就想啊,人家已经写好了啊,想办法借鉴下实现代码吧:

// Fields

private const string ColNameActive = "Active";

private const string ColNameClosed = "Closed";

private const string ColNameListId = "ListId";

private const string ColNamePostponed = "Postponed";

private const string ColNameProjId = "ProjId";

private const string ColNameProjName = "ProjName";

private const string ColNameStatus = "Status";

private DataTable dtGrid;

//Method

this.dtGrid = new DataTable("GridTable", "Microsoft.Office.Project.Server");

this.dtGrid.Locale = CultureInfo.InvariantCulture;

this.dtGrid.Columns.Add("ListId", typeof(Guid));

this.dtGrid.Columns.Add("Active", typeof(int));

this.dtGrid.Columns.Add("Postponed", typeof(int));

this.dtGrid.Columns.Add("Closed", typeof(int));

DataTable dtItems = PJContext.Current.PSI.PWAWebService.ProjectPWSCrossSiteQueryForIssueRiskCenter(templateType).Tables[0];

if (dtItems.Rows.Count != 0)

{

while (true)

{

try

{

this.dtGrid = PjContext.PSI.PWAWebService.ProjectGetProjectDataForIssueRiskCenter(this.dtGrid, templateType);

}

catch (SoapException)

{

}

}

}

   

其中:PWSListTemplateType.Issues 问题,PWSListTemplateType.Risks 风险

   

从以上代码中很清楚的可以看到:PJContext.Current.PSI 又用到它了:

PJContext.Current.PSI.PWAWebService.ProjectPWSCrossSiteQueryForIssueRiskCenter(templateType).Tables[0];

既然是公开的Web Service 方法,那么还可以快速的查询到当前项目总数了:

Int totalNum = PJContext.Current.PSI.PWAWebService.ProjectReadProjectCount();

又或者我们需要读取所有有效资源列表,PWA自带效果页面如下:

后台查询数据代码:

ResourceDataSet RDS = PJContext.Current.PSI.PWAWebService.ResourceReadUserSummariesFilterByNameOrEmail(string filter);

若不过滤数据,则可以查询所有数据:

ResourceDataSet  RDS = PJContext.Current.PSI.PWAWebService.ResourceReadUserListAll();

 

这里要提到的是默认情况下,问题和风险都有自己默认的一些栏,这些是不能删除的,如下图:

最好也不要改名,当然自己追加的列是可以的,否则会出现异常哦,比如如下错误:

0x1304 Project Server                 Project Server - General       0 Exception Exception occurred in method PWA.ProjectGetProjectDataForIssueRiskCenter System.NullReferenceException: 未将对象引用设置到对象的实例。     在 System.Data.Index.CompareRecords(Int32 record1, Int32 record2)     在 System.Data.Index.IndexTree.CompareNode(Int32 record1, Int32 record2)     在 System.Data.RBTree`1.SearchSubTree(Int32 root_id, K key)     在 System.Data.RBTree`1.GetNodeByKey(K key)     在 System.Data.Index.ApplyChangeAction(Int32 record, Int32 action)     在 System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)     在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exceptio... 7df48253-33ed-4b7d-9503-cf5a160838da
06/20/2011 17:01:45.53

 

其中:ProjectGetProjectDataForIssueRiskCenter 就是我们PSI中的方法,报:未将对象引用设置到对象的实例! 嘿嘿,家常便饭,但是你实在无从调试起阿。也不知道是那个列少了,总之一句话:你还是都留着吧!

转载于:https://www.cnblogs.com/pccai/archive/2011/06/19/2084837.html

资源下载链接为: https://pan.quark.cn/s/9a27693985af 《基于SSM的JSP招聘网》是一款功能丰富的在线招聘平台,主要面向普通游客、求职者、企业管理员四种用户角色,提供了多样化的服务与管理功能。该系统采用SSM(Spring、SpringMVC、MyBatis)技术栈开发,确保了系统的稳定性与高效性。以下是对系统功能模块及其技术实现的介绍。 对于普通游客,系统提供职位浏览功能。游客可以查看平台上的各种招聘信息,如职位描述、工作职责、薪资待遇等。这需要后台数据库对招聘信息进行有效存储检索。在SSM框架中,SpringMVC负责处理HTTP请求,将数据传递给Spring服务层进行业务逻辑处理,MyBatis作为持久层工具,执行SQL查询并将结果映射为Java对象。 求职者注册成为平台用户后,可进行职位收藏投递。收藏的职位信息会保存在个人中心,方便随时查看。职位投递功能涉及用户个人信息与简历的提交,需要系统具备用户认证授权机制,可通过Spring Security或Apache Shiro实现。此外,系统可能采用AJAX技术进行异步操作,如即时刷新收藏夹状态,以提升用户体验。 企业用户可在系统中发布职位、查看求职者简历。发布职位时,需进行表单验证数据合法性检查,SpringMVC的控制器可协同前端校验库(如Hibernate Validator)完成。查看简历时,企业可对求职者进行筛选评价,这要求数据库设计合理,以便快速查询分析求职者信息。 管理员负责管理平台运行,包括用户管理、职位审核、系统设置等。管理员模块通常包含后台管理界面,通过SpringMVC的模型视图解析器模板引擎(如Thymeleaf或FreeMarker)生成动态页面。同时,日志记录异常处理必不可少,Spring框架提供了强大的日志AOP支持,可方便实现这些功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值