Чтение и сохранение проектов в 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
сборку для получения AuthToken, но эта зависимость больше не требуется.
Примечание: В настоящее время Aspose.Tasks for .NET не поддерживает современную аутентификацию для Project Online.
Устаревшая аутентификация должна быть включена в вашем портале Azure и в 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. Это позволяет программно создавать, считывать и обновлять корпоративные проекты, что облегчает поддержание согласованности, автоматизацию рабочих процессов и интеграцию данных проектов в более крупные бизнес-системы. Такая автоматизация помогает сократить ручной труд, повысить точность и обеспечить синхронность и эффективность управления проектами на корпоративном уровне.