如何在PowerDesigner存储库中使用VB脚本获取扩展属性值

2020-08-27 00:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在尝试编写一个脚本,该脚本将...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试编写一个脚本,该脚本将扫描PowerDesigner信息库中的逻辑数据模型并使用GetExtendedAttribute检索特定扩展属性的值而没有成功,变量始终为空。

我正在使用以下功能:

 Sub GetAttributes(curEntity)',其中curEntity是当前正在扫描的实体
    ExtAttr =" PMI LDM Formatting.LOV"'LOV是布尔类型
    对于curEntity.ChildObjects中的每个curAttr
       如果curAttr.ClassName ="实体属性",则
          输出curAttr.name&"-"&curAttr.ClassName
          x = curAttr.GetExtendedAttribute(ExtAttr,1)
          输出x
       万一
    下一个
 结束

我花了一些时间尝试查找有关如何从PowerDesigner存储库检索扩展属性值的示例,但没有成功。

使用的版本是16.6 SP04。

欢迎任何提示

帕斯卡

4条回答
CJones
2020-08-27 01:27

嗨乔治,

感谢您的回答。 它非常适合打开的模型。 我想做的是直接扫描存储库。 不幸的是,存储库对象而非实体不存在Attributes集合(至少我没有找到它)。 存储库中仅存在对象集合,而当我运行scipt时,x始终为空。 我的整个脚本看起来像这样

昏暗的存储库,已连接,ScanDefined,ScanFolder,ScanAll
 设置存储库= RepositoryConnection
 ScanDefined =真
 ScanFolder ="测试"
 ScanAll =假
 已连接=存储库。已连接
 如果没有连接的话
    已连接= repository.Open()
 万一
 如果连接了
    '开始递归扫描
    ScanRepository存储库
    '刷新资源库浏览器
    刷新库
 其他
    日志信息
    MsgBox"存储库需要连接,或者默认连接应该可操作"
 万一
 '扫描文件夹并提取模型的递归程序
 子ScanRepository(文件夹)
    '检查参数
    如果文件夹为空
       退出子
    万一
    '在输出中记录消息
    如果folder.name = ScanFolder和ScanDefined,则
       输出"扫描文件夹" + folder.Name
    万一
    '子文件夹上的递归调用
    '昏暗的子对象
    对于folder.ChildObjects中的每个子对象
       递归或提取存储库子包
       如果subObject.IsKindOf(PdRMG.Cls_RepositoryFolder)然后
          ScanRepository子对象
       其他
          如果subObject.IsKindOf(PdRMG.Cls_RepositoryModel)和folder.name = ScanFolder和ScanDefined,则
             输出" Extracting"&subObject.name&"-"&subObject.ClassName
             对于subObject.ChildObjects中的每个curEnt
                如果curEnt.ClassName =" Entity",则
                   输出curEnt.name&"-"&curEnt.ClassName&"-"&curEnt.Stereotype
                   GetAttributes当前
                万一
             下一个
             'ScanModel子对象
          万一
       万一
    下一个
 结束子
 子ScanModel(模型)
    对于model.ChildObjects中的每个子对象
       递归或提取存储库子包
       如果subObject.IsKindOf(PdRMG.cls_RepositoryPackage)然后
          ScanModel子对象
       其他
          如果subObject.ClassName =" Entity"和ScanAll,则
             输出subObject.name&"-"&subObject.ClassName&"-"&subObject.Stereotype
          elseif subObject.ClassName =" Entity"和subObject.Stereotype ="参考数据",则
             输出subObject.name&"-"&subObject.ClassName&"-"&subObject.Stereotype
          万一
       万一
    下一个
 结束子
 子GetAttributes(curEntity)
    对于curEntity.ChildObjects中的每个curAttr
       如果curAttr.ClassName ="实体属性",则
          输出curAttr.name&"-"&curAttr.ClassName
          x = curAttr.GetExtendedAttribute(" PMI LDM格式。[LOV]")
          输出x
       万一
    下一个
 结束

对于扩展属性以外的所有信息,它都可以正常工作。

欢呼声

帕斯卡

一周热门 更多>