Project Server调用PSI关闭任务以进行更新锁定任务

Posted Larryle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Project Server调用PSI关闭任务以进行更新锁定任务相关的知识,希望对你有一定的参考价值。



///
<summary> /// 锁定和解锁项目任务 /// </summary> /// <param name="projectuid">项目UID</param> /// <param name="islock">是否锁定</param> /// <returns></returns> public bool CloseProjectTask(Guid projectuid, bool islock) { try { QueueSystemUtils queuesystemutils = new QueueSystemUtils(); ProjectDataSet dst = GetProjectByUid(projectuid); StatusingWebSvc.ProjectDataSet statusing_pro_dst = new StatusingWebSvc.ProjectDataSet(); foreach (ProjectWebSvc.ProjectDataSet.TaskRow taskrow in dst.Task) { if (taskrow.TASK_LOCKDOWN_BY_MANAGER != islock) { taskrow.TASK_LOCKDOWN_BY_MANAGER = islock; statusing_pro_dst.Task.ImportRow(taskrow); } } if (statusing_pro_dst.Task.Count > 0) { int temp = 0; int total_update_count = 0; int totalcount = statusing_pro_dst.Task.Count; StatusingWebSvc.ProjectDataSet statusing_pro_dst_update = new StatusingWebSvc.ProjectDataSet(); foreach (StatusingWebSvc.ProjectDataSet.TaskRow item in statusing_pro_dst.Task) { temp++; total_update_count++; statusing_pro_dst_update.Task.ImportRow(item); if (total_update_count >= 400 || temp >= totalcount) { Guid jobuid = Guid.NewGuid(); StatusingClient.QueueLockDownTasks(jobuid, projectuid, statusing_pro_dst_update); queuesystemutils.WaitForQueue(jobuid); total_update_count = 0; statusing_pro_dst_update = new StatusingWebSvc.ProjectDataSet(); } } } return true; } catch (Exception ex) { new LogHelper().WriteLine(ex.ToString()); return false; } }

注意:如果计划任务数量超过500条,会出现错误,必须分批去处理任务,调用QueueLockDownTasks来关闭项目任务已更新,锁定和解锁项目计划任务

以上是关于Project Server调用PSI关闭任务以进行更新锁定任务的主要内容,如果未能解决你的问题,请参考以下文章

Project Server 2013:如何使用 PSI 更改项目所有者

project online get approvals task data 获取审批待办任务接口

云辅助隐私集合求交(Server-Aided PSI)协议介绍:学习

Gradle:在调用root任务时排除触发子项目任务

任何人都知道如何通过 C# 为 Project Server 2003 创建项目/任务?

MySQL源代码中“struct PSI_thread”的定义在哪里?