从任务访问Enterprise Architect存储库

本文关键字:存储 Architect Enterprise 任务 访问 | 更新日期: 2023-09-27 18:27:06

我想要一个调度任务来执行EA应用程序并访问其存储库。

该任务并不取决于是否有登录用户。它无论如何都应该起作用。

只要有登录用户,该任务就可以工作,但如果没有登录用户,则不工作——然后我可以执行EA应用程序,但无法连接到其存储库。

以下代码片段打开EA应用程序,并连接其存储库:

//Open EA
ProcessStartInfo processInfo = new ProcessStartInfo(eaInstallationPath, eapModelPath);  
processInfo.Verb = "runas";
var process = Process.Start(processInfo);  
//Access repository
//problematic line: 
EA.App EAApplication = Microsoft.VisualBasic.Interaction.CreateObject("EA.App", "") as EA.App;  
EA.Repository repository = EAApplication.Repository; 
repository.OpenFile(path);  

我得到的错误是指有问题的行:
由于以下错误,检索CLSID为{67F4E0FA-46A7-4255-B084-69A9433D08C3}的组件的COM类工厂失败:80080005。

有什么想法吗?

从任务访问Enterprise Architect存储库

在没有用户登录的情况下从任务访问EA是一个已知的问题。许多人尝试过,但很少有人成功。

这是可能的,这篇来自利伯的白皮书应该能让你深入了解如何做到这一点。

好吧,就我一直在研究的主题而言,似乎不需要显式启动EA来连接到现有的存储库。RepositoryClass类似乎是在后台自动执行此操作的。

在EA文档(自动化和脚本->…提示和技巧)中,它说

•当您初始化一个新的存储库对象时,将执行企业架构师(EA.exe)过程的实例——该过程必须保持运行才能执行自动化任务;如果主窗口可见,您可以安全地将其最小化,但它必须保持运行

我的机器上的C#自动化示例包含一个片段,如下所示。

if( m_Repository == null ) {
    m_Repository = new EA.RepositoryClass();
    m_Repository.OpenFile(textBox1.Text);
}

在获得Repository对象之前,没有任何一行代码启动EA作为进程。