【问题标题】:Is there a REST endpoint to get a list of a project's task assignments in Project Server?是否有 REST 端点来获取 Project Server 中项目的任务分配列表?
【发布时间】:2016-05-12 09:27:52
【问题描述】:

我已尝试向 “/_api/ProjectServer/Projects('projectid')/Assignments”,但它所做的只是返回上次分配的重复项,这很奇怪,因为它返回的对象数量总是等于项目中的分配数量.

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

我怀疑这可能是一个错误,如果有人能证实或否认我的假设和/或让我知道是否有任何其他方法可以检索项目中的分配列表,我将不胜感激。

【问题讨论】:

    标签: rest sharepoint project-server sharepoint-jsom


    【解决方案1】:

    我并不完全知道如何使用休息,但我想为您提供一些使用 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);
            }
     }
    

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2021-06-06
      • 2016-11-23
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多