프로젝트의 경우 외부 프로그램에서 EPM으로 시간을 동기화해야합니다. EPM 2013 또는 PSI의 클라이언트 측 객체 모델을 사용할 필요는 없습니다. 그러나 Microsoft는 모든 새 응용 프로그램에 대해 웹 사이트에서 CSOM을 권장하기 때문에 CSOM으로 구현하려고했습니다.PSI 또는 CSOM을 사용하여 가장 EPM
private static void GetTimesheets()
{
ProjectContext projContext = new ProjectContext("http://tfspsdemo/PWA/");
projContext.Load(projContext.TimeSheetPeriods);
projContext.ExecuteQuery();
foreach (var period in projContext.TimeSheetPeriods)
{
projContext.Load(period.TimeSheet);
projContext.ExecuteQuery();
Console.WriteLine(period.Name);
try
{
string tempName = period.TimeSheet.Name;
projContext.Load(period.TimeSheet.Lines);
projContext.ExecuteQuery();
Console.WriteLine(period.TimeSheet.Name);
foreach (var line in period.TimeSheet.Lines)
{
try
{
projContext.Load(line);
projContext.Load(line.Work);
projContext.ExecuteQuery();
foreach (var workLine in line.Work)
{
Console.WriteLine(workLine.ActualWork);
}
}
catch (Exception) { }
Console.WriteLine("Total: {0}", line.TotalWork);
}
}
catch (ServerObjectNullReferenceException) { }
}
}
(는 테스트 목적이기 때문에 그것은 가장 아름다운 코드가 아닙니다) 는하지만 위의 코드와 함께 내가 얻을 : 내가 테스트하고 싶었 우선 다음 코드로, 모든 시간을 얻을 수 있습니다 다른 사용자의 시간을 볼 권한이있는 사람 일지라도 로그인 한 현재 사용자의 코드 만 그러나 내가 원하는 것은 EPM에서 특정 프로젝트 계획을 위해 시간을 예약 한 모든 사람들의 시간을 보는 것입니다. 따라서 나중에이 정보를 사용하여 외부 프로그램에서 EPM으로 시간을 동기화 할 수 있습니다. 내가 가장으로이 문제를 해결 할 수 있지만, 생각 :
ProjectContext projContext = new ProjectContext("http://tfspsdemo/PWA/");
projContext.Credentials = new NetworkCredentials("username", "password");
을하지만 각 사용자에 대해이 작업을 수행해야하기 때문에이 내가 원하는 것이 아니다. 또한 모든 사용자의 암호를 가져올 수 없습니다.
누구나 지금이 문제 및/또는 제안을 해결할 수있는 해결책이 있습니까? EPM PSI 솔루션도 환영합니다!
미리 감사드립니다.
OData를 통해 참조 링크를 제공 할 수 있습니까? –