Enterprise Architect 代码生成:获取接口标签
Posted
技术标签:
【中文标题】Enterprise Architect 代码生成:获取接口标签【英文标题】:Enterprise Architect Code Generation: Get tags of interface 【发布时间】:2021-12-12 16:53:54 【问题描述】:我使用 Enterprise Architect 进行代码生成,我想自动检索一个类实现的接口的所有标签(在我的例子中是 Java 注释)。考虑以下示例:
从这个模型中,我想生成一个如下所示的类:
@AnnotationOfMyInterface
public class MyClass
...
所以我想将注释作为标签添加到MyInterface
,在代码生成期间应该应用到MyClass
。在 UI 中,显示了已实现接口的标签,所以我希望有一种方法可以在代码生成期间获取这些标签。
我尝试编辑代码生成模板并找到宏来获取
-
类实现的所有接口:
%list="ClassInterface" @separator=", "%
具有给定名称的所有标签(正在为其生成代码的类):%classTag:"annotations"%
但不幸的是,我无法组合这些宏,也就是说,我无法将一个接口传递给classTag
宏,以便我可以检索该特定接口的标签(而不是我正在为其生成代码的那个)。有没有办法获取特定类/接口的类标签?
我还尝试创建一个单独的代码生成模板并从主类代码生成模板中“调用”它。但在我的模板中,classTag
宏仍然只能获取类的标签。
【问题讨论】:
我不确定这里是否有人在使用 EA 的代码生成。我没有,Geert 可能也没有。所以也许你应该在 Sparx 的论坛上问这个问题(带有这个问题的链接)。 几年前我不得不修改现有模板,但如果可能的话,我会尽量远离他们。有一些 Sparx 员工似乎非常了解这个话题,但他们通常只经常访问 Sparx 用户论坛。 @qwerty_so, Geert Bellekens:谢谢你们,我会在 EA 的论坛上碰碰运气。这仅用于概念证明。所以一旦我知道这在一般情况下是可能的,我会“尽可能远离”^^。到目前为止,摆弄模板并不是我所说的有趣或有益的。 是的,同样的故事。一般来说,我发现代码生成不像我以前想的那样那有用。我使用 API 来创建运行良好的代码。但现在我知道代码应该保留在代码中,并在 UML 中进行设计。唯一有用的桥梁(对我来说)是当您重新编写一些现有代码时。无论如何祝你好运! 【参考方案1】:感谢上面的 cmets,尤其是因为我在 EA 论坛上的问题得到了回答,我能够设置一些概念证明来实现我想要的。我正在回答我的问题以记录我的解决方案,以防将来有人遇到类似问题。
根据 Eve 在 EA 论坛中的提示,我考虑为 Enterprise Architect 创建一个插件,以便从代码生成模板中使用此插件。我首先编写了一个基本的插件,正如@Geert Bellekens 在this tutorial 中所解释的那样。之后我更改了插件以满足我的需要。这就是我最终获得类实现的接口的标记值(注释)的方式:
第一步: 在代码生成模板中,我获取了一个类实现的所有接口并将它们传递给我的 AddIn:
$interfaces=%list="ClassInterface" @separator=", "%
%EXEC_ADD_IN("MyAddin","getInterfaceTags", $interfaces)%
第二步: 正如here 记录的那样,存储库对象与 EXEC_ADD_IN 调用一起传递。我使用存储库对象并使用 $interfaces 中包含的名称查询所有接口。然后我可以获取每个界面元素的标记值。为单个接口实现此目的的简单原型:
public Object getInterfaceTags(EA.Repository repo, Object args)
String[] interfaceNames = args as String[];
String firstInterfaceName = interfaceNames[0];
EA.Element interfaceElement = repo.GetElementsByQuery("Simple", firstInterfaceName).GetAt(0);
String tag = interfaceElement.TaggedValues.GetAt(0);
return interfaceElement.Name + " has tag value" + tag.Value;
我知道,有几个缺点,但这只是一个简单的概念证明,用于一个很可能永远不会成为生产代码的想法。
【讨论】:
以上是关于Enterprise Architect 代码生成:获取接口标签的主要内容,如果未能解决你的问题,请参考以下文章
用Enterprise Architect从源码自动生成类图
Enterprise Architect 安装出现如下错误,求解答
enterprise architect关闭文件后再打开看不见图标了怎么办