Delete Resource Assignments in the Schedule Using ITK

1 Core code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
std::vector<tag_t> oldAssignments;

tag_t schedule = NULLTAG;
ITK__convert_uid_to_tag("AUEAQYmgZv6QdD", &schedule);

tag_t summaryTask = TcUtil::askValueTag(schedule, "fnd0SummaryTask");
std::vector<tag_t> tasks = TcUtil::askValueTags(summaryTask, "child_task_taglist");
for (auto& task : tasks)
{
std::vector<tag_t> resourceAssignments = TcUtil::askValueTags(task, "ResourceAssignment");
for (const auto& resourceAssignment : resourceAssignments)
{
tag_t relation = TcUtil::findRelation(task, resourceAssignment, "ResourceAssignment");
oldAssignments.push_back(relation);
}
break;
}

TcUtil::deleteAssignments(schedule, oldAssignments);

A part of code in TcUtil:

1
2
3
4
5
6
void TcUtil::deleteAssignments(tag_t schedule, std::vector<tag_t> assignments)
{
ResultStatus ok;

LOGGER_ITK(SCHMGT_delete_assignments(schedule, (int)assignments.size(), assignments.data()));
}

It is necessary to include the schmgt/schmgt_bridge_itk.h and then call the SCHMGT_delete_assignments function.

Note the array here is passing a relation object, not a resource object, so after obtaining resources under a task, you alse need to get the relationship between the task and earch resource.

2 Test

Open a schedule and copy uid into code from url:

Copy UID

run test:

1
2
3
4
5
6
7
8
9
10
D:\Siemens\Teamcenter2506\bin>demo_delete_assignments.exe -u=james -p=james -g=dba
DEBUG - Call ITK_initialize_text_services(0)
DEBUG - Call ITK_init_module(usr, upw, ugp)
INFO - Login to Teamcenter success as james
DEBUG - Call AOM_ask_value_tag(object, propName.c_str(), &propValue)
DEBUG - Call AOM_ask_value_tags(object, propName.c_str(), &num, &values)
DEBUG - Call AOM_ask_value_tags(object, propName.c_str(), &num, &values)
DEBUG - Call GRM_find_relation_type(relationTypeName.c_str(), &relationType)
DEBUG - Call GRM_find_relation(primaryObject, secondaryObject, relationTypeOpt, &relation)
DEBUG - Call SCHMGT_delete_assignments(schedule, (int)assignments.size(), assignments.data())

Test Result