Как создавать новые задачи в Microsoft Project Server 2013

Мы используем Microsoft Project Server 2013 в Microsoft SharePoint 2013. Можно ли создать задачу в проекте, например, из веб-части через C# в CodeBehind?


person STORM    schedule 26.05.2016    source источник


Ответы (1)


Я не знаю, можете ли вы сделать веб-часть для создания задач, но через CSOM вы можете подключиться к своим проектам PS2013 и создать некоторые задачи.

Я опубликую здесь фрагмент кода, который может вам помочь:

Вы должны сначала «Проверить» проект следующим образом:

projContext.Load(projContext.Projects);
projContext.ExecuteQuery();

var proj = projContext.Projects.First(p => p.Name == "Project");
projContext.ExecuteQuery();

var draftProj = proj.CheckOut();

projContext.Load(draftProj.Tasks);
projContext.ExecuteQuery();

CreateNewTask(draftProj);

Затем вы можете вызвать метод создания новой задачи, отправив «черновик проекта».

private static void CreateNewTask(DraftProject draftProj)
{
    TaskCreationInformation nt = new TaskCreationInformation();

    nt.Name = "Task name";
    nt.Start = DateTime.Today;
    nt.Duration = "20d";
    nt.Id = Guid.NewGuid();

    draftProj.Tasks.Add(nt);
    projContext.Load(draftProj.Tasks);

    draftProj.Update();
    projContext.ExecuteQuery();

}

Надеюсь, это поможет,

person Marc Lluis    schedule 11.07.2016
comment
Привет, Марк, спасибо за пост. Но проблема в авторизации пользователя. Я имею в виду, что этот код отлично работает при использовании SharePoint Online/PWA Online или при использовании из консольного приложения. Но он не работает, когда вы выполняете его из артефакта в SharePoint. Потому что контекст проекта всегда выполняется учетной записью пользователя/пула приложений IIS. В Project Online вы можете использовать токен для пользователя и выполнять его в контексте пользователя. Но это невозможно в OnPremise SharePoint. И логин/пароль не вариант. Ни один пользователь не будет вводить учетные данные (снова) в корпоративной среде единого входа. - person STORM; 14.07.2016
comment
Привет, Шторм, мне очень жаль это слышать, а также извините, что не помог вам и неправильно понял, о чем вы просили. Что ж, если я найду какое-то решение вашей проблемы, не сомневайтесь, я опубликую его здесь. Спасибо за ответ! - person Marc Lluis; 14.07.2016
comment
Без проблем. Спасибо, пытаешься мне помочь. - person STORM; 14.07.2016
comment
@STORM Существует CSOM javascript, который, как я полагаю, использует текущий сеанс пользователя. Возможно, вы могли бы создать веб-часть, использующую этот API. -- Мы определенно используем версию этого API для SharePoint в веб-приложениях, работающих внутри SharePoint. - person BrainSlugs83; 19.09.2016
comment
@MarcLluis - разве не нужно ждать QueueJob, возвращаемого вызовом .Update? -- и не нужно ли после этого вызывать draftProj.CheckIn? (Например, это оставляет проект в странном проверенном состоянии?) - person BrainSlugs83; 19.09.2016
comment
@BrainSlug: мы протестировали это, но авторизация работала только в коллекции сайтов PWA, а не в обычной коллекции сайтов за пределами pwa. Там мы должны были предоставить учетные данные пользователя. Это тоже ваш опыт? - person STORM; 19.09.2016
comment
@BrainSlugs83 -- Да, кое-что пропущено из-за того, что я возобновляю ответ, но на самом деле вам нужно позвонить .Update, а также .CheckIn, чтобы установить текущий статус, который вы могли бы просмотреть, чтобы найти проект в качестве менеджера проекта. - person Marc Lluis; 21.09.2016
comment
он возвращает эту ошибку CICOCheckedOutInOtherSession при выполнении проверки - person Seyed Reza Dadrezaei; 13.11.2019