Page History
When creating your own Blueriq own Blueriq as a Service (BaaS), it is possible to include a justification tree in your response to the caller of the webservice. This tree explains how a certain attribute was derived by the inference engine and provides the justification texts.
To do this, you need the Custom Schema Element: AQ_JustificationTreeV2, which is part of the BlueriqBasicModelling Library. Justification trees can be added to SOAP responses and REST responses.
Adding a justification tree to the response of a REST webservice
Adding a justification tree to a REST message is straightforward: just add a custom schema element of type AQ_JustificationTreeV2 to the domain schema.
The message in the response of the Blueriq webservice could look like this:
Code Block | ||||
---|---|---|---|---|
| ||||
{
"Costs": 3000.0,
"AQ_JustificationTreeV2": {
"key": "Tax.AnnualAmount",
"values": [
{
"type": "number",
"value": 3000.0
}
],
"justification": [
{
"key": "AdditionalText",
"value": "Additional Justification tax statement."
},
{
"key": "Text",
"value": "A car that is over 60k has a high annual tax."
}
],
"used_values": [
{
"key": "Car.ModelYear",
"values": [
{
"type": "integer",
"value": 1993
}
],
"justification": null
},
{
"key": "Car.Value",
"values": [
{
"type": "number",
"value": 70000.0
}
],
"justification": null
}
]
}
} |
Adding a justification tree to the response of a SOAP webservice
custom schema element 'AQ_JustificationTree', which is part of the AquimaLibrary. If you open this schema element, you find under the 'XSD' tab the following XSD:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="http://aquima.com/schemas/justificationTreejustification/12.0" xmlns="http://aquima.com/schemas/justificationTree/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="justificationTree"> <xs:complexType> <xs:sequence> <xs:element ref="attribute" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:sequence>element> <xs:element name="attribute" type="attributeType"> </xs:complexType> <xs:attribute name="name" type="xs:string"/> </xs:element> <xs:complexType name="attributeType"> <xs:sequence> <xs:element name="value" minOccurs="0" maxOccurs="attributeunbounded" type="attributeTypevalueType"/> <xs:element name="justifications" minOccurs="1" maxOccurs="1" type="justificationsType"/> <xs:complexType name="attributeType"element ref="attribute" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:sequence>complexType name="valueType"> <xs:sequence> <xs:element name="valuetype" minOccurs="01" maxOccurs="unbounded1" type="xs:string"/> <xs:element name="justificationvalue" minOccurs="01" maxOccurs="1" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="justificationType"> <xs:sequence> <xs:element refname="attributejustification" minOccurs="0" maxOccurs="unbounded" type="xs:string"> <xs:attribute name="type" type="xs:string"/> </xs:element> </xs:sequence> </xs:complexType> </xs:schema> |
You need to make this XSD part this XSD part of the response of your AAASwebservice. The easiest way is to save the justification XSD in justification XSD in a separate file and use the <import> statement in your own XSDown XSD. After importing your WSDL/XSD with XSD with the justification tree in it, go to the Schema Set Editor corresponding Schema set and open the justification tree element.
Note |
---|
You have to make the justification XSD really part of your own WSDL/XSD. This means referring to it with an <import> statement and supplying this file together with your own WSDL during the import. |
You will see the following window:
- Choose AQ_JustificationTree. If it is not in the list, there is probably something wrong with the namespaces in your XSD.
- Choose the name of the entity of which you want to justify an attribute
- The attribute you want to justify.
- If you want to use a different asset format, you can specify this here. The default is 'Text'.
Note |
---|
The context of the justification is the WSDL module. This means that no justification is given when using a data-mapping, as the value is not derived with logic, but the value is set by the mapping. To solve this, you can (1) work with only 1 module without datamapping; this can get messy with complicated WSDLs/applications; or (2) duplicate the logic in your WSDL module; by placing the logic in a parent module both modules can inherit from it. |