在基于EMF模型的应用中经常会有这样的需求:
当一个模型对象被一个特定的对象引用后,就不可以再被其他的对象引用。如何获取一个模型被那些其他模型引用了这个信息呢?
当然一种解决方案是在建模的时候,把引用设成双向的。然而这样会造成一定的冗余,使你的模型稍显臃肿和复杂。其实如果你是用EMF来表示你的模型,通过EMF提供的API可以获得所有引用某个model的model列表:
代码如下:
EObject referencedModel = getReferencedModel(); // 被引用的对象
List adapters = referencedModel .eAdapters(); //获得所有与对象关联的adapter
for(Iterator it = adapters.iterator();it.hasNext();) {
Object obj = it.next();
// if the adapter is cross reference adapter
if(obj instanceof CrossReferenceAdapter) {
Set refs = null;
// 返回所有引用referencedModel的对象
refs = ((CrossReferenceAdapter) obj).getInverseReferencers(referencedModel, null,null);
}
}
方法getInverseReferencers()的参数参考EMF API.
分享到:
相关推荐
`EObject`是所有模型对象的基类,`EClass`用于定义模型的类,`EAttribute`和`EReference`则分别表示模型中的属性和引用关系。 3. **资源管理**:`Resource`接口是EMF中用于处理模型存储的关键,它可以加载和保存...
- `Resource`对象包含了一个或多个`EObject`,这些对象对应于XML中的元素,可以通过遍历这些对象来访问XML数据。 5. **解析和操作XML** - 解析后的XML数据以EMF对象的形式存在,可以直接操作这些对象,例如修改...
该类提供了一些基本的方法,如`getSource()`用于获取事件源对象。 2. **事件监听器(Event Listener)**:事件监听器是一个实现了特定接口的对象,这些接口通常继承自`java.util.EventListener`接口。当事件发生时,...
- **事件**:通常继承自`java.util.EventObject`类,用于封装事件源对象及与事件相关的其他信息。例如,在一个按钮点击事件中,事件对象可能包含按钮的状态变化等信息。 示例代码如下: ```java public class ...
通过阅读这些文档,开发者可以学习如何创建、操作和序列化EMF模型,以及如何将模型转换为代码或者从代码反向生成模型。 EMF的核心组件包括: 1. **Ecore**: Ecore是EMF的基础元模型,它定义了基本的数据结构,如类...
这些库包括EObject接口,它是所有EMF对象的基类,以及ECore、EDataType等关键类。 5. **模型转换**:Model-to-model (M2M)转换是EMF的重要特性,它允许模型在不同的抽象层次之间转换,或者在不同的DSL之间转换。EMF...
在Qt框架中,`QGraphicsItem`是图形用户界面(GUI)编程中的一个重要类,用于在`QGraphicsView`或`QGraphicsScene`中绘制和管理图形对象。当我们需要实现可交互的图形元素,如按钮、图像或者自定义形状时,`...
这些库提供了一系列的API,例如`ResourceSet`,`Resource`,`EObject`等,用于处理模型的生命周期。 5. **例子和测试**:项目可能包含一些示例代码,演示如何使用EMF创建、读取、更新和删除(CRUD)模型对象。此外...
在GEF中,适配器通常用于将模型对象转换为视图对象。 7. **手势(Gesture)**: 手势是用户与图形元素交互的方式,如鼠标点击、拖拽等。GEF通过`CommandStack`和`DirectEditManager`来处理这些手势。 **例子中的关键...
它提供了创建、存储、交换和操作复杂的对象模型的能力。在EMF中,UUID(Universally Unique Identifier)是一种可确保每个实例在全球范围内唯一标识的方式。启用UUID对于模型的版本控制、合并和序列化特别有用,因为...
- `Model`: 存储图形元素的数据模型,可能包含`EObject`的子类,用于表示图形对象。 - `EditParts`: 这些是负责绘制和编辑图形元素的类,每个EditPart对应一个模型元素。 - `Commands`: 实现具体编辑操作的命令类,...
1. **理解EMF**: 首先,你需要熟悉EMF的基本概念,如EObject、EClass、EReference和EAttribute等,这些都是构建模型的基础元素。此外,理解Ecore模型的生命周期和数据绑定机制也是必要的。 2. **学习GMF工具链**: ...
3. **Component Model**:E4的组件模型基于EObject,这是EMF(Eclipse Modeling Framework)的一部分。开发者可以创建自定义的模型元素,这些元素代表UI组件或业务逻辑,实现了UI与业务的解耦。 4. **Event ...
3. **EMF框架**:熟悉EMF的基本概念,如Ecore模型、EClass、EObject等,以及如何使用EMF API创建和操作模型。 4. **模型转换**:掌握模型转换的基本步骤,包括源模型的读取、转换规则的执行和目标模型的生成。 5. ...