Travailler avec WBS associé aux tâches

Les codes WBS (Work Breakdown Structure), vous permettent d’attribuer des numéros de contour aux tâches en fonction des besoins de votre entreprise. Il s’agit d’une méthode pour appliquer un schéma de contour personnalisé à un projet. Aspose.Tasks pour l’API C ++ prend en charge cette fonctionnalité.

Travailler avec la structure de panne de travail

Les propriétés WBS et WBSLevel exposées par la classe TSK sont utilisées pour lire et écrire une structure de panne de travail de tâches.

View du projet Microsoft de WBS

Pour afficher les informations WBS dans Microsoft Project:

  1. Dans le formulaire d’entrée de tâche, sélectionnez le menu INSERT puis colonne.
  2. Ajoutez la colonne WBS.

Obtenir WBS dans Aspose.Tasks

Les exemples suivants montrent comment obtenir la valeur WBS d’une tâche en utilisant Aspose.Tasks.

 1// Read project
 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"TaskWBS.mpp");
 4    
 5// Create a ChildTasksCollector instance
 6System::SharedPtr<ChildTasksCollector> collector = System::MakeObject<ChildTasksCollector>();
 7    
 8// Collect all the tasks from RootTask using TaskUtils
 9TaskUtils::Apply(project1->get_RootTask(), collector, 0);
10    
11// Parse through all the collected tasks
12    
13{
14    auto tsk_enumerator = (collector->get_Tasks())->GetEnumerator();
15    decltype(tsk_enumerator->get_Current()) tsk;
16    while (tsk_enumerator->MoveNext() && (tsk = tsk_enumerator->get_Current(), true))
17    {
18        System::Console::WriteLine(tsk->Get(Tsk::WBS()));
19        System::Console::WriteLine(tsk->Get(Tsk::WBSLevel()));
20        
21        // Set custom WBS
22        tsk->Set<System::String>(Tsk::WBS(), System::String(u"custom wbs") + tsk->Get(Tsk::WBS()));
23    }
24}

Adding WBS Code Definitions

Aspose.Tasks for C++ API allows adding WBS code definition for tasks to a project same as Microsoft Project.WBSCodeDefinition class exposes various properties that can be used to generate desired WBS codes in a project. The following code sample demonstrates setting up WBS code definitions in a project.

 1System::SharedPtr<Project> proj = System::MakeObject<Project>();
 2    
 3proj->set_WBSCodeDefinition(System::MakeObject<WBSCodeDefinition>());
 4proj->get_WBSCodeDefinition()->set_GenerateWBSCode(true);
 5proj->get_WBSCodeDefinition()->set_VerifyUniqueness(true);
 6proj->get_WBSCodeDefinition()->set_CodePrefix(u"CRS-");
 7    
 8System::SharedPtr<WBSCodeMask> mask = System::MakeObject<WBSCodeMask>();
 9mask->set_Length(2);
10mask->set_Separator(u"-");
11mask->set_Sequence(Aspose::Tasks::WBSSequence::OrderedNumbers);
12proj->get_WBSCodeDefinition()->get_CodeMaskCollection()->Add(mask);
13    
14mask = System::MakeObject<WBSCodeMask>();
15mask->set_Length(1);
16mask->set_Separator(u"-");
17mask->set_Sequence(Aspose::Tasks::WBSSequence::OrderedUppercaseLetters);
18proj->get_WBSCodeDefinition()->get_CodeMaskCollection()->Add(mask);
19    
20System::SharedPtr<Task> tsk = proj->get_RootTask()->get_Children()->Add(u"Task 1");
21System::SharedPtr<Task> child = tsk->get_Children()->Add(u"Task 2");
22    
23proj->Recalculate();
24proj->Save(dataDir + u"AddWBSCodes_out.xml", Aspose::Tasks::Saving::SaveFileFormat::XML);

Renumber WBS codes

Aspose.Tasks for C++ API is able to renumber WBS codes similar to MSP’s “Renumber” function.

 1auto project = System::MakeObject<Project>(dataDir + u"RenumberExample.mpp");
 2    
 3auto tasks = project->get_RootTask()->SelectAllChildTasks();
 4    
 5System::Console::WriteLine(u"WBS codes before: ");
 6    
 7// output: ""; "1"; "2"; "4"
 8    
 9{
10    auto task_enumerator = (tasks)->GetEnumerator();
11    decltype(task_enumerator->get_Current()) task;
12    while (task_enumerator->MoveNext() && (task = task_enumerator->get_Current(), true))
13    {
14        System::Console::WriteLine(System::String(u"\"") + task->Get(Tsk::WBS()) + u"\"" + u"; ");
15    }
16}
17    
18// project.RenumberWBSCode(); // this overload could have used too
19project->RenumberWBSCode([&]{ int32_t init_0[] = {1, 2, 3}; auto list_0 = System::MakeObject<System::Collections::Generic::List<int32_t>>(); list_0->AddInitializer(3, init_0); return list_0; }());
20    
21System::Console::WriteLine(u"\nWBS codes after: ");
22    
23// output: ""; "1"; "2"; "3"
24    
25{
26    auto task_enumerator = (tasks)->GetEnumerator();
27    decltype(task_enumerator->get_Current()) task;
28    while (task_enumerator->MoveNext() && (task = task_enumerator->get_Current(), true))
29    {
30        System::Console::WriteLine(System::String(u"\"") + task->Get(Tsk::WBS()) + u"\"" + u"; ");
31    }
32}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.