Créer des fichiers MS Project en C++

MS Project est un logiciel de gestion de projet largement utilisé qui aide les gestionnaires à gérer efficacement leurs projets. Il permet de créer les tâches, d’ajouter des ressources, d’allouer des tâches aux ressources, de suivre l’avancement et de gérer les opérations liées au budget. Dans cet article, vous apprendrez comment intégrer les activités de gestion de projet dans vos applications C++ sans MS Project. À l’aide d’exemples de code, vous apprendrez à créer des fichiers MS Project (.mpp/.xml), à ajouter des tâches, des ressources et des calendriers par programmation à l’aide de C++. En outre, l’affectation des tâches aux ressources d’un projet sera également démontrée.

API de manipulation de fichiers C++ MS Project

Aspose.Tasks for C++ est une API de gestion de projet C++ qui vous permet de créer, manipuler, exporter et convertir des fichiers MS Project par programmation. L’API vous fournit un ensemble complet de fonctionnalités pour créer des projets, des tâches, des ressources, des calendriers et effectuer d’autres activités de gestion de projet sans MS Project. Vous pouvez télécharger le package complet de l’API depuis ici ou l’installer à l’aide de NuGet.

Créer des fichiers MS Project (.mpp) à l’aide de C++

Commençons d’abord par créer un projet vide. Voici les étapes pour créer un fichier MS Project (.mpp) à partir de zéro en utilisant Aspose.Tasks for C++.

L’exemple de code suivant montre comment créer un fichier .mpp de MS Project à l’aide de C++.

// Créer un projet
System::SharedPtr<Project> project = System::MakeObject<Project>();

// Définir les informations du projet
project->Set<System::String>(Prj::Author(), u"Author");
project->Set<System::String>(Prj::LastAuthor(), u"Last Author");
project->Set<int32_t>(Prj::Revision(), 15);
project->Set<System::String>(Prj::Keywords(), u"MSP Aspose");
project->Set<System::String>(Prj::Comments(), u"Comments");

// Enregistrer le projet en tant que fichier .mpp
project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

Ajouter des tâches au projet à l’aide de C++

Une fois que vous avez créé un projet, vous pouvez continuer à y ajouter des tâches. Vous pouvez soit créer un nouveau projet, soit charger un fichier MS Project existant pour ajouter les tâches. Voici les étapes pour créer et ajouter des tâches ou des sous-tâches à un projet.

L’exemple de code suivant montre comment créer et ajouter des tâches à un projet à l’aide de C++.

// Créer une instance de projet
System::SharedPtr<Project> project = System::MakeObject<Project>(u"project.mpp");

// Ajouter une tâche, une sous-tâche et enregistrer le projet
System::SharedPtr<Task> task = project->get_RootTask()->get_Children()->Add(u"Summary1");
task->Set(Tsk::Start(), project->get_RootTask()->Get<System::DateTime>(Tsk::Start()).AddDays(1));
task->Set<System::String>(Tsk::Name(), u"new name");
System::SharedPtr<Task> subtask = task->get_Children()->Add(u"Subtask1");

// Sauvegarder le projet
project->Save(dataDir + u"CreateTasks_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

En savoir plus sur les fonctionnalités étendues liées aux tâches.

Ajouter des ressources au projet à l’aide de C++

Les ressources sont les entités censées réaliser le projet. Habituellement, les personnes sont appelées les ressources d’un projet. Voici les étapes pour créer et ajouter des ressources à un projet.

L’exemple de code suivant montre comment ajouter une ressource dans un projet à l’aide de C++.

// Créer une instance de projet
System::SharedPtr<Project> project = System::MakeObject<Project>();  

// Ajouter des ressources
System::SharedPtr<Resource> rsc1 = project->get_Resources()->Add(u"Rsc");    

// Définir les propriétés des ressources, les propriétés des ressources sont représentées par la classe statique Rsc
rsc1->Set<System::Decimal>(Rsc::StandardRate(), static_cast<System::Decimal>(15));
rsc1->Set<System::Decimal>(Rsc::OvertimeRate(), static_cast<System::Decimal>(20));  

// Enregistrer le projet au format XML
project->Save(u"CreateResources_out.xml", Aspose::Tasks::Saving::SaveFileFormat::XML);

En savoir plus sur les fonctionnalités étendues liées aux ressources.

Affecter la tâche du projet à la ressource à l’aide de C++

Une fois que vous avez créé les tâches et les ressources, l’étape suivante consiste à affecter chaque tâche à une ressource responsable de son exécution. Voici les étapes pour affecter une tâche à une ressource.

  • Créez un nouveau projet ou chargez-le à partir d’un fichier .mpp en utilisant la classe Project.
  • Ajoutez de nouvelles tâches et ressources si le projet est vide.
  • Accédez à la tâche et à la ressource souhaitées dans les objets Task et Resource respectivement.
  • Attribuez une tâche à une ressource à l’aide de la méthode Project->getResourceAssignments()->Add(Task, Resource).
  • Enregistrez le projet à l’aide de la méthode Project.Save().

L’exemple de code suivant montre comment affecter une tâche à une ressource dans un projet à l’aide de C++.

// Créer un projet vide
System::SharedPtr<Project> project1 = System::MakeObject<Project>();    

// Ajouter une nouvelle tâche et ressource
System::SharedPtr<Task> task1 = project1->get_RootTask()->get_Children()->Add(u"Task");
System::SharedPtr<Resource> rsc1 = project1->get_Resources()->Add(u"Rsc");  

// Attribuez la tâche souhaitée à la ressource
System::SharedPtr<ResourceAssignment> assn = project1->get_ResourceAssignments()->Add(task1, rsc1);

Ajouter des calendriers dans Project à l’aide de C++

Les calendriers sont utilisés pour créer un calendrier pour le projet dans MS Project. Aspose.Tasks for C++ a rendu très simple la création d’un calendrier pour un projet. Voici les étapes pour créer un calendrier, ajouter des jours de la semaine et spécifier le temps de travail.

Vous pouvez également définir le temps de travail pour un jour de la semaine dans le calendrier. Pour cela, vous pouvez suivre les étapes ci-dessous après avoir ajouté les jours ouvrables.

L’exemple de code suivant montre comment créer un calendrier dans un projet à l’aide de C++.

// Créer une instance de projet
System::SharedPtr<Project> project = System::MakeObject<Project>();    

// Définir le calendrier
System::SharedPtr<Aspose::Tasks::Calendar> cal = project->get_Calendars()->Add(u"Calendar1");    

// Ajouter des jours ouvrables du lundi au jeudi avec des horaires par défaut
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Monday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Tuesday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Wednesday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Thursday));
cal->get_WeekDays()->Add(System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Saturday));
cal->get_WeekDays()->Add(System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Sunday));  

// Définir le vendredi comme jour ouvrable court
System::SharedPtr<WeekDay> myWeekDay = System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Friday);  

// Définit le temps de travail. Seule la partie heure de DateTime est importante
System::SharedPtr<WorkingTime> wt1 = System::MakeObject<WorkingTime>();
wt1->set_FromTime(System::DateTime(1, 1, 1, 9, 0, 0, 0));
wt1->set_ToTime(System::DateTime(1, 1, 1, 12, 0, 0, 0));
System::SharedPtr<WorkingTime> wt2 = System::MakeObject<WorkingTime>();
wt2->set_FromTime(System::DateTime(1, 1, 1, 13, 0, 0, 0));
wt2->set_ToTime(System::DateTime(1, 1, 1, 16, 0, 0, 0));
myWeekDay->get_WorkingTimes()->Add(wt1);
myWeekDay->get_WorkingTimes()->Add(wt2);
myWeekDay->set_DayWorking(true);
cal->get_WeekDays()->Add(myWeekDay);   

// Enregistrer le projet
System::String dataDir = Examples::CPP::RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
project->Save(u"Project_DefineCalendarWeekdays_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

En savoir plus sur les fonctionnalités étendues liées aux calendriers.

Conclusion

Dans cet article, vous avez appris à créer des fichiers MS Project et à les enregistrer au format .mpp ou .xml à l’aide de C++. De plus, vous avez appris à ajouter par programmation des tâches, des ressources, des affectations de ressources et des calendriers dans un projet. Vous pouvez également explorer la documentation pour les fonctionnalités étendues d’Aspose.Tasks for C++ afin d’améliorer encore les capacités de gestion de projet au sein de vos applications.

Voir également