RULE version_history_has_exactly_one_assigned_group

(* SCHEMA ship_moulded_form_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

[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:16:47-04:00