2015-04-30 5 views
1

Мне нужно обновить владельца проекта с помощью PSI, так как мне нужно сделать его автоматическим процессом. У меня есть следующие коды для изменения владельца проекта, но оба они не работали.Project Server 2013: Как изменить владельца проекта Использование PSI

Ниже приводится первый способ, который я уже пытался

private static bool UpdateProjectOwner() 
{ 
    bool projUpdated = false; 
    try 
    { 
    User newOwner = projContext.Web.SiteUsers.GetByLoginName(Username); 
    Guid ProjectGuid = ProjectUID; 
    //Console.Write("\nUpdating owner to {1} on project: {0} ...," ProjectGuid, Username); 
    DraftProject draftProjectToUpdate = projContext.Projects.GetByGuid(ProjectGuid).CheckOut(); 
    draftProjectToUpdate.Owner = newOwner; 
    QueueJob qJob = draftProjectToUpdate.Update(); 
    projContext.Load(qJob); 
    projContext.ExecuteQuery(); 
    JobState jobState = projContext.WaitForQueue(qJob, timeoutSeconds); 

     QueueJob qJob2 = draftProjectToUpdate.CheckIn(false); 
     projContext.Load(qJob2); 
     projContext.ExecuteQuery(); 
     JobState jobState2 = projContext.WaitForQueue(qJob2, timeoutSeconds); 
    } 
    catch (Exception ex) 
    { 
     Console.ForegroundColor = ConsoleColor.Red; 
     Console.WriteLine(ex.Message); 
     Console.ResetColor(); 
     } 
    return projUpdated; 
} 

Ниже второго пути, который я уже пытался

String projectOwnerIDstrNew = Convert.ToString(dr["ProjectOwnerUID"]);       
String projectOwnerIDstrOriginal = Convert.ToString(project_Ds.Project[0].ProjectOwnerID); 
if (!projectOwnerIDstrNew.Equals(projectOwnerIDstrOriginal)) 
{        
Guid ownerID = new Guid(projectOwnerIDstrNew); 
project_Ds.Project[0].ProjectOwnerID = ownerID; 
project_Ds.AcceptChanges(); 

bool managerChanged = true; 

} 

Is there any mistake in these above functions ? 

If Not, then is there any other way of updating the project owner with help of PSI. 
+0

Это глупо, как Microsoft документирует (или я должен сказать, ** не ** документирую) их материал. Я пытаюсь изменить владельца проекта с помощью REST API, и я просто не могу заставить его работать. Я ничего не могу найти в интернете ... это смешно. Или я просто слишком глуп, чтобы узнать, как это работает. Я не знаю. – infmja

ответ

0

Ниже первый способ, который я уже пытался

private static bool UpdateProjectOwner() 
{ 
    bool projUpdated = false; 
    try 
    { 
    User newOwner = projContext.Web.SiteUsers.GetByLoginName(Username); 
    Guid ProjectGuid = ProjectUID; 
    //Console.Write("\nUpdating owner to {1} on project: {0} ...," ProjectGuid, Username); 
    DraftProject draftProjectToUpdate = projContext.Projects.GetByGuid(ProjectGuid).CheckOut(); 
    draftProjectToUpdate.Owner = newOwner; 
    QueueJob qJob = draftProjectToUpdate.Update(); 
    projContext.Load(qJob); 
    projContext.ExecuteQuery(); 
    JobState jobState = projContext.WaitForQueue(qJob, timeoutSeconds); 

     QueueJob qJob2 = draftProjectToUpdate.CheckIn(false); 
     projContext.Load(qJob2); 
     projContext.ExecuteQuery(); 
     JobState jobState2 = projContext.WaitForQueue(qJob2, timeoutSeconds); 
    } 
    catch (Exception ex) 
    { 
     Console.ForegroundColor = ConsoleColor.Red; 
     Console.WriteLine(ex.Message); 
     Console.ResetColor(); 
     } 
    return projUpdated; 
} 

Следующий второй способ, который я уже пробовал

String projectOwnerIDstrNew = Convert.ToString(dr["ProjectOwnerUID"]);       
String projectOwnerIDstrOriginal = Convert.ToString(project_Ds.Project[0].ProjectOwnerID); 
if (!projectOwnerIDstrNew.Equals(projectOwnerIDstrOriginal)) 
{        
Guid ownerID = new Guid(projectOwnerIDstrNew); 
project_Ds.Project[0].ProjectOwnerID = ownerID; 
project_Ds.AcceptChanges(); 

bool managerChanged = true; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^