The exact details of the run to be performed are contained within the configuration file (the file is not required to have an xml extension, but it is recommended for organizational purposes). Due to the relative complexity of this file compared to previous items in the guide, key lines will be explained in detail below. The exact format in which these lines should appear in the final file can be deduced easily by examining the configuration.xml file shipped with the product and located in the data folder.
The first four lines below are optional:
<threads value="1"/>
Specifies how many simultaneous execution threads should be used by the Data Source Connector to maximize performance. By default this is set to 4, but the appropriate value to use for each configuration is something that can only be identified through performance testing.
<run-limit value="2"/>
Specifies the number of “Data Sets” or “Assessments” that each thread should process before terminating. This element is designed for testing purposes, where it may not be practical to run the entire assessment. If omitted each thread will continue to run until the data source has been exhausted.
<unknown-value value="unknown-value" />
Specifies the text to represent attribute values that are unknown in a table. An unknown attribute value during determination would not set the attribute to a particular value. This is applicable for all attribute data types, even for a text type. The default value for this is “unknown_val”.
<uncertain-value value="uncertain-value" />
Specifies the text to represent attribute values that are uncertain in a table. An uncertain attribute value during determination would set the attribute to OracleUncertain.Instance. This is applicable for all attribute data types, even for a text type. The default value for this is “uncertain_val”.
<tables type="csv" delimiter=',' sequential="false" include-headers="false">
Contains details which apply to all tables to be used. The “delimiter” attribute is specific to CSV tables that define which character is used in the table to separate each value on a line. Common values for this are “,” or “\t” for comma and tab separated files respectively.
<table location="..\data\parent.csv" />
Each table appears as a separate element, with it’s location appearing as an attribute within that element.
<rulebase location="..\rulebase\output\child_toy.xml" global-table="parent" set-uncertain="true" />
Specifies three items:
Details the output format of the evaluation run.
Currently the only supported output type is csv, with the “location” attribute specifying a pre-existing folder where the csv output files should be placed, and "overwrite" attribute specifying whether the csv output should be replaced or not.
<attribute type="text" source-field="name" target-attr="parent_name"
source-table="parent" target-entity="global" output="false" />
<attribute type="boolean" source-field="child_id" source-table="child"
target-entity="child" output="true" ordinality="1"/>
Shown above are two attribute mappings, the former specifying an input attribute, and the latter an “unmapped” (data only) output attribute.
In the case of the latter attribute, it is important to note that output attributes can be sourced directly from the input data where required, and the target attribute omitted. It is also essential that all output attributes have an ordinality.
Note, that it is legal for an output attribute with the same ordinality and entity to appear twice in a configuration. The last mapping will override any before it.
<relationship source-table="parent" target-table="child" source-entity="global"
target-entity="child" type="1m" source-key="id" target-key="parent" name="children"
reverse-name="parent" />
Relationship mappings, relate Primary/Foreign Key pairs to the appropriate entity relationships within the rulebase. It is important that the name and reverse-name are the relationship IDs sourced from the compiled rulebase itself.
Note that multiple comma separated keys are supported where required.
<relationship source-table="child" target-table="pet" source-entity="child" target-entity="pet"
type="1m" source-key="id" target-key="childId" name="childspets" reverse-name="child_childspets_rev"
isContainment="true"/>
It is necessary to declare all containment relationships that are required to navigate the tables. The source-key and target-key attributes link the containing and contained entities, ensuring that the entity instances created will be in the correct order, starting from Global down to the last leaf entities. To distinguish a Containment relationship declaration, the isContainment attribute is set to true.