Project Server 또는 Project Online에서 프로젝트 읽기 및 저장
Aspose.Tasks for .NET은 다음과 함께 작업하는 데 필요한 모든 기능을 제공합니다 Project Server (사내 설치형) 및 Project Online (클라우드 기반)를 Project Web Access (PWA) API를 활용하여 지원합니다. 이를 통해 개발자는 기업용 프로젝트 관리 환경에 저장된 프로젝트를 프로그래밍 방식으로 생성, 읽기 및 업데이트할 수 있습니다.
이러한 통합은 중앙 집중식 프로젝트 저장소에 의존하며, 일괄 업데이트, 예약 보고, 프로젝트 동기화와 같은 프로세스를 Microsoft Project 또는 Project Web App에서 수동으로 작업하지 않고 자동화하려는 조직에 유용합니다.
Project Server를 사용한 프로젝트 관리
Aspose.Tasks for .NET은 다음을 도입합니다
ProjectServerManager 클래스를 사용하여 Project Server 또는 Project Online에 연결합니다. 인증을 위해서는 ProjectServerCredentials 클래스로, 이제 다음을 직접 지정할 수 있습니다 SiteUrl, Username, 및 Password 이전에는 개발자가 Microsoft.SharePoint.Client.Runtime assembly를 사용하여 AuthToken을 검색해야 했지만, 이 종속성은 더 이상 필요하지 않습니다.
참고: 현재 Aspose.Tasks for .NET은 Project Online에 대한 최신 인증을 지원하지 않습니다.
성공적인 통합을 위해 Azure portal 및 Office 365 Admin Center에서 구형 인증을 활성화해야 합니다.
Project Server에서 프로젝트 읽기
다음 예제는 Project Server에 연결하여 기존 프로젝트의 데이터를 읽는 방법을 보여줍니다:
1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
2const string UserName = "admin@contoso.onmicrosoft.com";
3const string Password = "MyPassword";
4
5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
6ProjectServerManager manager = new ProjectServerManager(credentials);
7IEnumerable<ProjectInfo> list = manager.GetProjectList();
8
9foreach (var info in list)
10{
11 Project project = manager.GetProject(info.Id);
12 Console.WriteLine("{0} - {1} - {2}", info.Name, info.CreatedDate, info.LastSavedDate);
13 Console.WriteLine("Resources count: {0}", project.Resources.Count);
14
15 // an user can read the project as raw data stream
16 var stream = manager.GetProjectRawData(info.Id);
17
18 // work with raw project data
19}Project Server에서 프로젝트 생성
이 예제는 Project Server에서 새 프로젝트를 프로그래밍 방식으로 생성하는 방법을 보여줍니다:
1try
2{
3 const string SharepointDomainAddress = "https://contoso.sharepoint.com";
4 const string UserName = "admin@contoso.onmicrosoft.com";
5 const string Password = "MyPassword";
6
7 ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
8
9 Project project = new Project("New Project.mpp");
10
11 ProjectServerManager manager = new ProjectServerManager(credentials);
12 manager.CreateNewProject(project);
13}
14catch (ProjectOnlineException ex)
15{
16 Console.WriteLine(ex.Message);
17}또한 다음에서 프로젝트를 생성할 수 있습니다 Project Online 사전 정의된 저장 옵션을 사용하여:
1Project project = new Project("New Project.mpp");
2ProjectServerCredentials credentials = new ProjectServerCredentials("https://contoso.sharepoint.com", "admin@contoso.onmicrosoft.com", "MyPassword");
3ProjectServerManager manager = new ProjectServerManager(credentials);
4ProjectServerSaveOptions options = new ProjectServerSaveOptions
5{
6 Timeout = TimeSpan.FromSeconds(10)
7};
8manager.CreateNewProject(project, options);Project Server에서 프로젝트 업데이트
이 예제는 Project Server에서 기존 프로젝트를 업데이트하는 방법을 보여줍니다:
1const string URL = "https://contoso.sharepoint.com";
2const string Domain = "CONTOSO.COM";
3const string UserName = "Administrator";
4const string Password = "MyPassword";
5
6NetworkCredential windowsCredentials = new NetworkCredential(UserName, Password, Domain);
7ProjectServerCredentials projectServerCredentials = new ProjectServerCredentials(URL, windowsCredentials);
8try
9{
10 ProjectServerManager manager = new ProjectServerManager(projectServerCredentials);
11
12 var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
13 if (projectInfo == null)
14 {
15 Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
16 return;
17 }
18
19 Project project = manager.GetProject(projectInfo.Id);
20 project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
21
22 Task task = project.RootTask.Children.Add("New task");
23 task.Set(Tsk.Start, new DateTime(2020, 02, 26));
24 task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
25
26 manager.UpdateProject(project);
27}
28catch (ProjectOnlineException ex)
29{
30 Console.WriteLine("Failed to update the project. Error: " + ex);
31}또한 Project Online에서 저장 옵션을 사용하여 프로젝트를 업데이트할 수 있으며, 이를 통해 변경 사항 적용 방식을 더 세밀하게 제어할 수 있습니다:
1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
2const string UserName = "admin@contoso.onmicrosoft.com";
3const string Password = "MyPassword";
4
5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
6
7try
8{
9 ProjectServerManager manager = new ProjectServerManager(credentials);
10
11 var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
12 if (projectInfo == null)
13 {
14 Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
15 return;
16 }
17
18 Project project = manager.GetProject(projectInfo.Id);
19 project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
20
21 Task task = project.RootTask.Children.Add("New task");
22 task.Set(Tsk.Start, new DateTime(2020, 02, 26));
23 task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
24
25 ProjectServerSaveOptions options = new ProjectServerSaveOptions { Timeout = TimeSpan.FromMinutes(5) };
26
27 manager.UpdateProject(project, options);
28}
29catch (ProjectOnlineException ex)
30{
31 Console.WriteLine("Failed to update the project. Error: " + ex);
32}Aspose.Tasks for .NET을 사용하면 개발자는 다음 둘과 원활하게 통합할 수 있습니다 Project Server 및 Project Online. 이를 통해 기업 수준의 프로젝트를 프로그래밍 방식으로 생성, 읽기 및 업데이트할 수 있어 일관성 유지, 워크플로 자동화 및 프로젝트 데이터를 더 큰 비즈니스 시스템에 통합하기가 쉬워집니다. 이러한 자동화는 수작업을 줄이고 정확성을 향상시키며 기업 수준의 프로젝트 관리가 동기화되고 효율적으로 유지되도록 도와줍니다.