{"id":1603,"date":"2016-01-15T10:42:16","date_gmt":"2016-01-15T09:42:16","guid":{"rendered":"http:\/\/www.capri-soft.de\/blog\/?p=1603"},"modified":"2016-01-15T10:44:51","modified_gmt":"2016-01-15T09:44:51","slug":"ibm-doors-dxl-get-traceability-for-in-and-out-links-performance-check","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=1603","title":{"rendered":"IBM Doors DXL: Get Traceability for in- and out-links (Performance Check)"},"content":{"rendered":"<h1>Problem<\/h1>\n<h1>Approach &#8211; Ansatz<\/h1>\n<h1>Solution &#8211; L\u00f6sung<\/h1>\n<h2>L\u00f6sung 1<\/h1>\n<p>Braucht 7 Minuten auf Testmodul<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvoid collectBaselineInfo(Buffer buf, Skip skp)\r\n{ \r\n  Module m\r\n  Baseline b\r\n  ModName_ mn\r\n  for mn in skp do\r\n  {\r\n    m = read(fullName mn, false)\r\n    if ( !null m ) \r\n    {\r\n      buf += name(mn)\r\n      b = getMostRecentBaseline(m);\r\n      if ( !null b )\r\n      { \r\n        buf += ( &quot;, Baseline &quot; major(b) &quot;.&quot; minor(b) &quot;\\n&quot;)\r\n      }\r\n      else \r\n      { \r\n        buf += &quot;, Baseline 0.0\\n&quot;\r\n      }\r\n    }\r\n    close m\r\n  }  \r\n}\r\n\r\n\r\nstring getTraceability(Module m)\r\n{\r\n  Object o\r\n  Link l\r\n  ModName_ mn\r\n  Skip targetSkp = create\r\n  Skip sourceSkp = create\r\n  Buffer buf = create\r\n  \r\n  \/\/ Collect targetmodules and sourcemodules\r\n  for o in m do\r\n  {\r\n    for l in o -&gt; &quot;*&quot; do\r\n    {\r\n      mn = target l\r\n      put(targetSkp, mn, mn)\r\n    }\r\n    for mn in o &amp;lt;- &quot;*&quot; do\r\n    {\r\n      put(sourceSkp, mn, mn)\r\n    } \r\n  }\r\n  \r\n  buf += &quot;Out-Links\\n&quot;\r\n  collectBaselineInfo(buf, targetSkp)\r\n   \r\n  buf += &quot;\\nIn-Links\\n&quot;\r\n  collectBaselineInfo(buf, sourceSkp)\r\n  \r\n  string s = stringOf buf\r\n  delete buf\r\n  return s\r\n}\r\n\r\nModule m = current\r\nprint getTraceability(m)\r\n<\/pre>\n<h2>L\u00f6sung 2<\/h2>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nstring getTraceabilityForModule(Module m)\r\n{\r\n  Object obj;\r\n  Skip inLinkSkip=createString;\r\n  Skip outLinkSkip=createString;\r\n\t\r\n  filtering off;\r\n\t\r\n  for obj in m do\r\n  {\r\n    Link lnk;\r\n    for lnk in obj-&gt;&quot;*&quot; do\r\n    {\r\n      string tmn=fullName target(lnk);\r\n      Module openMod=read(tmn,false, true);\r\n      Baseline b = getMostRecentBaseline(openMod);\r\n      int majorBL=-1;\r\n      int minorBL=-1;\r\n\t\t\t\r\n      if(null b)\r\n      {\r\n        majorBL=0;\r\n        minorBL=0;\r\n      }\r\n      else\r\n      {\r\n        majorBL=major b;\r\n        minorBL=minor b;\t\t\r\n      }\r\n\t\t\t\t\r\n      outLinks=name(openMod) &quot;, Baseline &quot; majorBL &quot;.&quot; minorBL &quot;&quot;;\r\n\t\t\t\r\n      string dummy;\r\n      if(!find(outLinkSkip, outLinks, dummy))\r\n      {\r\n        put(outLinkSkip, outLinks, outLinks);\r\n      }\r\n    }\r\n\t\t\r\n    LinkRef lnkRef;\r\n    ModName_ otherMod = null;\r\n\t\t\t\r\n    for lnkRef in all(obj&amp;lt;-&quot;*&quot;) do \r\n    {\r\n      otherMod = module (sourceVersion lnkRef);\r\n      if (!null otherMod) \r\n      {\r\n        if ((!isDeleted otherMod) &amp;&amp; (null data(sourceVersion lnkRef))) \r\n\t{\r\n          load((sourceVersion lnkRef),false);\r\n        }\r\n      }\r\n    }\r\n\t\t\r\n    for lnk in obj &amp;lt;- &quot;*&quot; do \r\n    { \r\n      Object src = source lnk;\r\n\t\t\t\r\n      Baseline b = getMostRecentBaseline(module src);\r\n      int majorBL=-1;\r\n      int minorBL=-1;\r\n\t\t\t\r\n      if(null b)\r\n      {\r\n        majorBL=0;\r\n        minorBL=0;\r\n      }\r\n      else\r\n      {\r\n        majorBL=major b;\r\n        minorBL=minor b;\t\t\r\n      }\r\n\t\t\t\r\n      inLinks=name(module src) &quot;, Baseline &quot; majorBL &quot;.&quot; minorBL &quot;&quot;;\r\n\t\t\t\r\n      string dummy2;\r\n      if(!find(inLinkSkip, inLinks, dummy2))\r\n      {\r\n        put(inLinkSkip, inLinks, inLinks);\r\n      }\r\n    }\r\n  }\r\n\t\r\n  string gesamtAusgabe=&quot;&quot;;\r\n  bool isFirst=true;\r\n  bool hasOutLinks=false;\r\n  for myIterator in outLinkSkip do\r\n  {\r\n    string myKey = (string key(outLinkSkip));\r\n    string myValue = &quot;&quot;;\r\n\t\r\n    if(find(outLinkSkip , myKey, myValue))\r\n    {\r\n      if(isFirst)\r\n      {\r\n        gesamtAusgabe=gesamtAusgabe &quot;{\\\\b Out-Links }&quot; ;\r\n\tisFirst=false;\r\n      }\r\n\t\t   \r\n      gesamtAusgabe=gesamtAusgabe &quot;\\n&quot; myKey;\r\n      hasOutLinks=true;\r\n    }\r\n  }\r\n\t\r\n  \/\/ Ne Zeile zwischen machen\r\n  if(hasOutLinks)\r\n  {\r\n    gesamtAusgabe=gesamtAusgabe &quot;\\n\\n&quot;;\r\n  }\r\n\t\r\n  isFirst=true;\r\n\t\r\n  for myIterator in inLinkSkip do\r\n  {\r\n    string myKey = (string key(inLinkSkip));\r\n    string myValue = &quot;&quot;;\r\n\t\r\n    if(find(inLinkSkip , myKey, myValue))\r\n    {\r\n      if(isFirst)\r\n      {\r\n        gesamtAusgabe=gesamtAusgabe &quot;{\\\\b In-Links }&quot; ;\r\n\tisFirst=false;\r\n      }\r\n\t\t   \r\n      gesamtAusgabe=gesamtAusgabe &quot;\\n&quot; myKey\t   \r\n    }\r\n  }\r\n\t\r\n  delete outLinkSkip;\r\n  delete inLinkSkip;\r\n\t\r\n  return gesamtAusgabe;\r\n}\r\n<\/pre>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D1603&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Problem Approach &#8211; Ansatz Solution &#8211; L\u00f6sung L\u00f6sung 1 Braucht 7 Minuten auf Testmodul void collectBaselineInfo(Buffer buf, Skip skp) { Module m Baseline b ModName_ mn for mn in skp do { m = read(fullName mn, false) if ( !null m ) { buf += name(mn) b = getMostRecentBaseline(m); if ( !null b ) { &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=1603\" class=\"more-link\"><span class=\"screen-reader-text\">IBM Doors DXL: Get Traceability for in- and out-links (Performance Check)<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[22,19],"tags":[],"class_list":["post-1603","post","type-post","status-publish","format-standard","hentry","category-dxl","category-ibm-doors"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-pR","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1603"}],"version-history":[{"count":4,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1603\/revisions"}],"predecessor-version":[{"id":1609,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1603\/revisions\/1609"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}