ГОСТ Р ИСО 10303-41—2022
END_IF;
х := QUERY(op <*
bag_to_set(USEDIN(relation.relating_organizational_project,
’PERSON_ORGANIZATION_SCHEMA.’ +
’ORGANIZATIONAL_PROJECT_RELATIONSHIP.’ +
’RELATED_ORGANIZATIONAL_PROJECT’)) |specific_relation IN
TYPEOF(op));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_organizational_project_relationship(x[i],
relatives + relation.relating_organizational_project,
specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между организацион
ными проектами объекта organizational_project_relationship;
relatives — (входной) набор представляющих организационные проекты объектов organization-
al_project. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута ге-
lating_organizational_project объекта organizational_project_relationship, играющего роль параметра
relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между организационными проектами объекта organizational_project_relationship.
20.5.4 Функция acyclic_person_type_definition_relationship
Функция acyclic_person_type_definition_relationship определяет, содержит ли образованный эк
земплярами представляющих определение типа действующего лица объектов person_type_definition
граф, содержащий в качестве одного из ребер объект person_type_definition_relationship, играющий
роль параметра relation, цепочку ссылок, образующую цикл. Настоящая функция может использовать
ся для обработки графа, ребра которого образованы объектами person_type_definition_relationship
или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между определениями типов сотрудников объект person_type_definition_relation-
ship, используется правило, обращающееся к настоящей функции.
EXPRESS-специФикация:
*)
FUNCTION acyclic_person_type_definition_relationship (relation :
person_type_definition_relationship; relatives :SET[0:?] OF
person__type_definition; specific_relation :STRING) :BOOLEAN;
LOCAL
x :SET OF person_type_definition_relationship;
END_LOCAL;
IF relation.relating_person_type_definition IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(ptdef <*
bag_to_set(USEDIN(relation.relating_person_type_definition,
203