如何从Java获取Archi中的元素和关系?

如何从Java获取Archi中的元素和关系?,java,eclipse,plugins,Java,Eclipse,Plugins,我正在尝试为Archi()开发一个插件,我需要计算给定模型中的元素和关系。我试着用这个元素,但我不知道这是否是更好的选择 //Get the objects in the model for(IDiagramModelObject diagramModelObj: this.getDiagramModel().getChildren()){ searchElementsRecursively(diagramModelObj, elements); } //Recursive functi

我正在尝试为Archi()开发一个插件,我需要计算给定模型中的元素和关系。我试着用这个元素,但我不知道这是否是更好的选择

//Get the objects in the model
for(IDiagramModelObject diagramModelObj: this.getDiagramModel().getChildren()){
   searchElementsRecursively(diagramModelObj, elements);
}

//Recursive function to get the enclosed objects (If an object has objects) 
private void searchElementsRecursively(IDiagramModelObject diagramModelObj, Set<EObject> elements) throws Exception{
  if(diagramModelObj instanceof DiagramModelArchimateObject){
     DiagramModelArchimateObject archimateObject = ((DiagramModelArchimateObject)diagramModelObj);

     for(IDiagramModelObject diagramModelObjChild: archimateObject.getChildren()){
        searchElementsRecursively(diagramModelObjChild, elements);
     }

     elements.add(DiagramModelUtil.getModelElement(diagramModelObj));
  }
//获取模型中的对象
对于(IDiaGrammodeObject diagramModelObj:this.getDiagramModel().getChildren()){
快速搜索元素(diagramModelObj,元素);
}
//获取封闭对象的递归函数(如果对象有对象)
私有void searchElementsRecursively(IDiaGrammodeObject diagramModelObj,Set elements)引发异常{
if(DiagrammodelChimateObject的diagramModelObj实例){
DiagramModelArchimateObject archimateObject=((DiagramModelArchimateObject)diagramModelObj);
对于(IDiaGrammodeObject diagramModelObjChild:archimateObject.getChildren()){
快速搜索元素(diagramModelObjChild,元素);
}
add(DiagramModelUtil.getmodelement(diagramModelObj));
}
}

但我不知道如何对感情做同样的事?如何获取模型中的所有关系


提前谢谢

现在回答这个问题可能太晚了,当然这个问题在Archi论坛上会更好

给定“model”的IArchimateModel实例,您可以迭代所有模型内容:

    for(Iterator<EObject> iter = model.eAllContents(); iter.hasNext();) {
        EObject eObject = iter.next();

        if(eObject instanceof IRelationship) {
            relations.add((IRelationship)eObject);
        }
        else if(eObject instanceof IArchimateElement) {
            elements.add((IArchimateElement)eObject);
        }
    }
for(迭代器iter=model.eAllContents();iter.hasNext();){
EObject=iter.next();
if(eObject instanceof IRelationship){
添加((IRelationship)对象);
}
else if(IArchimateElement的对象实例){
元素。添加((IArchimateElement)EOObject);
}
}