ГОСТ Р ИСО 10303-41—2022
’PERSON_ORGANIZATION_SCHEMA.’ +
’PERSON_TYPE_DEFINITION_RELATIONSHIP.’+
’RELATED_PERSON_TYPE_DEFINITION’)) |specific_relation IN
TYPEOF(ptdef));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_person_type_definition_relationship(x[i],
relatives + relation.relating_person_type_definition,
specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
"
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между определения
ми типов действующих лиц объекта person_type_definition_ relationship;
relatives — (входной) набор представляющих определения типов действующих лиц объектов
person_type_definition. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль
атрибута relating_person_type_ definition объекта person_type_definition_relationship, играющего
роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между определениями типа действующего лица объекта person_type_definition_re-
lationship.
20.5.5 Функция acyclic_position_in_organization_relationship
Функция acyclic_position_in_organization_relationship определяет, содержит ли образованный
экземплярами представляющих должности в организациях объектов position_in_organization граф,
содержащий в качестве одного из ребер объект position_in_organization_relationship, играющий роль
параметра relation, цепочку ссылок, образующую цикл. Настоящая функция может использоваться
для обработки графа, ребра которого образованы объектами position_in_organization_relationship
или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что в дру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение междудолжностями ворганизации объект position_in_organization_relationship, ис
пользуется правило, обращающееся к настоящей функции.
EXPRESS-спеииФикаиия:
*)
FUNCTION acyclic_position_in_organization_relationship (relation :
position__in_organization_relationship; relatives :SET[0:?] OF
position_in_organization; specific_relation : STRING) :BOOLEAN;
LOCAL
x : SET OF position_in_organization_relationship;
END_LOCAL;
IF relation.relating_position_in_organization IN relatives
THEN
RETURN (FALSE);
END_IF;
x := QUERY(piorg <*
bag_to_set (USEDIN(relation.relating_position_in_organization,
’PERSON ORGANIZATION SCHEMA.’ +
204