如何在Sparx Enterprise Architect中的自定义文档中的相应属性下添加枚举?

问题描述 投票:0回答:1

在 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”类中唯一具有数据类型 = 枚举的属性(所有其他属性都具有简单数据类型)。

Class
Enum of Attribute

你知道我在这里做错了什么吗?

我做了很多尝试才使其正常工作,并且还在 EA 论坛和 EA 在线手册中进行了搜索。

enterprise-architect
1个回答
0
投票

您无法在

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
来避免截断。

© www.soinside.com 2019 - 2024. All rights reserved.