So teilen Sie Microsoft -Projektaufgaben

Manchmal ist es nicht möglich, eine geplante Aufgabe zu erledigen, und sie muss in zwei oder mehr Teile aufgeteilt werden. Aspose.Tasks FÜR C ++ API unterstützt diese Microsoft -Projektfunktion.

Aufgaben aufgeteilt

Die von der Task Klasse ausgesetzte SPLITPARTS -Eigenschaft wird verwendet, um die geteilten Teile einer Aufgabe zu bestimmen, während die von der Ressourcenassignment -Klasse aufgedeckte Splittask -Methode verwendet wird, um eine einzelne Aufgabe in mehrere Teile aufzuteilen. SplitParts gibt eine Sammlung von geteilten Teilen zurück, während die Splittask -Methode Startdatum, Enddatum und Kalenderargumente akzeptiert, um die Aufgabe zu teilen.

Aufteilen und Anzeigen von Aufgaben im Microsoft -Projekt

Um eine Aufgabe im Microsoft -Projekt aufzuteilen:

  1. Identifizieren Sie eine lange Aufgabe und Sie möchten teilen.
  2. Wählen Sie im Menü Task die Zeitplan Gruppe und klicken Sie auf TAP -Task.
  3. Klicken Sie auf die Position, die Sie die Aufgabe teilen möchten.

Um Split -Aufgaben in Microsoft Project zu sehen, kann man Gantt -Diagramm im Menü View auswählen. Split -Aufgaben sind durch eine gepunktete Linie verknüpft.

Erstellen und Teilen von Aufgaben

Befolgen Sie die folgenden Schritte, um eine Aufgabe zu erstellen und zu teilen:

  1. Erstellen Sie ein neues Projekt.
  2. Erstellen und weisen Sie einen neuen Kalender für das Projekt zu und weisen Sie sie zu.
  3. Erstellen und fügen Sie eine neue Aufgabe im Projekt hinzu.
  4. Erstellen und fügen Sie eine neue Ressourcenzuweisung im Projekt zu und fügen Sie sie hinzu.
  5. Verwenden Sie die Splittask -Methode, die von der Ressourcenassignment -Klasse aufgedeckt wurde, um die Aufgabe zu teilen.
  6. Schreiben Sie das neue Projekt auf die Festplatte.

Der folgende Code zeigt, wie diese Aufgaben erledigt werden können:

 1// Create new project
 2System::SharedPtr<Project> splitTaskProject = System::MakeObject<Project>();
 3    
 4// Get a standard calendar
 5System::SharedPtr<Calendar> calendar = splitTaskProject->Get<System::SharedPtr<Calendar>>(Prj::Calendar());
 6    
 7// Set project's calendar settings
 8splitTaskProject->Set(Prj::StartDate(), System::DateTime(2000, 3, 15, 8, 0, 0));
 9splitTaskProject->Set(Prj::FinishDate(), System::DateTime(2000, 4, 21, 17, 0, 0));
10    
11// Add a new task to root task
12System::SharedPtr<Task> rootTask = splitTaskProject->get_RootTask();
13rootTask->Set<System::String>(Tsk::Name(), u"Root");
14System::SharedPtr<Task> taskToSplit = rootTask->get_Children()->Add(u"Task1");
15taskToSplit->Set<Duration>(Tsk::Duration(), splitTaskProject->GetDuration(3));
16    
17// Create a new resource assignment and generate timephased data
18System::SharedPtr<ResourceAssignment> splitResourceAssignment = splitTaskProject->get_ResourceAssignments()->Add(taskToSplit, nullptr);
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(System::DateTime(2000, 3, 16, 8, 0, 0), System::DateTime(2000, 3, 16, 17, 0, 0), calendar);
24splitResourceAssignment->SplitTask(System::DateTime(2000, 3, 18, 8, 0, 0), System::DateTime(2000, 3, 18, 17, 0, 0), calendar);
25splitResourceAssignment->Set<WorkContourType>(Asn::WorkContour(), Aspose::Tasks::WorkContourType::Contoured);
26    
27// Save the Project
28System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
29splitTaskProject->Save(dataDir + u"CreateSplitTasks_out.xml", Aspose::Tasks::Saving::SaveFileFormat::XML);

Viewing Split Tasks with Aspose.Tasks

The following example shows how to identify split tasks and printing their details to a console window.

 1// Create project instance
 2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
 3System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"ViewSplitTasks.mpp");
 4    
 5// Access task 
 6System::SharedPtr<Task> splitTask = project1->get_RootTask()->get_Children()->GetById(4);
 7    
 8// Display split parts of task
 9System::SharedPtr<SplitPartCollection> collection = splitTask->get_SplitParts();
10    
11{
12    auto splitPart_enumerator = (collection)->GetEnumerator();
13    decltype(splitPart_enumerator->get_Current()) splitPart;
14    while (splitPart_enumerator->MoveNext() && (splitPart = splitPart_enumerator->get_Current(), true))
15    {
16        System::Console::WriteLine(System::String(u"Index: ") + splitPart->get_Index() + u"\nStart: " + splitPart->get_Start() + u"\nFinish: " + splitPart->get_Finish() + u"\n");
17    }
18}

Calculating a Split Task’s Finish Date

The following code example calculates finish date for a split task.

 1// Read project            
 2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
 3System::String projectName = u"SplitTaskFinishDate.mpp";
 4System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + projectName);
 5    
 6// Find a split task
 7System::SharedPtr<Task> splitTask = project->get_RootTask()->get_Children()->GetByUid(4);
 8    
 9// Find the project calendar
10System::SharedPtr<Calendar> calendar = project->Get<System::SharedPtr<Calendar>>(Prj::Calendar());
11    
12// Calculate task's finish date with different durations
13System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 8 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(8, 0, 0)));
14System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 16 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(16, 0, 0)));
15System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 24 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(24, 0, 0)));
16System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 28 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(28, 0, 0)));
17System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 32 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(32, 0, 0)));
18System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 46 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(46, 0, 0)));
19System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 61 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(61, 0, 0)));
20System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 75 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(75, 0, 0)));
21System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 80 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(80, 0, 0)));
22System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 120 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(120, 0, 0)));
23System::Console::WriteLine(System::String(u"Start Date: ") + splitTask->Get<System::DateTime>(Tsk::Start()).ToShortDateString() + u"\n+ Duration 150 hours\nFinish Date: " + calendar->GetTaskFinishDateFromDuration(splitTask, System::TimeSpan(150, 0, 0)));
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.