Class RhapsodyJavaAPI-如何向类添加对象模型图?

Class RhapsodyJavaAPI-如何向类添加对象模型图?,class,diagram,java,rhapsody,Class,Diagram,Java,Rhapsody,我正在使用RhapsodyJavaAPI创建一些插件,以获得自动化功能。我试图从一个类中创建一个对象模型图,但是没有函数来实现它 基本上,我想做如下事情: IRPClass cla = prj.addClass("Class"); IRPObjectModelDiagram omd = cla.addObjectModelDiagram("My OMD"); 但是,addObjectModelDiagram()函数对类不可用。 我尝试对该类使用ChangeTo()将其转换为Pkg,然后将其转换

我正在使用RhapsodyJavaAPI创建一些插件,以获得自动化功能。我试图从一个类中创建一个对象模型图,但是没有函数来实现它

基本上,我想做如下事情:

IRPClass cla = prj.addClass("Class");
IRPObjectModelDiagram omd = cla.addObjectModelDiagram("My OMD");
但是,addObjectModelDiagram()函数对类不可用。 我尝试对该类使用ChangeTo()将其转换为Pkg,然后将其转换回类,但没有成功,并且通过创建IRPClass支持的其他类型的图,然后将其转换为OMD,对OMD执行相同的操作。它也不起作用

有人有办法帮我吗

托马斯

托马斯

IRPModelement有一个名为addNewAggr的通用“add”方法(参见下面的javadoc)。 一般来说,由于它的开放性,我只会在没有专用方法的情况下使用此方法。(并不是每种类型的元素都可以添加到其他类型的元素中,所以在使用时必须小心。但在本例中,您讨论的是可以在UI中完成的事情—向类中添加OMD,因此不应该有任何问题。)

托马斯

IRPModelement有一个名为addNewAggr的通用“add”方法(参见下面的javadoc)。 一般来说,由于它的开放性,我只会在没有专用方法的情况下使用此方法。(并不是每种类型的元素都可以添加到其他类型的元素中,所以在使用时必须小心。但在本例中,您讨论的是可以在UI中完成的事情—向类中添加OMD,因此不应该有任何问题。)


假设您已经创建了一个类, 1.确定要在OMD中使用的IRPModelements。即类、对象、链接、关联等。 2.您可以使用

implPackage.getNestedElementsByMetaClass("Class", 1); // 1 means one level, you can increase it if you have to go deeper nests.
IRPModelElement implClass = null;
for(int i = 1; i < numberOfClasses+1 ; i++) {
    elementInCollection = (IRPModelElement)classesOfImplPack.getItem(i);
    if( elementInCollection.getMetaClass().equals("Class") && elementInCollection.getDisplayName().equals(componentName+"_Class") )
    {
        implClass = elementInCollection;
        break;
    }
 }
implPackage.getnestedelementsbymetclass(“类”,1);//1意味着一个等级,如果你必须去更深的巢穴,你可以增加它。
irpmodelement implClass=null;
对于(inti=1;i
  • 创建一个集合来收集它们。(我刚刚添加了一个类作为示例。)

    IRPCollection packages=app.createNewCollection(); 包装。设置尺寸(3); packages.setModelElement(1,implObject); packages.setModelElement(2,关联); packages.setModelElement(3,链接); //假设您以前收集过它们

  • 确定OMD中要绘制的内容:

    IRPCollection relTypes=app.createNewCollection(); relTypes.setSize(2); relTypes.setString(1,“链接”); relTypes.setString(2,“关联”)

  • 创建OMD

    IRPObjectModelDiagram TesterRomd=testerPackage.addObjectModelDiagram(componentName+“_Tester_OMD”)

  • 填充图

    testerOMD.populateDiagram(包、关系类型、“fromto”)


  • 假设您已经创建了一个类, 1.确定要在OMD中使用的IRPModelements。即类、对象、链接、关联等。 2.您可以使用

    implPackage.getNestedElementsByMetaClass("Class", 1); // 1 means one level, you can increase it if you have to go deeper nests.
    IRPModelElement implClass = null;
    for(int i = 1; i < numberOfClasses+1 ; i++) {
        elementInCollection = (IRPModelElement)classesOfImplPack.getItem(i);
        if( elementInCollection.getMetaClass().equals("Class") && elementInCollection.getDisplayName().equals(componentName+"_Class") )
        {
            implClass = elementInCollection;
            break;
        }
     }
    
    implPackage.getnestedelementsbymetclass(“类”,1);//1意味着一个等级,如果你必须去更深的巢穴,你可以增加它。
    irpmodelement implClass=null;
    对于(inti=1;i
  • 创建一个集合来收集它们。(我刚刚添加了一个类作为示例。)

    IRPCollection packages=app.createNewCollection(); 包装。设置尺寸(3); packages.setModelElement(1,implObject); packages.setModelElement(2,关联); packages.setModelElement(3,链接); //假设您以前收集过它们

  • 确定OMD中要绘制的内容:

    IRPCollection relTypes=app.createNewCollection(); relTypes.setSize(2); relTypes.setString(1,“链接”); relTypes.setString(2,“关联”)

  • 创建OMD

    IRPObjectModelDiagram TesterRomd=testerPackage.addObjectModelDiagram(componentName+“_Tester_OMD”)

  • 填充图

    testerOMD.populateDiagram(包、关系类型、“fromto”)