Trabajar con tareas
A veces no es posible completar una tarea según lo programado, y es necesario dividirla en dos o más partes. Microsoft Project admite la división de tareas, y Aspose.Tasks para .NET proporciona la misma funcionalidad de forma programática.
División de tareas
La SplitParts propiedad expuesta por la clase Task se utiliza para determinar las partes en que se divide una tarea, mientras que SplitTask método expuesto por la clase ResourceAssignment se utiliza para dividir una única tarea en varias partes. SplitParts devuelve una colección de partes divididas, mientras que el método SplitTask acepta fecha de inicio, fecha de finalización y argumentos de calendario para dividir la tarea.
Dividir y ver tareas en Microsoft Project
En Microsoft Project, puede dividir una tarea de la siguiente manera:
- Seleccione una tarea larga que desee dividir.
- En la Task pestaña, en el Schedule grupo, haga clic en Split Task.
- Haga clic en el punto de la barra de tareas donde desea que ocurra la división.
Las tareas divididas se muestran en la Gantt Chart vista y están vinculadas por una línea discontinua.
Ejemplo: Crear y dividir una tarea
El siguiente ejemplo muestra cómo crear un proyecto, agregar una tarea, asignar un recurso y dividir la tarea de forma programática:
1// Create new project
2Project splitTaskProject = new Project();
3
4// Get a standard calendar
5Calendar calendar = splitTaskProject.Get(Prj.Calendar);
6
7// Set project's calendar settings
8splitTaskProject.Set(Prj.StartDate, new DateTime(2000, 3, 15, 8, 0, 0));
9splitTaskProject.Set(Prj.FinishDate, new DateTime(2000, 4, 21, 17, 0, 0));
10
11// Add a new task to root task
12Task rootTask = splitTaskProject.RootTask;
13rootTask.Set(Tsk.Name, "Root");
14Task taskToSplit = rootTask.Children.Add("Task1");
15taskToSplit.Set(Tsk.Duration, splitTaskProject.GetDuration(3));
16
17// Create a new resource assignment and generate timephased data
18ResourceAssignment splitResourceAssignment = splitTaskProject.ResourceAssignments.Add(taskToSplit, null);
19splitResourceAssignment.TimephasedDataFromTaskDuration(calendar);
20
21// Split the task into 3 parts.
22// Provide start date and finish date arguments to SplitTask method which will be used for split
23splitResourceAssignment.SplitTask(new DateTime(2000, 3, 16, 8, 0, 0), new DateTime(2000, 3, 16, 17, 0, 0), calendar);
24splitResourceAssignment.SplitTask(new DateTime(2000, 3, 18, 8, 0, 0), new DateTime(2000, 3, 18, 17, 0, 0), calendar);
25splitResourceAssignment.Set(Asn.WorkContour, WorkContourType.Contoured);
26
27splitTaskProject.Save("CreateSplitTasks_out.xml", SaveFileFormat.XML);
Ejemplo: Ver tareas divididas
El siguiente ejemplo muestra cómo identificar tareas divididas en un proyecto e imprimir sus detalles en la consola:
1Project project = new Project("New Project.mpp");
2
3// Access task
4Task splitTask = project.RootTask.Children.GetById(4);
5
6// Display split parts of task
7SplitPartCollection collection = splitTask.SplitParts;
8foreach (SplitPart splitPart in collection)
9{
10 Console.WriteLine("Index: " + splitPart.Index + " Start: " + splitPart.Start + " Finish: " + splitPart.Finish);
11}
Notas clave
- Dividir tareas ayuda a modelar interrupciones reales en los cronogramas del proyecto.
- El
SplitTask
método no elimina el trabajo — redistribuye el trabajo existente en intervalos separados. - La
SplitParts
propiedad permite a los desarrolladores analizar y procesar cada segmento individualmente. - Funciona de manera consistente tanto con MPP y XML formatos de proyecto.
Preguntas frecuentes
P: ¿Puede una tarea tener más de dos segmentos?
- Sí. Una tarea puede dividirse en múltiples segmentos.
P: ¿Afecta la división a la duración de la tarea?
- La duración total cambia dependiendo de la colocación de los intervalos de división, pero el trabajo total permanece sin cambios.
P: ¿Se pueden volver a unir las tareas divididas?
- En Microsoft Project, puede ajustar manualmente las barras para eliminar las divisiones. En Aspose.Tasks, puede gestionar esto restableciendo las asignaciones de tareas o recreando la tarea.
P: ¿Es compatible esta característica con tareas recurrentes?
- No. La división está destinada a tareas regulares, no a definiciones de tareas recurrentes.