(* SCHEMA ship_structures_schema; *)
RULE version_history_has_exactly_one_assigned_group FOR (
applied_group_assignment, group);
LOCAL
violate : LOGICAL := FALSE;
t1_set : SET OF group := [];
set_1 : SET OF applied_group_assignment := [];
set_3 : SET OF group_item := [];
set_2 : SET OF applied_group_assignment := [];
END_LOCAL;
t1_set := QUERY ( a <* group | VALUE_IN(which_class(a),
'version history') );
REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violate;
set_1 := QUERY ( b <* applied_group_assignment | ((b.assigned_group
= t1_set[i]) AND (b.role.name = 'current version')) );
set_2 := QUERY ( c <* applied_group_assignment | ((c.assigned_group
= t1_set[i]) AND (c.role.name = 'members')) );
violate := (SIZEOF(set_1) <> 1) OR (SIZEOF(set_2) <> 1);
IF NOT violate THEN
set_3 := set_1[1].items * set_2[1].items;
violate := (SIZEOF(set_3) <> 1) OR (NOT VALUE_IN(which_class(set_3
[1]),'versionable object'));
END_IF;
END_REPEAT;
WHERE
wr1: (NOT violate);
END_RULE; -- version_history_has_exactly_one_assigned_group
Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:17:03-04:00