FUNCTION class_assignment_is_valid
(aia : applied_classification_assignment) : BOOLEAN;
LOCAL item: classification_item; role: classification_role; END_LOCAL;
role:= aia\classification_assignment.role; IF ('CLASSIFICATION_WITH_ATTRIBUTES_MIM.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN IF(role\classification_role.name <> 'class system membership') THEN RETURN(FALSE); END_IF; REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); item:= aia\applied_classification_assignment.items[i];
IF (SIZEOF(['CLASSIFICATION_WITH_ATTRIBUTES_MIM.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN -- item invalid IF item does NOT belong TO the types that may have a class_system RETURN(FALSE); END_IF; END_REPEAT; END_IF;
IF ('CLASSIFICATION_WITH_ATTRIBUTES_MIM.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN IF NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN RETURN(FALSE); END_IF;
REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); item:= aia\applied_classification_assignment.items[i];
IF (SIZEOF(['CLASSIFICATION_WITH_ATTRIBUTES_MIM.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN -- item invalid IF item does NOT belong TO the types that may have a characterized_class RETURN(FALSE); END_IF; END_REPEAT; END_IF;
IF (role\classification_role.name = 'definitional') THEN IF NOT (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT (SIZEOF(['PRODUCT_DEFINITION_SCHEMA.PRODUCT', 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_FORMATION', 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1) )) = 0 ) THEN RETURN(FALSE); END_IF; END_IF;
RETURN(TRUE); END_FUNCTION; -- class_assignment_is_valid
|