java - 使用 Enterprise Architect Java API 连接到 EA 的运行实例

标签 java enterprise-architect

我们正在对 EA 存储库中的数据进行一些自定义报告 - 即我们直接从存储库数据库中获取数据。问题是,我们还需要将绑定(bind)到指定元素的图表导出到单独的文件中——我正在试验使用 Java API 来做到这一点。我想知道我是否可以使用 api 连接到当前运行的 EA 实例,或者我是否需要启动一个新实例(这会显着降低速度)。

或者还有其他方法可以实现该目标吗?我是 EA 自动化界面的新手,所以我很感激任何提示。

最佳答案

似乎可以使用 JACOB 和这个 hack:

Java:

import java.lang.reflect.Constructor;
import org.sparx.App;
import com.jacob.activeX.ActiveXComponent;

public class TestJava {

public static void main(String[] args) throws Exception {
    ActiveXComponent c=ActiveXComponent.connectToActiveInstance ("EA.App");
    Constructor<?> appConstructor=Class.forName("org.sparx.App").getDeclaredConstructor(long.class);
    appConstructor.setAccessible(true);
    App app=(App)appConstructor.newInstance(c.m_pDispatch);
    app.GetRepository().GetConnectionString();
    System.out.println(app.GetRepository().GetPackageByGuid("{9C9D301B-B54D-44fb-898A-0412497D39AA}").GetName());
}

}

常规:

import org.sparx.App
import com.jacob.activeX.ActiveXComponent

ActiveXComponent c=ActiveXComponent.connectToActiveInstance ("EA.App")
println c.m_pDispatch
App app=new App(c.m_pDispatch);
println app.GetRepository().GetConnectionString()
println app.GetRepository().GetPackageByGuid("{9C9D301B-B54D-44fb-898A-0412497D39AA}").GetName()

关于java - 使用 Enterprise Architect Java API 连接到 EA 的运行实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496081/

相关文章:

c# - 用于获取特定元素类型可用的元素类型列表和字段的自动化 API

c# - Enterprise Architect 中图像的标签值

java - ScheduledExecutorService 的重新调度

javamelody 1.58 安全性在 tomcat8 中不起作用

java - spring @Transactional注解

c++ - 大型系统的 Enterprise Architect 类图

java - JDK 6 和 JDK 7 之间的有效时间戳差异

java - jmesa 将 html 呈现为文本

uml - 是否可以在 EA 类图中使用球窝表示法?

javascript - ScriptControl.AddCode 不执行代码?