Rhapsody java api - 如何将类对象模型图添加到类中?

时间:2017-07-06 08:21:10

标签: class diagram java-api rhapsody

我正在使用Rhapsody Java API创建一些插件以获得自动化功能。我正在尝试从类创建一个对象模型图,但是没有函数可以做到。

基本上我想做点什么:

IRPClass cla = prj.addClass("Class");
IRPObjectModelDiagram omd = cla.addObjectModelDiagram("My OMD");

但是,addObjectModelDiagram()函数对类不可用。 我尝试使用ChangeTo()将其转换为Pkg,然后将其转回类,但没有成功,并通过创建IRPClass支持的其他类型的图表然后将其转换为OMD来执行相同的操作。一个OMD。它没有用。

有没有人有解决方案来帮助我?

托马斯

2 个答案:

答案 0 :(得分:0)

托马斯,

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

javadoc for addNewAggr

答案 1 :(得分:0)

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

收集它们
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;
    }
 }
  1. 创建一个集合来收集它们。 (我只是添加了一个类作为例子。)

    IRPCollection packages = app.createNewCollection(); packages.setSize(3); packages.setModelElement(1,implObject); packages.setModelElement(2,association); packages.setModelElement(3,link); //假设你以前收集过它们。

  2. 确定在OMD中绘制的内容:

    IRPCollection relTypes = app.createNewCollection(); relTypes.setSize(2); relTypes.setString(1,“Link”); relTypes.setString(2,“Association”);

  3. 创建OMD

    IRPObjectModelDiagram testerOMD = testerPackage.addObjectModelDiagram(componentName +“_ Tester_OMD”);

  4. 填充图

    testerOMD.populateDiagram(packages,relTypes,“fromto”);