Чтение и сохранение проектов в 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. Это позволяет программно создавать, считывать и обновлять корпоративные проекты, что облегчает поддержание согласованности, автоматизацию рабочих процессов и интеграцию данных проектов в более крупные бизнес-системы. Такая автоматизация помогает сократить ручной труд, повысить точность и обеспечить синхронность и эффективность управления проектами на корпоративном уровне.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.