public List<SchemaError> execute(SchemaTypes schemaType,
			List<SchemaElement> nodes, Change change) {

		Set<Rules> ruless = ruleDefn.getRulesOn(schemaType, change);
		List<SchemaError> errors = new ArrayList<SchemaError>();
		if (nodes != null) {
			for (Rules rules : ruless) {
				for (SchemaElement item : nodes) {

					Set<RuleSet> ruleSets = rules.getRulesSets();
					if (ruleSets != null) {
						for (RuleSet ruleSet : ruleSets) {
							boolean ruleVal = evaluateRuleSet(ruleSet, item,
									change);
							if (ruleVal) {
								SchemaError shemaError = (SchemaError)Factory.getFactory().getDataObject(Factory.ObjectTypes.SchemaError);
								shemaError.setError(ruleSet.getError());
								if (item.getElement() != null) {
									shemaError.setEntityName(item
											.getElementName());
								} else if (item.getRefElement() != null) {
									shemaError.setEntityName(item
											.getElementName());
								}
								errors.add(shemaError);
							}
						}
					}
				}

			}
		}
		return errors;

	}