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

Любые намеки, как решить эту задачу?

1 ответ

Вопреки официальной документации, функция определения статуса устаревшего PSI все еще работает в 2016 году. Поэтому для нас решение использует PSI и его StatusingClient, как и в 2010 и 2013 годах.

В случае CSOM пользователь, который создает новое назначение, должен иметь права на редактирование проекта, поскольку проект должен быть извлечен и изменен.

Другие вопросы по тегам