使用DXL重新排序DOORS布局列中的文本

时间:2017-03-24 21:51:58

标签: ibm-doors

我已经看到这个问题要求数字,但我的布局列包含文本字符串。字符串没有固有的顺序,连接到对象的属性的可能值可以是,例如" apple"," orange"," banana" ,或者" kiwi"。我想要的列查找来自另一个模块的in-links,每个in-link可以为所讨论的属性提供多个值。最终,我希望订购价值"橙","香蕉"," kiwi"," apple"取决于每个链接对象具有的值。例如,如果链接对象包含全部4,那么您将获得完整订单的列表。如果它只有香蕉和苹果,你会返回该列的值" banana" ," kiwi"。对不起,我没有代码示例。此时它只是股票布局列DXL。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果你的真实世界真的和你的例子一样简单,那么只需要if语句的组合就足够了,比如(伪代码)

if linked_values contains "orange"
  display "orange\n"
if linked_values contains "banana"
  display "banana\n"

你有一个很好的,排序的值列表。

如果没有,您需要真正的排序。 DXL中的排序通常使用跳过列表来完成。当您遍历跳过列表时,您将按排序键的顺序获取值(请注意,键是唯一的,跳过列表中不能有两个具有相同键的对象)。 因此,您的任务是创建一个映射,为每个要存储的条目计算表示正确顺序的密钥和临时跳过列表。

如果我理解你的例子,你会有一个映射

  • orange:a
  • banana:b
  • kiwi:c
  • apple:d

我们假设每个对象可能有多个橙子,并且您想要列出所有这些橙色,因为您不仅要显示水果,还要显示大小或质量等属性。在这种情况下,您将创建如下的排序键:

对象1将对象与值相关联:第一个苹果(大),第二个苹果(小),猕猴桃(中),第三个苹果(大),橙色。这将产生以下跳过列表:

  • key:d001,value:apple(big)
  • key:d002,value:apple(small)
  • key:c003,value:kiwi(medium)
  • key:d004,value:apple(big)
  • key:a005,value:orange

如果你想先用水果排序,然后按大小排序,你用大小编码你的尺码:大,b:中,c:小,d:未定义,你会有像这样的键:

  • DA001
  • dc002
  • CB003
  • da004
  • ad005