Crear archivos de MS Project en C++

MS Project es un software de administración de proyectos ampliamente utilizado que ayuda a los gerentes a administrar sus proyectos de manera eficiente. Permite crear tareas, agregar recursos, asignar tareas a recursos, monitorear el progreso y administrar operaciones relacionadas con el presupuesto. En este artículo, aprenderá a integrar las actividades de gestión de proyectos en sus aplicaciones C++ sin MS Project. Con la ayuda de ejemplos de código, aprenderá cómo crear archivos de MS Project (.mpp/.xml), agregar tareas, recursos y calendarios mediante programación usando C++. Además, también se demostrará la asignación de tareas a recursos en un proyecto.

API de manipulación de archivos de C++ MS Project

Aspose.Tasks for C++ es una API de administración de proyectos de C++ que le permite crear, manipular, exportar y convertir archivos de MS Project mediante programación. La API le proporciona un conjunto completo de funciones para crear proyectos, tareas, recursos, calendarios y realizar otras actividades de gestión de proyectos sin MS Project. Puede descargar el paquete completo de la API desde aquí o instalarlo usando NuGet.

Cree archivos de MS Project (.mpp) usando C++

Comencemos primero creando un proyecto vacío. Los siguientes son los pasos para crear un archivo de MS Project (.mpp) desde cero usando Aspose.Tasks for C++.

El siguiente ejemplo de código muestra cómo crear un archivo .mpp de MS Project usando C++.

// Crear proyecto
System::SharedPtr<Project> project = System::MakeObject<Project>();

// Establecer la información del proyecto
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");

// Guardar proyecto como archivo .mpp
project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

Agregar tareas al proyecto usando C++

Una vez que haya creado un proyecto, puede proceder a agregarle tareas. Puede crear un nuevo proyecto o cargar un archivo de MS Project existente para agregar las tareas. Los siguientes son los pasos para crear y agregar tareas o subtareas a un proyecto.

El siguiente ejemplo de código muestra cómo crear y agregar tareas a un proyecto usando C++.

// Crear instancia de proyecto
System::SharedPtr<Project> project = System::MakeObject<Project>(u"project.mpp");

// Agregar tarea, subtarea y guardar proyecto
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");

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

Leer más sobre funciones ampliadas relacionadas con las tareas.

Agregar recursos al proyecto usando C++

Los recursos son las entidades que se supone que deben completar el proyecto. Por lo general, se hace referencia a las personas como los recursos de un proyecto. Los siguientes son los pasos para crear y agregar recursos a un proyecto.

El siguiente ejemplo de código muestra cómo agregar un recurso en un proyecto usando C++.

// Crear instancia de proyecto
System::SharedPtr<Project> project = System::MakeObject<Project>();  

// Agregar recursos
System::SharedPtr<Resource> rsc1 = project->get_Resources()->Add(u"Rsc");    

// Establecer propiedades de recursos, las propiedades de los recursos están representadas por la clase estática Rsc
rsc1->Set<System::Decimal>(Rsc::StandardRate(), static_cast<System::Decimal>(15));
rsc1->Set<System::Decimal>(Rsc::OvertimeRate(), static_cast<System::Decimal>(20));  

// Guardar proyecto como XML
project->Save(u"CreateResources_out.xml", Aspose::Tasks::Saving::SaveFileFormat::XML);

Leer más sobre funciones ampliadas relacionadas con los recursos.

Asigne la tarea del proyecto al recurso usando C++

Una vez que haya creado las tareas y los recursos, el siguiente paso es asignar cada tarea a un recurso que se encargue de su finalización. Los siguientes son los pasos para asignar una tarea a un recurso.

El siguiente ejemplo de código muestra cómo asignar una tarea a un recurso en un proyecto usando C++.

// Crear proyecto vacío
System::SharedPtr<Project> project1 = System::MakeObject<Project>();    

// Agregar nueva tarea y recurso
System::SharedPtr<Task> task1 = project1->get_RootTask()->get_Children()->Add(u"Task");
System::SharedPtr<Resource> rsc1 = project1->get_Resources()->Add(u"Rsc");  

// Asigne al recurso la tarea deseada
System::SharedPtr<ResourceAssignment> assn = project1->get_ResourceAssignments()->Add(task1, rsc1);

Agregar calendarios en Project usando C++

Los calendarios se utilizan para crear una programación para el proyecto dentro de MS Project. Aspose.Tasks for C++ ha simplificado mucho la creación de un calendario para un proyecto. Los siguientes son los pasos para crear un calendario, agregar días de la semana y especificar el horario de trabajo.

También puede establecer el tiempo de trabajo para un día de la semana en el calendario. Para esto, puede seguir los pasos a continuación después de agregar los días hábiles.

El siguiente ejemplo de código muestra cómo crear un calendario en un proyecto usando C++.

// Crear una instancia de proyecto
System::SharedPtr<Project> project = System::MakeObject<Project>();    

// Definir calendario
System::SharedPtr<Aspose::Tasks::Calendar> cal = project->get_Calendars()->Add(u"Calendar1");    

// Agregue días hábiles de lunes a jueves con horarios predeterminados
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));  

// Establecer el viernes como día laborable corto
System::SharedPtr<WeekDay> myWeekDay = System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Friday);  

// Establece el tiempo de trabajo. Solo la parte de tiempo de DateTime es 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);   

// Guardar el proyecto
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);

Leer más sobre las funciones ampliadas relacionadas con los calendarios.

Conclusión

En este artículo, ha aprendido cómo crear archivos de MS Project y guardarlos como .mpp o .xml usando C++. Además, aprendió a agregar tareas, recursos, asignaciones de recursos y calendarios dentro de un proyecto mediante programación. También puede explorar la documentación para conocer las funciones ampliadas de Aspose.Tasks for C++ para mejorar aún más las capacidades de gestión de proyectos dentro de sus aplicaciones.

Ver también