企业架构师——找到原型所有元素的最快方法
本文关键字:元素 方法 原型 企业 | 更新日期: 2023-09-27 18:18:53
我们使用c#中的方法来确定原型的所有元素,但是这非常慢:
public List<EA.Element> findElementsByStereotype(string stereotype){
List<EA.Element> result = new List<EA.Element>();
String xmlQueryResult = repository.SQLQuery(
"select obj1.object_id " +
"from t_object obj1 " +
"where obj1.stereotype = '" + stereotype + "';");
XmlDocument xml = Tools.XMLUtil.convertStringToXMLDocument(xmlQueryResult);
XmlNodeList xnList = xml.SelectNodes("/EADATA/Dataset_0/Data/Row");
foreach (XmlNode xn in xnList){
result.Add(repository.GetElementByID(Convert.ToInt32(xn.InnerText)));
}
return result;
}
你知道一个更高效的解决方案吗?
如果您想要更快,XML永远不是您的朋友。幸运的是,EA API提供了一种不同的方式来检索一组元素:Repository.GetElementSet()
,它从逗号分隔的元素id列表或SQL查询中返回EA.Element
的EA.Collection
。
public List<EA.Element> findElementsByStereotype(string stereotype) {
List<EA.Element> result = new List<EA.Element>();
foreach (EA.Element element in repository.GetElementSet("select Object_ID " +
"from t_object where Stereotype='" + stereotype + "'", 2)) {
result.Add(element);
}
return result;
}
请注意,我还没有验证这运行更快。我假设它会,但是GetElementSet()
有可能在本质上做与您在底层所做的相同的XML解析。但如果没有别的,它更短了。