我想测量模型中其他包中我的 EA 包的依赖性数量。
因此,我在 t_connector
上循环来识别记录,其中我的包中的元素是源,目标是其他包中的元素。
元素之间的关系一切正常,但包之间的关系不同:
我的包中的子包有时依赖于模型中的外部包。 不幸的是,t_connector 不存储此数据!
那么,包关系存储在哪里呢?
最佳答案
所有连接器都存储在t_connector
表中。但是,t_connector.Start_Object_ID
和 t_connector.End_Object_ID
中的引用引用的是 t_object.Object_ID
,而不是 t_package.Package_ID
.
在 EA 数据模型中,UML 包具有双重表示:t_package
中一行,t_object
中一行,其中 t_object.Object_Type = 'Package '
和 t_object.PDATA1 = t_package.Package_ID
。 (请注意,t_object.PDATA
列是字符串。)
严格来说,EA 中只有元素具有连接器。但 API 中的 Package
类隐藏了这一点,并允许您循环遍历包元素的连接器,就好像它们属于使用 Package.package 本身的包一样。 Connectors
集合 - 但如果您查看 Connector.ClientID
和 Connector.SupplierID
,您会发现两者都不匹配 Package.PackageID<您要循环其连接器的包的/code> 。
如果连接器从当前包运行到其他包,为了检索连接器的另一端,您需要做的是在存储库中查询元素 - 而不是package -- 带有连接器的客户端 ID,如
connectedPackageElement = Repository.GetElementByID(connector.ClientID)
好消息是包本身及其包元素都具有相同的名称。但是,如果您需要从包中提取更多信息,则需要发出另一个调用,例如
connectedPackage = Repository.GetPackageByID(connectedPackageElement.MiscData(0)
既然您说您正在“循环”连接器,我假设您正在使用 API 而不是发出 SQL 查询。但结构是一样的; t_object
对应于 Element
类,t_package
对应于 Package
类,t_connector
对应于 Element
类。 Connector
类。
关于dependencies - 包关系存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675960/