MS Project Server 2016:由用户使用客户端对象模型 (CSOM) 创建新的分配对象



我们的用户(资源(可以通过自定义前端将自己分配给现有任务。

在 Project Server 2010 中,我们使用了当前版本中不再支持的 PSI。

StatusingClient sc = new StatusingClient(httpBinding, endpointAddress);
sc.CreateNewAssignmentWithWork(parameters);

然后,此分配请求可以由具有规划权限的项目主管批准。

我们在 CSOM 中找不到等效的方法。

使用 CSOM,我们只能以具有规划权限的用户身份创建新分配(但当然并非所有用户都应具有这些权限(。

DraftProject projectDraft = pubProject.CheckOut();
projContext.Load(projectDraft.Tasks);
projContext.ExecuteQuery();
var task = projectDraft.Tasks.Where(t => t.Id == taskUid).FirstOrDefault();
if (task != null)
{
AssignmentCreationInformation assignment = new AssignmentCreationInformation();
assignment.Id = Guid.NewGuid();
assignment.TaskId = task.Id;
assignment.ResourceId = userRes.Id;
task.Assignments.Add(assignment);
projectDraft.Assignments.Add(assignment);
projectDraft.Update();
}
projContext.ExecuteQuery();
projectDraft.Publish(true);
projectDraft.CheckIn(true);
projContext.ExecuteQuery();

有什么提示如何解决这个任务吗?

与官方文档相反,已弃用的 PSI 的状态功能在 2016 年仍在工作。因此,对我们来说,解决方案是像2010年和2013年一样使用PSI及其状态客户端。

采用 CSOM 方式,创建新任务的用户必须具有项目的编辑权限,因为必须检出和修改项目。

最新更新