Travailler avec les tâches
Parfois, il n’est pas possible d’achever une tâche selon le calendrier prévu, et elle doit être scindée en deux ou plusieurs parties. Microsoft Project prend en charge la division des tâches, et Aspose.Tasks pour .NET fournit la même fonctionnalité par programmation.
Fractionnement des tâches
La SplitParts propriété exposée par la Task classe est utilisée pour déterminer les parties scindées d’une tâche tandis que SplitTask méthode exposée par la ResourceAssignment classe est utilisée pour diviser une seule tâche en plusieurs parties. SplitParts renvoie une collection de parties scindées tandis que la méthode SplitTask accepte des arguments de date de début, date de fin et de calendrier pour scinder la tâche.
Fractionnement et affichage des tâches dans Microsoft Project
Dans Microsoft Project, vous pouvez scinder une tâche comme suit :
- Sélectionnez une tâche longue que vous souhaitez diviser.
- Dans l’onglet Task onglet, dans le Schedule groupe, cliquez sur Split Task.
- Cliquez au point de la barre de la tâche où vous souhaitez que la scission se produise.
Les tâches scindées sont affichées dans la vue Gantt Chart et sont liées par une ligne pointillée.
Exemple : création et fractionnement d’une tâche
L’exemple suivant montre comment créer un projet, ajouter une tâche, affecter une ressource et scinder la tâche par programmation :
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);
Exemple : affichage des tâches scindées
L’exemple suivant montre comment identifier les tâches scindées dans un projet et afficher leurs détails dans la console :
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}
Points clés
- Le fractionnement des tâches aide à modéliser les interruptions réelles dans les plannings de projet.
- La méthode
SplitTask
ne supprime pas le travail — elle redistribue le travail existant en intervalles distincts. - La
SplitParts
propriété permet aux développeurs d’analyser et de traiter chaque segment individuellement. - Fonctionne de manière cohérente avec les deux MPP et XML formats de projet.
Foire aux questions
Q : Une tâche peut-elle comporter plus de deux scissions ?
- Oui. Une tâche peut être divisée en plusieurs segments.
Q : Le fractionnement affecte-t-il la durée de la tâche ?
- La durée totale change en fonction du positionnement des intervalles de scission, mais le travail total reste inchangé.
Q : Les tâches scindées peuvent-elles être fusionnées ?
- Dans Microsoft Project, vous pouvez ajuster manuellement les barres pour supprimer les scissions. Dans Aspose.Tasks, vous pouvez gérer cela en réinitialisant les affectations de tâches ou en recréant la tâche.
Q : Cette fonctionnalité est-elle prise en charge pour les tâches récurrentes ?
- Non. Le fractionnement est destiné aux tâches régulières, pas aux définitions de tâches récurrentes.