Робота з WBS, пов'язаними з завданнями

Коди WBS (структура розбиття роботи), дозволяє призначити складові номери завданням відповідно до потреб вашого бізнесу. Це метод застосування індивідуальної схеми контуру до проекту. Aspose.Tasks для C ++ API підтримує цю функцію.

Робота зі структурою поломки роботи

Властивості WBS та WBSLEVEL, викриті класом TSK, використовуються для читання та запису структури роботи роботи завдань.

Перегляд проекту Microsoft WBS

Для перегляду інформації WBS в Microsoft Project:

  1. У формі запису завдань виберіть меню вставити, а потім стовпчик.
  2. Додайте стовпчик WBS.

Отримати WBS in aspose.tasks

Наступні приклади показують, як отримати значення WBS завдання за допомогою aspope.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.