Hyperlink doors dxl-死链接列表

Hyperlink doors dxl-死链接列表,hyperlink,ibm-doors,Hyperlink,Ibm Doors,我喜欢dxl脚本,它可以让我列出死的内链接,即列出指向已删除对象的链接 我尝试过,如果有任何选择,在门,但找不到它 你能帮忙吗 谢谢我没有运行以下代码,这不是最佳效率,但它会让您开始: Link lnk ; for lnk in all obj->"*" do { ModuleVersion targetmv = targetVersion(lnk) Module targetmod = load(mv,false) Object targetobj = targe

我喜欢dxl脚本,它可以让我列出死的内链接,即列出指向已删除对象的链接

我尝试过,如果有任何选择,在门,但找不到它

你能帮忙吗


谢谢

我没有运行以下代码,这不是最佳效率,但它会让您开始:

Link lnk ; for lnk in all obj->"*" do
{
    ModuleVersion targetmv = targetVersion(lnk)
    Module targetmod = load(mv,false)
    Object targetobj = target(lnk)
    if((null targetobj) || (isDeleted targetobj)) { /*dead link*/ }
    close(targetmod)
    delete(targetmv)
}

我已经调查这个问题很长时间了,但我无法确定这个问题的原因,IBM也没有。标准做法应该是在软删除对象之前始终删除大纲链接,并确保在进行对象修改或链接修改时,当用户在共享编辑中打开模块并在节上锁定时,不要使用Administrative remove lock功能。这样做将有助于消除这个问题,但不能完全消除,因为它发生在allot,我还不能完全复制这个问题

找到死链接的最佳方法是使用targetAbsNo和sourceAbsNo,并检查源/目标对象中是否存在传入/传出匹配的AbsNo和模块。如果尝试将大纲链接目标设置为对象,DOORS将忽略此对象,并且它将找不到死链接,即(object targetobj=target(lnk))

如果对象尚未清除,您仍然可以通过在源对象上使用链接分析wizzard删除死链接,创建到具有死链接的对象的新链接,然后删除此链接并保存更改。如果带有死链接的对象已被清除,那么您的运气就不好了,我还没有找到一种方法来从不存在的对象中删除这种类型的链接。此外,您还需要了解具有死链接的未删除对象,这样就不会软删除/清除这些对象,并创建指向不存在对象的大纲链接问题

我是在脑后编写这段代码的,所以它还没有经过测试,也不会工作,但是您应该了解如何查找死链接。object()以及源模块和目标模块的命名不正确,我不记得打开目标模块时使用的确切语法,我目前无法访问文档,抱歉

复制粘贴到excel的结果,你会得到一个很好的电子表格

Object objSrc 
Link lnkTargetLink
Module modMain = read("/Project/YourModule", true, true) 
modMain = current
filtering off
showDeletedObjects true
Buffer bufDeadObjects = create
bufDeadObjects = "Error\tSource Object\tTarget Module\tTarget Object\n"
for objSrc in modMain do {
    for lnkTargetLink in all(objSrc -> "*") do {
         Module targetMod = target module lnkTargetLink //Incorrect syntax
         int intTargetAbs = targetAbsNo lnkTargetLink 
         showDeletedObjects (true)
         filtering off
         Object objTarget = object(intTargetAbs, targetMod) 
         if(null objTarget) {
               bufDeadObjects += "Target Object Does not Exist\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
         } else {
               Link lnkSourceLink
               bool boolFoundLink = false
               for lnkSourceLink in all(objTarget <- "*") do {
                    if(sourceAbsNo lnkSourceLink != intTargetAbs) continue
                    Module modSourceMod =  source module lnkSourceLink //Incorrect syntax
                    if(fullName modSourceMod != fullName targetMod ) continue
                    boolFoundLink = true
               }
               if(!boolFoundLink and isDeleted(objTarget)) {
                    bufDeadObjects += "DeadInlink on a Deleted Object\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               } else if (boolFoundLink and isDeleted(objTarget)){
                    bufDeadObjects += "Outlink to a Deleted Object\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               } else {
                    bufDeadObjects += "DeadOutlink\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               }
         }
    }
}
print stringOf (bufDeadObjects)
objectobjsrc
链接lnkTargetLink
Module modMain=read(“/Project/YourModule”,真,真)
modMain=电流
过滤掉
showDeletedObjects为true
缓冲区bufDeadObjects=创建
bufDeadObjects=“错误\t源对象\t目标模块\t目标对象\n”
对于modMain do中的objSrc{
对于lnkTargetLink中的所有(objSrc->“*”),请执行以下操作{
模块targetMod=目标模块lnkTargetLink//语法不正确
int intTargetAbs=targetAbsNo lnkTargetLink
showDeletedObjects(真)
过滤掉
对象objTarget=对象(intTargetAbs,targetMod)
if(空对象目标){
bufDeadObjects+=“目标对象不存在\t”sourceAbsNo lnkTargetLink“\t”fullName targetMod“\t”intTargetAbs“\n”
}否则{
链接lnkSourceLink
bool boolFoundLink=false

对于lnkSourceLink in all(对象目标
Edit>Purge all
将清除/删除所有已删除的对象,包括其所有死链接


请注意,执行此操作后无法取消删除。

这是一件很难测试的事情,因为当DOORS正常运行时,它不应允许用户删除具有传入链接的对象。您是否有一个示例,说明对象被删除但链接仍保留在后面?但当存在指向n的死链接时,这没有用关于删除的对象