Читання та збереження проєктів у 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 class для підключення до Project Server або Project Online. Для автентифікації використовуйте ProjectServerCredentials class, який тепер дозволяє вказувати 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. Це дозволяє програмно створювати, читати та оновлювати корпоративні проєкти, що спрощує підтримку послідовності, автоматизацію робочих процесів та інтеграцію даних проєктів у великі бізнес-системи. Така автоматизація допомагає зменшити ручну працю, підвищити точність і забезпечити синхронізацію та ефективність управління проєктами на корпоративному рівні.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.