Generación de datos distribuidos en el tiempo para diferentes contornos de trabajo
Al gestionar cronogramas de proyectos, a menudo es necesario analizar cómo se distribuye el trabajo a lo largo del tiempo para las distintas asignaciones de recursos. Aspose.Tasks for .NET hace esto posible generando datos distribuidos en el tiempo para las asignaciones de recursos según distintos contornos de trabajo. Esto permite a los desarrolladores simular, controlar e informar sobre el uso de los recursos con mayor precisión.
Generación de datos distribuidos en el tiempo para contornos de trabajo
Un contorno de trabajo define cómo se asigna el trabajo a lo largo de la duración de una tarea. Aspose.Tasks for .NET permite aplicar distintos contornos (como Flat, Back Loaded, Front Loaded, Turtle, Bell, etc.) y generar los datos distribuidos en el tiempo correspondientes. Los datos generados se obtienen utilizando el TimeScaleData
método, que requiere las fechas de inicio y finalización del proyecto como parámetros de entrada.
Ejemplo de código
El siguiente ejemplo asigna diferentes tipos de contornos de trabajo a un recurso y recupera sus datos distribuidos en el tiempo para su análisis:
1Project project = new Project("New Project.mpp");
2
3// Get the first task of the Project
4Task task = project.RootTask.Children.GetById(1);
5
6// Get the First Resource Assignment of the Project
7ResourceAssignment firstRA = project.ResourceAssignments.ToList()[0];
8
9// Flat contour is default contour
10Console.WriteLine("Flat contour");
11
12var tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
13foreach (TimephasedData td in tdList)
14{
15 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
16}
17
18// Change contour
19firstRA.Set(Asn.WorkContour, WorkContourType.Turtle);
20Console.WriteLine("Turtle contour");
21tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
22foreach (TimephasedData td in tdList)
23{
24 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
25}
26
27// Change contour
28firstRA.Set(Asn.WorkContour, WorkContourType.BackLoaded);
29Console.WriteLine("BackLoaded contour");
30tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
31foreach (TimephasedData td in tdList)
32{
33 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
34}
35
36// Change contour
37firstRA.Set(Asn.WorkContour, WorkContourType.FrontLoaded);
38Console.WriteLine("FrontLoaded contour");
39tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
40foreach (TimephasedData td in tdList)
41{
42 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
43}
44
45// Change contour
46firstRA.Set(Asn.WorkContour, WorkContourType.Bell);
47Console.WriteLine("Bell contour");
48tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
49foreach (TimephasedData td in tdList)
50{
51 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
52}
53
54// Change contour
55firstRA.Set(Asn.WorkContour, WorkContourType.EarlyPeak);
56Console.WriteLine("EarlyPeak contour");
57tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
58foreach (TimephasedData td in tdList)
59{
60 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
61}
62
63// Change contour
64firstRA.Set(Asn.WorkContour, WorkContourType.LatePeak);
65Console.WriteLine("LatePeak contour");
66tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
67foreach (TimephasedData td in tdList)
68{
69 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
70}
71
72// Change contour
73firstRA.Set(Asn.WorkContour, WorkContourType.DoublePeak);
74Console.WriteLine("DoublePeak contour");
75tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
76foreach (TimephasedData td in tdList)
77{
78 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
79}
En este código, cada contorno de trabajo se aplica a la asignación de recurso y se muestran los datos distribuidos en el tiempo generados. Esto facilita ver cómo se distribuye el trabajo a lo largo de la duración de la asignación según el tipo de contorno.
Preguntas frecuentes
P: ¿Qué es un contorno de trabajo en Microsoft Project?
- Un contorno de trabajo define cómo se distribuye el esfuerzo de un recurso a lo largo de la duración de una tarea. Por ejemplo, Flat aplica trabajo uniforme, mientras que Bell distribuye el esfuerzo más intensamente en el centro.
P: ¿Cómo genera Aspose.Tasks los datos distribuidos en el tiempo?
- Utiliza el
TimeScaleData
método, que toma las fechas de inicio y finalización del proyecto para calcular la distribución del trabajo de cada asignación.
P: ¿Puedo generar datos distribuidos en el tiempo para varias asignaciones a la vez?
- Sí. Puede iterar por todas las asignaciones de recursos en un proyecto y generar datos distribuidos en el tiempo para cada una.
P: ¿Necesito tener Microsoft Project instalado para generar datos distribuidos en el tiempo?
- No. Aspose.Tasks funciona de manera independiente y no requiere Microsoft Project para leer, calcular o exportar datos distribuidos en el tiempo.
Conclusión
En este artículo, exploramos cómo generar datos distribuidos en el tiempo para distintos contornos de trabajo de las asignaciones de recursos usando Aspose.Tasks for .NET. Al aplicar varios contornos y recuperar los datos correspondientes, los desarrolladores pueden analizar mejor las cargas de trabajo de los recursos, mejorar la previsión del proyecto y generar informes detallados de uso de forma programática.