在给定的视图上看不到模块列/属性的删除

时间:2019-04-26 11:07:49

标签: ibm-doors

我被赋予创建DXL脚本的任务。第一个问题是,即使我对DOORS本身有多年的经验,我也从未使用过DXL。我一直在网上冲浪以寻求有关我的特定问题的指导。我也有一些样本DXL脚本供参考。

我的新客户要求对于给定模块的每个视图(其中有许多视图),都将生成新的“精简”模块以反映每个视图。

通过“减少”,我的意思是这些新模块将不包含该视图实际不需要的任何内容,即列,属性等。这些新模块将仅具有单个视图。

所以,我所看到的前进方式是获取单个主模块的副本,每个视图一个,对这些副本进行重命名以反映给定的主模块/所需视图,然后在给定的副本模块中选择所需的视图然后删除该视图不需要的所有内容,例如可用的列,属性等。

如果我具有必需的DXL知识,这将很简单,我将尽我所能地尽快掌握。

如果可能的话,此脚本必须是通用的,并且能够在任何主模块副本上工作,以生成反映特定视图的关联“精简”模块。

客户的目标是定期使用该脚本进行View归档(我知道,这就是他们想要的方式)。

澄清

鉴于我原来的问题中的以下文字,对我认为需要的内容进行了一些澄清:

  

如果可能的话,此脚本必须是通用的,并且能够在任何主模块副本上工作,以生成反映特定视图的关联“精简”模块。

因此,假设在DXL脚本之外有十个主模块视图,我将复制主模块十次,重命名每个副本以反映十个视图中的每一个。除非您知道不同,否则这十个副本中的每一个都会反映出与主模块中相同的“绝对编号”,所以在那里没有问题吗?

因此,从第一个复制的模块开始,每个模块的名称均代表其最终代表的View,其View将从其可用的十个View中设置,与其标题相匹配。

然后,将针对该第一个副本模块运行单个通用DXL脚本,目的是删除该视图实际不需要的所有内容,即属性,列等。在脚本中是否需要某种清除命令前面提到的已删除项目?

然后,单个通用DXL脚本将从该复制模块中删除所有视图。运行脚本时生成的日志也需要捕获,但是我不确定是否应该从脚本内部完成(如果可能的话)还是作为脚本外部的单独手动任务完成。

然后,将使用相同的通用脚本针对其余九个复制的模块重复执行上述(缩进)过程。目的是为我们提供十个副本模块,每个模块反映十个可能的视图之一,每个仅包含该视图所需的属性,列等。

2 个答案:

答案 0 :(得分:1)

用这种方法创建模块的镜像并不是一件容易的事。想想关于“绝对数”。如果原始模块包含数字15(级别1),2000(级别2),1(级别1),则必须创建2000个对象,清除其中的1997个并将它们移动到正确的位置。 https://www.ibm.com/developerworks/community/forums/html/topic?id=43862118-113d-4eac-b3f1-21d3b73959d1上有一个“重复”工具尝试执行此操作,但是如此处所述,据说该脚本无法在所有情况下均正常工作。

因此,我宁愿使用“字符串clipCopy(项目i);字符串clipPaste(文件夹folderRef)”方法。应该更快,更不容易出错。但是:所有出站链接也将使用此方法进行复制,您可能必须在复制后将其删除,否则链接目标模块将有很多入站链接。

问题仍然不是那么容易解决,因为每个视图可能都有依赖于某些或其他属性的DXL列,并且它可能包含又依赖于其他属性的DXL属性。我怀疑是否有一种方法可以“动态”分析DXL代码并找出可能会删除的列。

也许完全不同的方法是可行的:打开每个视图并创建导出到Excel的方法,这样您将摆脱任何动态依赖项。然后将excel工作表重新导入到新的DOORS模块中。您仍然会遇到“绝对数”问题,但是也许可以达成协议,将拥有一个伪属性“原始绝对数”,而忽略“新”“绝对数”'

对于DXL初学者来说,这是一项艰巨的任务。...

更新:经过深思熟虑,也许您可​​能希望将这些方法结合起来

  • 与您的雇主达成协议,您将对绝对编号使用替代属性
  • 使用类似于Russel建议的循环,在创建对象时,请记住可能必须在其前身或同级对象的“下方”或“之后”创建对象
  • 对于DXL属性,不要复制DXL代码,而是复制对象的实际当前值
  • 为DXL列创建伪属性_并创建一个使用这些伪属性而不是原始值的新视图

答案 1 :(得分:0)

复制整个模块,然后删除该视图中未包含的所有内容,似乎比仅从每个特定视图复制所需的内容要糟糕。

我将以下内容作为您程序的概述:

for view in main module do {
    for column in view do {
        Find attribute for each column and store (possibly in a skip list?)
        Store name of column
    }
    create new module
    create needed types / attributes in new module
    create new view in new module

    for object in main module {
        create object in new module
        for attribute in main module {
            check if attribute is in new module {
                copy info from old object to new
            }
        }   
    }
}

对于y循环中的X循环,每一个都应在DXL参考手册中进行。

如果您需要更多帮助,请告诉我!