RULE unique_dimensional_location_constraint FOR (product_definition_shape, dimensional_location); LOCAL ssa : SET OF shape_aspect := []; bdl : BAG OF dimensional_location := []; pass : BOOLEAN := TRUE; END_LOCAL; REPEAT i := 1 TO SIZEOF (product_definition_shape) WHILE pass; bdl := []; ssa := bag_to_set(USEDIN(product_definition_shape[i], 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.' + 'SHAPE_ASPECT.' + 'OF_SHAPE')); REPEAT i := 1 TO SIZEOF (dimensional_location) WHILE pass; IF (dimensional_location[i]\shape_aspect_relationship.relating_shape_aspect IN ssa) AND (dimensional_location[i]\shape_aspect_relationship.name <> '') THEN bdl := bdl + dimensional_location[i]; END_IF; END_REPEAT; IF (SIZEOF(bag_to_set(bdl)) <> SIZEOF(bdl)) THEN pass := FALSE; END_IF; END_REPEAT; WHERE wr1: pass; END_RULE; -- unique_dimensional_location_constraint |
public class RUnique_dimensional_location_constraint public int rWr1(SdaiContext _context) public int run(SdaiContext _context, A_string violations) |