2013-11-14 8 views
0

프로젝트의 경우 외부 프로그램에서 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 솔루션도 환영합니다!

미리 감사드립니다.

답변

0

Proect 서버 2013에는 두 가지 모드가 있습니다. Proect 서버 및 SharePoint 모드. 위의 작업을 SharePoint 모드에서 수행 할 수 있었지만, 아쉽게도 자격 증명을 전달한 후에도 프로젝트 서버 모드의 CSOMUnkownUser가 말한 것처럼 작업 표 기간까지 읽을 수 없습니다. 현재 서버에서 어떤 모드로 실행하고 있습니까?

0

이것은 아마도 조금 늦은 것이지만 공급자/자동 호스팅 응용 프로그램에서 이러한 종류의 데이터에 액세스하려면 OData를 통해 SharePoint 서버에 액세스해야합니다. CSOM은 현재 사용자 컨텍스트의 데이터 만 제공합니다.

+0

OData를 통해 참조 링크를 제공 할 수 있습니까? –