我在尝试检查OCL中的重复时面临挑战。在OCL中查找嵌套副本
下面是类图的简化:
+-----------+
|ChapterName|
+-----------+
^0..* chapterNames
|
^
V
+-------+ books 0..* +----+
|Catalog|<>------------>|Book|
+-------+ +----+
catalogs 0..*^ ^0..* books
| |
+----+ customers 0..* +--------+
|Shop|<>-------------->|Customer|
+----+ +--------+
用于每个类别的属性的声明如下:
- CHAPTERNAME
- 名称
- 目录
- 类别
问题: 我想检查是如果客户有重复的人名章任何书籍,这也属于目录中的一个特定的类别。
我还没有设法绕过逻辑。到目前为止,我所拥有的是:
context Shop
self.customers.books->select(cubks | cubks =
self.catalogs.books->select(cabks | cabks = cubks)->first())
...哪个应该从客户的目录中找到书籍。
问题:如何添加更多约束条件来解决上述问题?
另外。我在Eclipse中使用Eclipse,EMF和OCL控制台。