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

时间:2017-08-28 12:00:16

标签: ms-project-server-2016

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

在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();

任何提示如何解决此任务?

1 个答案:

答案 0 :(得分:0)

与官方文档相反,已弃用的PSI的状态功能在2016年仍在使用。因此,对于我们来说,该解决方案将在2010年和2013年之前使用PSI及其StatusingClient。

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