To customize an Object in DOORS, you must specify attributes for each object individually. The following outlines a few examples of how an object is specified.

  • When you specify the Object Heading attribute value for an object, the object is recognized as a Topic.
  • When you specify the Object Text attribute value for an object, the object is recognized as a Requirement.

A custom attribute can be used to identify a variety of requirement types in DOORS. However, that could be difficult when you have multiple objects to customize.

In Cameo DataHub, the Define Target Type option is provided while mapping to customize a module or node. However, that could be difficult when it must be done for every module or when there are multiple attributes to filter.

Using the JSON configuration, you can collectively customize DOORS objects to have multiple types. You can even import the custom-created JSON configuration file in Cameo DataHub. With JSON configuration you can write the configuration, as follows:

  • (ObjectHeading=blank)+(ObjectType="Req") = Requirement
  • (ObjectHeading=blank)+(ObjectType=”ExtReq”) = Extended Requirement
  • (ObjectHeading=blank)+(ObjectType=”Physical”) = Physical Requirement
  • (ObjectHeading not blank)+(ObjectType="Topic") = Topic


To import the configuration file


  1. Right-click the parent node that you want to recursively apply the type configuration.
  2. Select Customize Module/Object data type.
  3. Select Import configuration. 



When the configuration file is imported, the DataHub tree will refresh.


Copy Data with Sync dialog showing only modules and object nodes

Copy Data with Sync dialog showing customized nodes after importing JSON configuration

Custom type definition JSON:

{
	"custom_types" : [ 
		<Type definition JSON>,
		<Type definition JSON>
	]
}


Type definition JSON: 

{
	"type_name": "<type name>",
	"doors_type": "Project | Module | Object",
	"type_icon": "Project | Module | Object | <icon name in XML>",
	"type_condition": <Value condition JSON>,
	"init_doors_values": {
		"<attr name>": "<attr value>",
		"<attr name>": "<attr value>",
		"<attr name>": "<attr value>"
	}
}


Value condition JSON:

{
	"value_condition": {
		"attr_name": "<attr name>",
		"condition": "= | != | > | >= | < | <= | contains | before | after | regex",
		"attr_value": "<attr value>"
	}
}
{
	"all_match" : [
		<Value condition JSON>,
		<Value condition JSON>,
		<Value condition JSON>
	]
}
{
	"any_match" : [
		<Value condition JSON>,
		<Value condition JSON>,
		<Value condition JSON>
	]
}
{
	"not_match" : [
		<Value condition JSON>,
		<Value condition JSON>,
		<Value condition JSON>
	]
}


Sample configuration:

{
	"custom_types": [
		{
			"type_name": "Topic",
			"doors_type": "Object",
			"type_icon": "Object",
			"type_condition": {
				"all_match": [
					{
						"value_condition": {
							"attr_name": "Object Heading",
							"condition": "!=",
							"attr_value": ""
						},
						"value_condition": {
							"attr_name": "Object Type",
							"condition": "=",
							"attr_value": "Topic"
						}
					}
				]
			},
			"init_doors_values": {
				"Object Type": "Topic"
			}
		},
		{
			"type_name": "Requirement",
			"doors_type": "Object",
			"type_icon": "Object",
			"type_condition": {
				"all_match": [
					{
						"value_condition": {
							"attr_name": "Object Heading",
							"condition": "=",
							"attr_value": ""
						},
						"value_condition": {
							"attr_name": "Object Type",
							"condition": "=",
							"attr_value": "Req"
						}
					}
				]
			},
			"init_doors_values": {
				"Object Type": "Req"
			}
		},
		{
			"type_name": "Extended Requirement",
			"doors_type": "Object",
			"type_icon": "Object",
			"type_condition": {
				"all_match": [
					{
						"value_condition": {
							"attr_name": "Object Heading",
							"condition": "=",
							"attr_value": ""
						},
						"value_condition": {
							"attr_name": "Object Type",
							"condition": "=",
							"attr_value": "ExtReq"
						}
					}
				]
			},
			"init_doors_values": {
				"Object Type": "ExtReq"
			}
		},
		{
			"type_name": "Physical Requirement",
			"doors_type": "Object",
			"type_icon": "Object",
			"type_condition": {
				"all_match": [
					{
						"value_condition": {
							"attr_name": "Object Heading",
							"condition": "=",
							"attr_value": ""
						},
						"value_condition": {
							"attr_name": "Object Type",
							"condition": "=",
							"attr_value": "Physical"
						}
					}
				]
			},
			"init_doors_values": {
				"Object Type": "Physical"
			}
		}
	]
}