在 Sparx Enterprise Architect 中,我试图记录一个包含类和属性的类模型(该模型存储在扩展名为 .qea 的单个文件中)。有些属性具有简单类型(例如 Flag),有些属性具有枚举类型。所有类型(简单类型和枚举类型)都在单独的数据类型类中建模。我的目标是生成一个列出以下内容的文档:
A级
属性A1
A1 类型(简单数据类型或枚举)
属性A2
A2 类型(简单数据类型或枚举)
...
如果类型是简单数据类型,我只需要类型的名称(例如 FLAG) 如果类型是枚举,我需要类型的名称和枚举详细信息(= 数据类型类的属性)。
为了解决这个问题,我创建了一个自定义模板,其中包含一个包含自定义 SQL 查询的自定义模板片段。
自定义模板“用户手册”
package >
element >
Class "{Element.Name}"
attribute >
Attribute "{Att.Name}"
Type: {Att.Type}
{Template - DataType}
< attribute
< element
< package
模板片段“DataType”
custom >
| Code | Description |
| ----------| ------------- |
| {Code} | {Description} |
< custom
模板片段选项\自定义查询\自定义 SQL 中的 SQL 查询
SELECT e.[Default] as Code, e.[Notes] as Description
FROM
t_attribute a
INNER JOIN
t_object o ON a.classifier = o.object_id
INNER JOIN
t_attribute e ON o.object_id = e.object_id
WHERE
a.object_id = #OBJECTID#
当我将包含许多属性的类(“假期”)拖放到文档中并应用上面的自定义模板“用户手册”时收到的结果:
Class "Holiday"
Attribute "{Att.Name}"
Type: {Att.Type}
Code Description
1 Full day
2 Morning
3 Afternoon
99 Other
自定义模板获取属性信息的正常功能似乎中断了。 “Holiday”类的众多属性均未列出。仅显示模板片段中的“holidayDurationType”的枚举详细信息,“holidayDurationType”是“Holiday”类中唯一具有数据类型 = 枚举的属性(所有其他属性都具有简单数据类型)。
你知道我在这里做错了什么吗?
我做了很多尝试才使其正常工作,并且还在 EA 论坛和 EA 在线手册中进行了搜索。
您无法在
attribute>
部分下添加模板片段,因为它们只能接受ObjectID、PackageID或DiagramID作为参数。
另一种方法是将整个属性部分作为模板片段提供,并将其添加到
element>
部分下。
这里的困难在于您想要显示每个属性的所有可能的枚举值及其描述。这使得查询变得更加复杂,因为您必须将枚举值和注释汇总到一行中。
可能的查询可能是
select a.Name, a.Notes as 'Description.Formatted'
,(select group_concat(CAST(ev.Name + ': ' + coalesce(ev.Notes, '') as text), char(10))
from t_object e
inner join t_attribute ev on ev.Object_ID = e.Object_ID
where e.Object_ID = a.Classifier
and e.Object_Type = 'Enumeration'
) as 'enums.Formatted'
from t_attribute a
where a.Object_ID = #OBJECTID#
您需要
.Formatted
来确保文档生成能够解释注释中的标记。
当您有很多枚举值时,需要使用 CAST as text
来避免截断。