Gestion des contraintes de tâche
Les contraintes de tâches sont utilisées pour définir l’horaire d’un projet Microsoft Project et définir lorsque les tâches doivent être démarrées ou terminées. Les contraintes peuvent être flexibles - démarrer ou se terminer dès que possible ou aussi tard que possible - ou inflexible. Les contraintes inflexibles sont liées à des dates spécifiques.
Travailler avec les contraintes
Les propriétés CONSTRAINTDAT et CONSTRAINTTYPE sont exposées par la classe statique TSK pour gérer les contraintes:
- CONSTRAINTDATE accepte et renvoie le type de données DateTime.
- CONSTRAINTTYPE accepte et renvoie l’une des valeurs de l’énumération ContraintType.
Définition des contraintes dans Microsoft Project
Pour définir des contraintes dans le projet Microsoft:
- Dans le menu View, sélectionnez Plus de vues puis Formulaire d’entrée de tâche.
- Double-cliquez sur une tâche sur le formulaire d’entrée de tâche.
- Sélectionnez l’onglet avancé.
- Définissez une contrainte en sélectionnant une option dans la liste Contrain Type et une date pour la liste Date de contrainte Liste.
Définition des contraintes avec Aspose.Tasks
La date de contrainte est na lorsque le type de contrainte est le plus tôt possible ou le plus tard possible. Pour les valeurs de date égales à NA, Aspose.Tasks utilise la valeur “1/1/2000” dans la version d’évaluation et DateTime.minvalue pour le produit sous licence. Dans le cas ci-dessous, nous prenons un fichier de projet source comme entrée et appliquons différents types de contraintes sur diverses tâches dans chaque cas. Les échantillons de code suivants montrent l’application de différents types de contraintes.
Les échantillons de code ci-dessous définissent le type de type de contrainte défini pour démarrer au plus tôt.
1Project project = new Project("New Project.mpp");
2
3// Set constraint Start No Earlier Than on task with Id 1
4Task summary = project.RootTask.Children.GetById(1);
5summary.Set(Tsk.ConstraintType, ConstraintType.StartNoEarlierThan);
6summary.Set(Tsk.ConstraintDate, new DateTime(2016, 12, 1, 9, 0, 0));
7
8SaveOptions o = new PdfSaveOptions();
9o.StartDate = project.Get(Prj.StartDate);
10o.Timescale = Timescale.ThirdsOfMonths;
11project.Save("StartNoEarlierThan_out.pdf", o);
The code samples below set the constraint type set to Finish No Earlier Than.
1// Set constraint Finish No Earlier Than on task with Id 2
2Task first = project.RootTask.Children.GetById(2);
3first.Set(Tsk.ConstraintType, ConstraintType.FinishNoEarlierThan);
4first.Set(Tsk.ConstraintDate, new DateTime(2016, 12, 1, 18, 0, 0));
5SaveOptions options = new PdfSaveOptions();
6options.StartDate = project.Get(Prj.StartDate);
7options.Timescale = Timescale.ThirdsOfMonths;
8project.Save("FinishNoEarlierThan_out.pdf", options);
The code samples below set the constraint type set to Must Start On.
1// Set constraint Must Start On for task with Id 5
2Task roof = project.RootTask.Children.GetById(5);
3roof.Set(Tsk.ConstraintType, ConstraintType.MustStartOn);
4roof.Set(Tsk.ConstraintDate, new DateTime(2017, 1, 1, 9, 0, 0));
5
6SaveOptions options = new PdfSaveOptions();
7options.StartDate = project.Get(Prj.StartDate);
8options.Timescale = Timescale.ThirdsOfMonths;
9project.Save("MustStartOn_out.pdf", options);
The code samples below set the constraint type set to As Late As Possible.
1// Set constraint As Late As Possible for task with Id 11
2Task wallBoard = project.RootTask.Children.GetById(11);
3wallBoard.Set(Tsk.ConstraintType, ConstraintType.AsLateAsPossible);
4
5SaveOptions options = new PdfSaveOptions();
6options.StartDate = project.Get(Prj.StartDate);
7options.Timescale = Timescale.ThirdsOfMonths;
8project.Save("AsLateAsPossible_out.pdf", options);
The code sample below shows the constraint type set to Must Finish On.
1// Set constraint Must Finish On for task with Id 15
2Task task = project.RootTask.Children.GetById(15);
3task.Set(Tsk.ConstraintType, ConstraintType.MustFinishOn);
4task.Set(Tsk.ConstraintDate, new DateTime(2017, 3, 1, 18, 0, 0));
5
6SaveOptions options = new PdfSaveOptions();
7options.StartDate = project.Get(Prj.StartDate);
8options.Timescale = Timescale.ThirdsOfMonths;
9project.Save("MustFinishOn_out.pdf", options);
Getting Constraints
This code sample displays any constraints found when traversing the tasks in the project to a command window.
1Project project = new Project("New Project.mpp");
2
3// Create a ChildTasksCollector instance
4ChildTasksCollector collector = new ChildTasksCollector();
5
6// Collect all the tasks from RootTask using TaskUtils
7TaskUtils.Apply(project.RootTask, collector, 0);
8
9// Parse through all the collected tasks
10foreach (Task task in collector.Tasks)
11{
12 if (task.Get(Tsk.ConstraintDate).ToShortDateString() == "1/1/2000")
13 Console.WriteLine("NA");
14 else
15 Console.WriteLine(task.Get(Tsk.ConstraintDate).ToShortDateString());
16
17 Console.WriteLine(task.Get(Tsk.ConstraintType).ToString());
18}