RULE version_history_has_exactly_one_assigned_group

(* SCHEMA step_ship_schema; *)
-- ONLY IN AP215/AP216/AP218
RULE version_history_has_exactly_one_assigned_group
FOR(applied_group_assignment, group);
  LOCAL
    t1_set:  SET OF group := [];
    set_1, set_2: SET OF applied_group_assignment := [];
    set_3: SET OF group_item := [];
    violate: LOGICAL := FALSE;
  END_LOCAL;

t1_set := QUERY(a <* group | VALUE_IN(WHICH_CLASS(a), 'version history'));

REPEAT i := 1 TO HIINDEX(t1_set) 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;

[Top Level Definitions] [Exit]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2007-09-24T12:42:22-04:00