IBM DOORS Next Generation

The IBM DOORS Next Generation adapter supports extraction of traceability information from projects in an IBM DOORS Next Generation database. Objects in the database can be recognized as artifacts in YT and relations between these objects can be loaded as trace links in YT.

In the rest of this section, we will refer to „IBM DOORS Next Generation” as „DOORS NG”.

This adapter supports selection propagation from YT to DOORS NG, but not vice versa: double-clicking on a DOORS NG artifact in YT will display this artifact in a web browser.

Data access

The DOORS NG data access configuration specifies the DOORS NG database server to connect to.

Configuration

Open the YT configuration with the YT configuration editor, and add a new data access as described in section "Data accesses". Select IBM Doors Next Generation as data access type.

Supported keywords:

  • server – The DOORS NG server’s URL or the server’s IP address and port number
  • project – The project on the DOORS NG server from which YT will load artifacts and links

Sample configuration:

server "192.168.3.160:9443" project "MY_PROJECT"

In the example above, YT will connect to a DOORS NG database server at the IP address 192.168.3.160. The database must be listening on port 9443. YT will consider objects and links from the project MY_PROJECT.

When you first start YT with the adapter enabled, a dialog will ask you for a user name and password for the database login. You can store this information in Eclipse’s Secure Store such that you don’t need to re-enter it later.

You can also provide the login credentials as java system properties DOORS_NG_LOGIN_USER_NAME and DOORS_NG_LOGIN_PASSWORD. You can set these properties either directly via the the command line or in a configuration file that you specify with YT’s --properties command line option (see Executing YAKINDU Traceability in batch mode ). Alternatively, you can define environment variables with the same names.

Artifact type

The DOORS NG adapter allows for flexible artifact configuration to specify which artifacts YAKINDU Traceability should import from the DOORS NG data access.

Configuration

Open the YT configuration with the YT configuration editor, and add a new artifact type as described in section "Artifact types". Select your previously-configured DOORS NG data access in the Data access drop-down list.

Keywords

Supported keywords:

  • include objects if( cond1 cond2 …) – Defines a filter that decides which objects in the database YT should load as artifacts. Objects will be included only if they fulfill all of the given conditions cond1, cond2, etc. specified in the parentheses. Each condition includes one of the operators given below to compare the value of an object attribute against one or several strings. Please refer to the explanation below this keyword list for more details about how filtering works.
    • == and != – Checks if the attribute value matches a given string. If it does, == is fulfilled, otherwise != is fulfilled.
    • contains and !contains – Checks if the attribute value contains a given string. If it does, contains is fulfilled, otherwise !contains is fulfilled.
    • in and !in – Checks if the attribute value is in a given list of strings. If it does, in is fulfilled, otherwise !in is fulfilled.
  • map – Starts a mapping block. This is optional.
  • name – Defines the name of the artifacts.
  • valueOf( attributeName) – References the value of an object attribute with the name attributeName. It can be either a built-in attribute or a custom attribute.

To filter artifacts delivered by the data access, the include objects if( cond1 cond2) expression is used. It instructs the DOORS NG adapter to only consider objects as artifacts that satisfy all of the specified conditions. If the list of conditions is empty, all objects will be included as YT artifacts.

A condition is defined by the following syntax:

valueOf( attributeName ) operator value

Here,

  • operator is one of the boolean operators given in the list above, and
  • value is either
    • a literal string, like „foobar”, in case of ==, !=, contains, and !contains, or
    • a list of strings of the form ( str1 str2), in case of in or !in.

As attributeName, you can use the name of a custom attribute that you defined. You may also use the name of a predefined object attribute. You can get a list of the available names via content assist after valueOf( in the configuration editor.

Attributes of DOORS NG objects can have multiple values, while each custom attribute in YT can only have one value. Hence, multi-valued attributes of DOORS NG objects will be concatenated to a single string. As a separator of the individual values, ", " is used (a comma, followed by a single space). To indicate that the string value represents a multi-valued attribute, it is surrounded by brackets, i.e., [ and ]. For example, an attribute with the values One, Two, and Three will be converted to the string [One, Two, Three]. Note that this conversion also happens before YT performs any comparison that is defined in an include objects if condition.

Example:

include objects if(
	valueOf("Type") == "Feature"
	valueOf("Created On") !contains "2019"
	valueOf("Status") in ("Approved" "Draft")
)
name valueOf("Identifier") + ": " + valueOf("Title")

The example above will include DOORS NG objects as artifacts whose Type is Feature and whose Created On attribute does not contain the string 2019 and that have a Status of either Approved or Draft.

You can map attributes, too. Example:

include objects if(
	valueOf("Type") == "Feature"
	valueOf("Created On") !contains "2019"
	valueOf("Status") in ("Approved" "Draft")
)
name valueOf("Identifier") + ": " + valueOf("Title")
map{
	difficulty to valueOf("Difficulty")
	status to valueOf("Status")
}

This example expands the previous example. Here we are mapping two custom attributes to the values of the attributes Difficulty and Status of a DOORS NG object.

Version

An artifact’s version is used for suspicious links validation. The version of an artifact of this type is evaluated as a JSON-like concatenation of all artifact custom attribute values.

The DOORS NG adapter allows to specify which links YAKINDU Traceability should import from the DOORS NG data access. Make sure artifact types have been configured before.

Open the YT configuration with the YT configuration editor, and add a new link type as described in section "Configuring a link type".

Supported keywords:

  • link source is A|B – This optional statement specifies the link source in DOORS NG. If the configured project in DOORS NG contains a link from an object A to an object B, YT will usually (i.e., without link source statement) create a link from the artifact representing A to the artifact representing B. The statement link source is B turns this around: a DOORS NG link from A to B will be loaded as a link from the artifact for B to the artifact for A. You can specify link source is A, but this is equivalent to an empty configuration, because it just defines the default behavior.

Example:

link source is B

As discussed above, this effectively turns around the link direction when loading links from DOORS NG into YT.

Links of this link type will never become suspicious.