Travailler avec les calendriers

Créer un calendrier

Les calendriers dans Microsoft Project définissent les heures ouvrables et non ouvrables, influençant directement la planification des tâches et la disponibilité des ressources. Dans Aspose.Tasks for .NET, les calendriers peuvent être créés à l’aide de la classe Calendar, qui fournit trois surcharges de constructeur :

L’exemple de code suivant montre comment instancier des calendriers avec chaque constructeur. Une fois créés, les calendriers peuvent être visualisés dans Microsoft Project via Projet > Informations sur le projet.

Informations sur le projet affichant les calendriers

vérification des calendriers disponibles dans Microsoft Project

1// Create a project instance
2Project project = new Project();
3
4// New calendar can be added to a project's calendar collection using the collection's Add method.
5Calendar cal1 = project.Calendars.Add("New Info");
6Calendar cal2 = project.Calendars.Add("no name");
7Calendar cal3 = project.Calendars.Add("cal3");
8
9project.Save("CreatingCalendar_out.Xml", SaveFileFormat.XML);

Définir les jours de la semaine pour un calendrier

La collection Days de la classe Calendar représente les jours ouvrables et leurs plages horaires associées. Les jours de la semaine sont définis à l’aide des classes WeekDay et WorkingTime.

Les développeurs peuvent utiliser CreateDefaultWorkingDay() pour initialiser les heures standard d’un jour donné, ou définir des intervalles personnalisés via les propriétés FromTime et ToTime.

L’exemple ci-dessous définit les lundis à jeudis comme jours ouvrables par défaut, et le vendredi avec des heures personnalisées. Pour vérifier le résultat dans Microsoft Project, allez à Outils > Modifier les horaires de travail.

Définir les jours de semaine dans Microsoft Project

ajouter des jours de semaine dans les calendriers Microsoft Project

 1// This example shows how Aspose.Tasks API can be used to define a new Calendar, add week days to it and define working times for days
 2// Create a project instance
 3Project project = new Project();
 4
 5// Define Calendar
 6Calendar cal = project.Calendars.Add("Calendar1");
 7
 8// Add working days monday through thursday with default timings
 9cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
10cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
11cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
12cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
13cal.WeekDays.Add(new WeekDay(DayType.Saturday));
14cal.WeekDays.Add(new WeekDay(DayType.Sunday));
15
16// Set friday as short working day
17WeekDay myWeekDay = new WeekDay(DayType.Friday);
18
19// Sets working time. Only time part of DateTime is important
20WorkingTime wt1 = new WorkingTime();
21wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
22wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
23WorkingTime wt2 = new WorkingTime();
24wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
25wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
26myWeekDay.WorkingTimes.Add(wt1);
27myWeekDay.WorkingTimes.Add(wt2);
28myWeekDay.DayWorking = true;
29cal.WeekDays.Add(myWeekDay);
30
31project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Remplacer un calendrier

Les calendriers de base servent de modèles pour la planification des ressources et des tâches. Aspose.Tasks permet de remplacer un calendrier existant en accédant à la CalendarCollection via l’objet Project.

Les types de calendrier de base pris en charge incluent :

Le code ci-dessous montre comment supprimer un calendrier existant et en ajouter un nouveau de type standard à la collection.

 1// Create project
 2Project project = new Project("New Project.mpp");
 3
 4// Access project calendars
 5CalendarCollection calColl = project.Calendars;
 6foreach (Calendar myCalendar in calColl)
 7{
 8    if (myCalendar.Name == "TestCalendar")
 9    {
10        // Remove calendar
11        calColl.Remove(myCalendar);
12    }
13}
14
15// Add new calendar
16Calendar newCalendar = calColl.Add("TestCalendar");
17project.Save("ReplaceCalendar_out.mpp", SaveFileFormat.MPP);

Créer un calendrier standard

Un calendrier standard définit les jours et heures ouvrables par défaut utilisés couramment dans la planification de projets. Aspose.Tasks fournit deux méthodes statiques pour faciliter cela :

Pour inspecter le résultat dans Microsoft Project, utilisez Outils > Modifier les horaires de travail.

La boîte de dialogue d’informations sur les horaires de travail montre le calendrier standard utilisé par le projet

modifier les horaires de travail dans Microsoft Project

1// Create a project instance
2Project project = new Project();
3
4// Define Calendar and make it standard
5Calendar cal1 = project.Calendars.Add("My Cal");
6Calendar.MakeStandardCalendar(cal1);
7
8project.Save("Project_MakeStandardCalendar_out.xml", SaveFileFormat.XML);

Écrire les données de calendrier mises à jour dans un fichier MPP

Aspose.Tasks permet de mettre à jour les définitions de calendriers et de les enregistrer dans un fichier MPP. Le processus implique :

  1. Chargement du fichier MPP existant.
  2. Modification de la collection de calendriers (ajout, mise à jour).
  3. Enregistrement du projet mis à jour sur le disque.

L’exemple suivant montre comment ajouter un nouveau calendrier et l’enregistrer dans le fichier MPP source.

 1Project project = new Project("New Project.mpp");
 2Calendar cal = project.Calendars.GetByUid(3);
 3
 4// Update the calendar information
 5Calendar.MakeStandardCalendar(cal);
 6cal.Name = "Test calendar";
 7CalendarException exc = new CalendarException();
 8exc.FromDate = DateTime.Now;
 9exc.ToDate = DateTime.Now.AddDays(2);
10exc.DayWorking = true;
11
12WorkingTime wt1 = new WorkingTime();
13wt1.FromTime = new DateTime(10, 1, 1, 9, 0, 0);
14wt1.ToTime = new DateTime(10, 1, 1, 13, 0, 0);
15
16WorkingTime wt2 = new WorkingTime();
17wt2.FromTime = new DateTime(10, 1, 1, 14, 0, 0);
18wt2.ToTime = new DateTime(10, 1, 1, 19, 0, 0);
19
20WorkingTime wt3 = new WorkingTime();
21wt3.FromTime = new DateTime(10, 1, 1, 20, 0, 0);
22wt3.ToTime = new DateTime(10, 1, 1, 21, 0, 0);
23
24exc.WorkingTimes.Add(wt1);
25exc.WorkingTimes.Add(wt2);
26exc.WorkingTimes.Add(wt3);
27cal.Exceptions.Add(exc);
28
29CalendarException exc2 = new CalendarException();
30exc2.FromDate = DateTime.Now.AddDays(7);
31exc2.ToDate = exc2.FromDate;
32exc2.DayWorking = false;
33cal.Exceptions.Add(exc2);
34
35project.Set(Prj.Calendar, cal);
36
37project.Save("WriteUpdatedCalendarDataToMPP_out.mpp", SaveFileFormat.MPP);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.