(* SCHEMA step_ship_schema; *)
-- ONLY IN AP218
RULE approval_history_contains_approval_elements FOR (object_role,
applied_group_assignment);
LOCAL
t3_set : SET OF approval := [];
gr_ass_set : SET OF applied_group_assignment := [];
violation : LOGICAL := FALSE;
valid_items_set : SET OF approval_item := [];
t1_set : SET OF applied_approval_assignment := [];
first_runs : LOGICAL := TRUE;
END_LOCAL;
gr_ass_set := QUERY ( aga <* applied_group_assignment | ((aga.role.
name = 'approvals') AND ('approval history' IN which_class(aga.
assigned_group))) );
REPEAT i := 1 TO HIINDEX(gr_ass_set) BY 1 WHILE NOT violation;
t3_set := QUERY ( aga_item <* gr_ass_set[i].items | (
'STEP_SHIP_SCHEMA.APPROVAL' IN TYPEOF(aga_item)) );
REPEAT j := 1 TO HIINDEX(t3_set) BY 1;
t1_set := QUERY ( aga <* bag_to_set(USEDIN(t3_set[j],
'STEP_SHIP_SCHEMA.' +
'APPROVAL_ASSIGNMENT.ASSIGNED_APPROVAL')) | (aga.role.name =
'subject') );
REPEAT k := 1 TO HIINDEX(t1_set) BY 1;
IF first_runs AND (SIZEOF(t1_set[k].items) > 0) THEN
valid_items_set := t1_set[k].items;
first_runs := FALSE;
ELSE
REPEAT l := 1 TO HIINDEX(t1_set[k].items) BY 1;
violation := t1_set[k].items[l] :<>: valid_items_set[l];
END_REPEAT;
END_IF;
END_REPEAT;
END_REPEAT;
first_runs := TRUE;
END_REPEAT;
WHERE
wr1: (NOT violation);
END_RULE;
Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2007-09-24T12:42:21-04:00