ГОСТ Р ИСО 10303-41—2022
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между способами вы
полнения действия объекта action_method_relationship;
relatives — (входной) набор представляющих способы выполнения действия объектов action_
directive. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута
relating объекта action_method_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между способами выполнения действия объекта action_method_relationship.
4.5.3 Функция acyclic_action_relationship
Функция acyclic_action_relationship определяет, содержит ли образованный экземплярами пред
ставляющих действие объектов action граф, содержащий в качестве одного из ребер объект action_re-
lationship, играющий роль аргумента relation, цепочку ссылок, образующую цикл. Настоящая функция
может использоваться для обработки графа, ребра которого образованы объектами action_relation-
ship или любыми подтипами этого объекта.
Функция возвращает значение TRUE (истина), если не было обнаружено циклов, в противном
случае функция возвращает значение FALSE (ложь).
Примечания
1 Алгоритм функции приведен в Е.2 (приложение Е).
2 Данная функция не используется в настоящей схеме. Определение функции приведено потому, что вдру
гих объединенных ресурсах стандартов серии ИСО 10303 и в прикладных протоколах, в которых используется
представляющий отношение между действиями объект action_method_relationship, используется правило, об
ращающееся к настоящей функции.
EXPRESS-спеииФикаиия:
*)
FUNCTION acyclic_action_relationship (relation :action__relationship; relatives
action; specific_relation :STRING) :BOOLEAN;
:SET[1:?] OF
LOCAL
x : SET
OF action_relationship;
END_LOCAL;
IF relation.relating_action IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(actn <* bag_to_set(USEDIN(relation.relating_action, ’ACTION_
SCHEMA.’ + ’ACTION_RELATIONSHIP.’ + ’RELATED_ACTION’)) |specific_relation IN
TYPEOF(actn));
REPEAT i := 1 TO HIINDEX(x);
IF NOT
acyclic_action_relationship(x[i], relatives + relation.relating_action,
specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определения параметров:
relation — (входной) проверяемый экземпляр представляющего отношение между действиями
объекта action_relationship;
relatives — (входной) набор представляющих распоряжения по выполнению действия объек
тов action. Функция проверяет, есть ли среди данного набора экземпляры, играющие роль атрибута
relating_action объекта action_relationship, играющего роль параметра relation;
specific_relation — (входной) полное квалифицированное наименование подтипа представляю
щего отношение между действиями объекта action_ relationship.
18