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 пользователь, который создает новое назначение, должен иметь права на редактирование проекта, поскольку проект должен быть извлечен и изменен.