是否有REST端点来获取Project Server中项目的任务分配列表?

时间:2016-05-12 09:27:52

标签: rest sharepoint project-server sharepoint-jsom

我尝试过发送请求 " / _ api / ProjectServer / Projects(' projectid')/ Assignments",但它所做的只是返回最后一个赋值的重复,这很奇怪,因为它返回的对象数总是相等的到项目中的任务数量。

基本上,如果我为一百个不同的任务中的每一个分配资源,则该调用将返回列表中最后一个任务的分配的100个副本。

我怀疑这可能是一个错误,如果有人可以确认或否认我的假设和/或让我知道是否有任何其他方法来检索项目中的作业列表,我会感激不尽

1 个答案:

答案 0 :(得分:0)

我并不完全知道如何使用休息,但我想使用CSOM为您提供一些代码,如果我理解了这个问题,它可能对您有所帮助:

private static void ListPublishedProjects()
        {
            // Get the list of projects on the server.
            projContext.Load(projContext.Projects);
            projContext.ExecuteQuery();

            var proj = projContext.Projects.First(p => p.Name == "<project name>");
            projContext.ExecuteQuery();

            //You must ckeck out the project and load it's tasks
            var draftProj = proj.CheckOut();

            projContext.Load(draftProj.Tasks);
            projContext.ExecuteQuery();  

            //Loop between all tasks
            foreach (DraftTask task in draftProj.Tasks)
            {
                // Load all assignments in that task
                projContext.Load(task.Assignments);
                projContext.ExecuteQuery();

                //Loop between al assignments
                foreach (var assignment in task.Assignments)
                {
                    projContext.Load(assignment.Owner, temp => temp.LoginName, temp => temp.Email);
                    projContext.Load(assignment.Resource);
                    projContext.ExecuteQuery();

                    Console.WriteLine("\n\t RESOURCE NAME:" + assignment.Resource.Name + " => " + assignment.ActualWork);
                }    
            }

            //Remember to publish and checkin the project when you finish your TODOs
            draftProj.Publish(true);
            draftProj.CheckIn(true);
            QueueJob qJob = projContext.Projects.Update();
            JobState jobState = projContext.WaitForQueue(qJob, 200);
        }
 }

希望它有所帮助,