Каждый, кто занимался разработкой приложений с помощью ECO задавался вопросом, а как же сделать какой-нибудь атрибут сущности уникальным. В модели нет такого свойства атрибута.
Ответ лежит на поверхности. Ограничения задаются с помощью OCL. Для этого достаточно описать constraint на самой сущности. Например, ограничение, проверяющее уникальность имени у Customer:
Customer.AllInstances->select(name.sqlLikeCaseinsensitive(self.name))->exсluding(self)->size=0
есть несколько моментов на которые надо обратить внимание.
1. Нужно не запутаться с применение Self
2. OCL выражение в ограничении должно возвращать тип boolean
3. Ограничение НЕ проверяется автоматически. Где и когда проверять ограничения - дело разработчика
No comments:
Post a Comment