ГОСТ Р ИСО 10303-41—2022
IF relation.relating_product_definition_formation IN relatives
THEN
RETURN(FALSE);
END_IF;
x := QUERY(asr
<*
bag_to_set(USEDIN(relation.relating_product_definition_formation,
’PRODUCT_DEFINITION_SCHEMA.ALTERNATIVE_SOLUTION_RELATIONSHIP.RELATED_PRODUCT
DEFINITION_FORMATION’))
I specific_relation IN TYPEOF(asr));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_alternative_solution_relationship(x[i],
relatives +
relation.relating_product_definition_formation, specific_relation)
THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
(*
"
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между альтернатив
ными версиями изделия объекта alternative_solution_ relationship;
relatives — (входной) набор представляющих альтернативные версии изделия объектов product_
definition_formation. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль
атрибута relating_product_definition_ formation объекта alternative_solution_relationship, играющего
роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между альтернативными версиями изделия объекта alternative_solution_relationship.
21.5.2 Функция acyclic_product_category_relationship
Функция acyclic_product_category_relationship определяет, содержит ли образованный экзем
плярами категории изделий объектов product_category граф, содержащий в качестве одного из ре бер
объект product_category_relationship, играющий роль параметра relation, цепочку ссылок, об
разующую цикл.Настоящая функция может использоваться для обработки графа, ребра которого
образованы объектами product_category_relationship или любыми подтипами этого объекта. Функция
возвращает значение TRUE (истина), если не было обнаружено циклов, в противном случае функция
возвращает значение FALSE (ложь).
Примечание — Алгоритм функции приведен в Е.2 (приложение Е).
EXPRESS-спеииФикация:
*)
FUNCTION acyclic_product_category_relationship (relation :
product_category_relationship; children : SET OF product_category)
:BOOLEAN;
LOCAL
x : SET OF product_category_relationship;
local_children : SET OF product_category;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(children);
IF relation.category :=: children[i]
THEN
RETURN(FALSE);
END_IF;
END REPEAT;
224