A case-based approach to scheduling constraints