如何在 OCL 中创建 Group by?

问题描述

我在Person部门之间有关联,我想检查Person.function是否唯一

Person.allInstances->isUnique(function)

但我想检查功能是否对同一部门的人员而不是所有人之间是唯一的。我可以有相同的职能,但不能在同一个部门。 我不知道如何为每个部门使用 isUnique(按部门分组的人员)。

解决方法

如果您有一个要应用 isUnique 的范围,则将该范围收集为源。也许作为 Department.persons->isUn​​ique(function)。 (这正是您无论如何都应该应用的方法,以避免尽可能使用通常过于强大和低效的 allInstances()。)