Создание назначений ресурсов
Назначения ресурсов представляют собой связь между задачами и ресурсами. Они определяют, какая часть времени или усилий ресурса будет затрачена на конкретную задачу. Aspose.Tasks for .NET предоставляет несколько способов создания назначений ресурсов, давая разработчикам гибкость в программном управлении данными проекта без использования Microsoft Project.
Создание назначений ресурсов
Класс Resource позволяет создавать назначения двумя способами:
- Используя default constructor.
- Передавая задачу и ресурс при создании экземпляра 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 for .NET работает полностью независимо от Microsoft Project.
Вопрос: Могу ли я назначить несколько ресурсов одной и той же задаче?
- Да. Вы можете связать с одной задачей столько ресурсов, сколько необходимо, указывая для каждого индивидуальные параметры, такие как даты начала и окончания.
Вопрос: Будут ли назначения ресурсов, созданные с помощью Aspose.Tasks, отображаться в Microsoft Project?
- Да. Все назначения ресурсов, созданные программно, появятся при открытии проекта в Microsoft Project.
Заключение
Создание назначений ресурсов с помощью Aspose.Tasks for .NET позволяет разработчикам программно связывать задачи и ресурсы, управлять нагрузкой и задавать гибкие параметры назначений. Независимо от того, инициализируете ли вы простое назначение или настраиваете несколько ресурсов для одной задачи, Aspose.Tasks предоставляет инструменты для выполнения этих операций в C# без обращения к Microsoft Project.