ГОСТ Р ИСО 10303-41—2022
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между распоряжени
ями по выполнению действиями объекта action_directive_relationship;
relatives — (входной) набор представляющих распоряжения по выполнению действия объектов
action_directive. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атри
бута relating объекта action_directive_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа, представля
ющего отношение между распоряжениями по выполнению действиями объекта action_directive_rela-
tionship.
4.5.2 Функция acyclic_action_method_relationship
Функция acyclic_action_method_relationship определяет, содержит ли образованный экземпля
рами представляющих способы выполнения действия объектов action_method граф, содержащий в
качестве одного из ребер объект action_method_relationship, играющий роль аргумента relation, це
почку ссылок, образующую цикл.Настоящая функция может использоваться для обработки графа,
ребра которого образованы объектами action_method_relationship или любыми подтипами этого
объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что вдру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между способами выполнения действия объект action_method_relationship, исполь
зуется правило, обращающееся к настоящей функции.
EXPRESS-спеииФикация:
*)
FUNCTION acyclic_action_method_relationship (relation :
action_method_relationship; relatives :SET[1:?] OF action_method;
specific_relation :STRING) :BOOLEAN;
LOCAL
x :SET OF action_method_relationship;
END_LOCAL;
IF relation.relating_method IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(am <* bag_to_set(USEDIN(relation.relating_method, ’ACTION_
SCHEMA.’ + ’ACTION_METHOD_RELATIONSHIP.’ + ’RELATED’)) |specific_relation IN
TYPEOF(am));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_action_method_relationship(x[i], relatives + relation.
relating_method, specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
17