Создание назначений ресурсов

Назначения ресурсов представляют собой связь между задачами и ресурсами. Они определяют, какая часть времени или усилий ресурса будет затрачена на конкретную задачу. Aspose.Tasks for .NET предоставляет несколько способов создания назначений ресурсов, давая разработчикам гибкость в программном управлении данными проекта без использования Microsoft Project.

Создание назначений ресурсов

Класс Resource позволяет создавать назначения двумя способами:

  1. Используя default constructor.
  2. Передавая задачу и ресурс при создании экземпляра ResourceAssignment.

Программный пример: Default Constructor

В этом примере мы создаём ResourceAssignment экземпляр без передачи каких-либо параметров. Такой подход полезен, когда вы хотите сначала инициализировать назначение, а затем задать его свойства.

1// Create empty project
2Project project = new Project();
3
4// Add new task and resource
5Task task = project.RootTask.Children.Add("Task");
6Resource resource = project.Resources.Add("Rsc");
7
8// Assign the resource desired task
9ResourceAssignment assignment = project.ResourceAssignments.Add(task, resource);

Создание нескольких назначений ресурсов

Вы также можете назначить несколько ресурсов одной задаче. В следующем примере показано, как создать несколько назначений ресурсов для одной задачи и задать для каждого ресурса индивидуальные даты начала и окончания.

 1Project project = new Project("New Project.mpp")
 2{
 3    CalculationMode = CalculationMode.Automatic
 4};
 5
 6project.Set(Prj.DateFormat, DateFormat.DateDddMmDdYy);
 7project.Set(Prj.StartDate, new DateTime(2019, 9, 16, 9, 0, 0));
 8project.Set(Prj.NewTasksAreManual, false);
 9project.Set(Prj.ActualsInSync, false);
10
11Resource workResource = project.Resources.Add("Servente (Work)");
12workResource.Set(Rsc.Name, "Servente (Work)");
13workResource.Set(Rsc.Initials, "S");
14workResource.Set(Rsc.Type, ResourceType.Work);
15workResource.Set(Rsc.StandardRateFormat, RateFormatType.Hour);
16workResource.Set(Rsc.Code, "1503");
17
18Resource materialResource = project.Resources.Add("Tijolo (Material)");
19materialResource.Set(Rsc.Name, "Tijolo (Material)");
20materialResource.Set(Rsc.Initials, "T");
21materialResource.Set(Rsc.Type, ResourceType.Material);
22materialResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
23materialResource.Set(Rsc.Code, "21341");
24
25Task task1 = project.RootTask.Children.Add("Task - 01");
26task1.Set(Tsk.IsRollup, new NullableBool(true));
27task1.Set(Tsk.IsPublished, new NullableBool(false));
28Task task2 = task1.Children.Add("Task - 01.01");
29task2.Set(Tsk.IsRollup, new NullableBool(true));
30task2.Set(Tsk.IsPublished, new NullableBool(false));
31Task task3 = task2.Children.Add("Task - 01.01.001");
32task3.Set(Tsk.IsEstimated, new NullableBool(false));
33task3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0));
34task3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day));
35task3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day));
36task3.Set(Tsk.IsRollup, new NullableBool(true));
37task3.Set(Tsk.IsPublished, new NullableBool(false));
38
39ResourceAssignment assignment1 = project.ResourceAssignments.Add(task3, materialResource);
40assignment1.Set(Asn.Delay, project.GetDuration(40, TimeUnitType.Hour));
41assignment1.Set(Asn.Start, new DateTime(2019, 9, 23, 9, 0, 0));
42assignment1.Set(Asn.Finish, new DateTime(2019, 9, 27, 18, 0, 0));
43ResourceAssignment assignment2 = project.ResourceAssignments.Add(task3, workResource);
44assignment2.Set(Asn.Work, project.GetDuration(56, TimeUnitType.Hour));
45assignment2.Set(Asn.Start, new DateTime(2019, 9, 16, 9, 0, 0));
46assignment2.Set(Asn.Finish, new DateTime(2019, 9, 24, 18, 0, 0));
47
48// to match expected MPP fully
49assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
50task3.Set(Tsk.IsManual, new NullableBool(true));
51task1.Set(Tsk.IsManual, new NullableBool(true));
52
53project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

Часто задаваемые вопросы

Вопрос: Нужно ли устанавливать Microsoft Project для создания назначений ресурсов?

Вопрос: Могу ли я назначить несколько ресурсов одной и той же задаче?

Вопрос: Будут ли назначения ресурсов, созданные с помощью Aspose.Tasks, отображаться в Microsoft Project?

Заключение

Создание назначений ресурсов с помощью Aspose.Tasks for .NET позволяет разработчикам программно связывать задачи и ресурсы, управлять нагрузкой и задавать гибкие параметры назначений. Независимо от того, инициализируете ли вы простое назначение или настраиваете несколько ресурсов для одной задачи, Aspose.Tasks предоставляет инструменты для выполнения этих операций в C# без обращения к Microsoft Project.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.