我的问题与以下问题完全相同:如何在DXL中,在以前未加载的模块中,在传出链接的目标对象上迭代
但是关于传入链路。
我想使用传入链接的源对象,但模块中有以前未加载的对象。
我不想每次都打开和关闭模块,因为这会花费太多时间。我想打开它们一次,最后再把它们关上。
两种解决方案:
- 能够知道模块是否已经打开,这样我就不会再打开它了(DXL+中是否有"is_open"功能+将打开的模块列表存储在表中,并在最后全部关闭
或更好:
- 在循环开始之前,使用链接模块和目标模块的循环来查找数据库中可以链接到目标模块的所有模块。我把它们全部加载(即使它们之间没有链接。但这样我的脚本会更简单(。我该怎么做?我试过这样的方法:
ModName_ src_mod_linkset对于"中的src_mod_linkset;target_module"<-";链接模块名称";做{打印";测试";}
但在这种循环中,它不起作用,因为";target_module";应该是一个对象,而不是完整的模块。
https://www.ibm.com/mysupport/s/forumshome有很多关于这方面的信息。查询"Engineering Requirements Management DOORS" incoming links
将为您带来一些示例脚本。我更喜欢这种方法(如果data
为空,则load
为ModuleVersion(:https://www.ibm.com/mysupport/s/forumsquestion?language=de&id=0D50z00006HIDztCAH
关于";is_open":有一个循环for module in database
,它为您提供了所有打开模块的列表。您可能希望将所有打开的模块存储在Skip列表中脚本的星号处,并且在迭代传入模块时,检查是否必须在脚本末尾关闭该模块。
如果您计划在基线上运行脚本,我不会使用您的第二种方法,在此期间,链接模块中的链接集可能已被删除,因此您将无法在链接中获得所有可能的内容。无论如何,链接模块可以在数据库中的任何位置,而不一定在传入模块附近。