Get a list of the data needed to reach a decision
Find out the next screen that should be displayed to reach a decision
Note that the rulebase used in the examples that follow can be located at:
examples\rulebases\compiled\SimpleBenefits.zip in the Oracle Policy Automation Runtime package.
When you send an Assess request to the Determinations Server it is possible that you may not have supplied enough information for the Determinations Server to return the known values for all the outcomes you have requested.
Any attribute outcomes that are unknown will have the <unknown-val /> element as their value. Note: If you are receiving unknown values for attributes when you do not expect them, check that you have not also specified the relevant attribute as an outcome in the Assess Request (see Important Note: do not set value and specify outcome style for same attribute).
Any inferred relationship outcomes that are unknown will have a state attribute, which indicates if the inferred relationship is known, unknown, or uncertain.
If an outcome is unknown, you can use a decision report to determine what data you need to provide in order for that outcome to become known.
The procedure for determining what data needs to be provided to reach a decision is a simple sequence:
In this example, we want to determine if the claimant is eligible for the low income allowance.
The initial request contains an outcome for eligible_low_income_allowance attribute, but no data at all. The unknown outcome style is “base-attributes”. This will give us a decision report with all the base attributes that we need to provide if the eligible_low_income_allowance is unknown. Because we are providing no data in the request, we expect it to be unknown.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<soapenv:Header/>
<soapenv:Body>
<typ:assess-request>
<typ:global-instance>
<typ:attribute id="eligible_low_income_allowance" known-outcome-style="value-only" unknown-outcome-style="base-attributes"/>
</typ:global-instance>
</typ:assess-request>
</soapenv:Body>
</soapenv:Envelope>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i18n="http://www.w3.org/2005/09/ws-i18n" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<SOAP-ENV:Header>
<i18n:international>
<i18n:locale>en_US</i18n:locale>
<i18n:tz>GMT+0800</i18n:tz>
</i18n:international>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<typ:assess-response>
<typ:global-instance>
<typ:attribute id="eligible_low_income_allowance" type="boolean" inferred="false">
<typ:unknown-val/>
<typ:decision-report report-style="base-attributes">
<typ:attribute-node id="dn:1" entity-id="global" instance-id="global" hypothetical-instance="false" attribute-id="claimant_income" type="currency" text="The claimant's annual income is unknown." inferred="false">
<typ:unknown-val/>
</typ:attribute-node>
<typ:attribute-node id="dn:2" entity-id="global" instance-id="global" hypothetical-instance="false" attribute-id="claimant_public_housing_client" type="boolean" text="Is the claimant a public housing client?" inferred="false">
<typ:unknown-val/>
</typ:attribute-node>
<typ:attribute-node id="dn:3" entity-id="global" instance-id="global" hypothetical-instance="false" attribute-id="claimant_date_of_birth" type="date" text="The claimant's date of birth is unknown." inferred="false">
<typ:unknown-val/>
</typ:attribute-node>
</typ:decision-report>
</typ:attribute>
</typ:global-instance>
</typ:assess-response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
From the response above, we can see that the attribute eligible_low_income_allowance is unknown, if we look at the decision report we can see that the reason why the outcome is unknown is because the three attributes claimant_income, claimant_public_housing_client and claimant_date_of_birth are unknown. If we provide these attributes in the next request the outcome should become known.
Note that the new request has values for claimant_income claimant_public_housing_client and claimant_date_of_birth.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types"> <soapenv:Header/> <soapenv:Body> <typ:assess-request> <typ:global-instance> <typ:attribute id="eligible_low_income_allowance" known-outcome-style="value-only" unknown-outcome-style="base-attributes"/> <typ:attribute id="claimant_public_housing_client"> <typ:boolean-val>true</typ:boolean-val> </typ:attribute> <typ:attribute id="claimant_income"> <typ:number-val>13000</typ:number-val> </typ:attribute> <typ:attribute id="claimant_date_of_birth"> <typ:date-val>1981-03-22</typ:date-val> </typ:attribute> </typ:global-instance> </typ:assess-request> </soapenv:Body> </soapenv:Envelope>
The response returns with the outcome eligible_low_income_allowance known and true.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i18n="http://www.w3.org/2005/09/ws-i18n" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<SOAP-ENV:Header>
<i18n:international>
<i18n:locale>en_US</i18n:locale>
<i18n:tz>GMT+0800</i18n:tz>
</i18n:international>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<typ:assess-response>
<typ:global-instance>
<typ:attribute id="eligible_low_income_allowance" type="boolean" inferred="true">
<typ:boolean-val>true</typ:boolean-val>
</typ:attribute>
<typ:attribute id="claimant_income" type="currency">
<typ:number-val>13000.0</typ:number-val>
</typ:attribute>
<typ:attribute id="claimant_date_of_birth" type="date">
<typ:date-val>1981-03-22</typ:date-val>
</typ:attribute>
<typ:attribute id="claimant_public_housing_client" type="boolean">
<typ:boolean-val>true</typ:boolean-val>
</typ:attribute>
</typ:global-instance>
</typ:assess-response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
When the decision may need to go through currently unknown relationships you should set the resolve-indecision-relationships to true, in the config section of the Assess operation. If this is set to true, the Determinations Server will look past the relationship to determine what other attributes or relationships might be needed. If it is not set, the Determinations Server will only tell you the relationship which is unknown
In this example we want to determine if the claimant is eligible for the teenage children allowance.
The initial request contains an attribute-outcome for eligible_teenage_allowance but no data at all. The unknown outcome style is “decision-report”. This will give us a full decision report when eligible_teenage_allowance is unknown. Because we are providing no data in the request, we expect it to be unknown.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<soapenv:Header/>
<soapenv:Body>
<typ:assess-request>
<typ:config>
<typ:resolve-indecision-relationships>true</typ:resolve-indecision-relationships>
</typ:config>
<typ:global-instance>
<typ:attribute id="eligible_teenage_allowance" known-outcome-style="value-only" unknown-outcome-style="decision-report"/>
</typ:global-instance>
</typ:assess-request>
</soapenv:Body>
</soapenv:Envelope>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i18n="http://www.w3.org/2005/09/ws-i18n" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<SOAP-ENV:Header>
<i18n:international>
<i18n:locale>en_US</i18n:locale>
<i18n:tz>GMT+0800</i18n:tz>
</i18n:international>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<typ:assess-response>
<typ:global-instance>
<typ:attribute id="eligible_teenage_allowance" type="boolean" inferred="false">
<typ:unknown-val/>
<typ:decision-report report-style="decision-report">
<typ:attribute-node id="dn:0" entity-id="global" instance-id="global" hypothetical-instance="false" attribute-id="eligible_teenage_allowance" type="boolean" text="Is the claimant eligible for the teenage child allowance?" inferred="false">
<typ:unknown-val/>
<typ:relationship-node id="dn:1" source-entity-id="global" source-instance-id="global" hypothetical-instance="false" target-entity-id="child" relationship-id="claimantschildren" state="unknown" inferred="false"></typ:relationship-node>
<typ:attribute-node id="dn:2" entity-id="child" instance-id="hypothetical_child" hypothetical-instance="true" attribute-id="child_teenager" type="boolean" text="Is the child a teenager?" inferred="false">
<typ:unknown-val/>
<typ:attribute-node id="dn:3" entity-id="child" instance-id="hypothetical_child" hypothetical-instance="true" attribute-id="child_age" type="number" text="The child's age is unknown." inferred="false">
<typ:unknown-val/>
</typ:attribute-node>
</typ:attribute-node>
</typ:attribute-node>
</typ:decision-report>
</typ:attribute>
</typ:global-instance>
</typ:assess-response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
From the response above, we can see that the attribute eligible_teenage_allowance is unknown, if we look at the decision report we can see that the reason why the outcome is unknown is because the relationship claimantschildren is unknown. Because we set resolve-indecision-relationships to true, the Determinations Server is also able to tell us that for all children that are targets of the relationship, we will also need to know the child’s age.
The new request has the claimants children linked to the claimant via the relationship claimantschildren. Each of the children has their age provided (child_age attribute).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<soapenv:Header/>
<soapenv:Body>
<typ:assess-request>
<typ:config>
<typ:resolve-indecision-relationships>true</typ:resolve-indecision-relationships>
</typ:config>
<typ:global-instance>
<typ:attribute id="eligible_teenage_allowance" known-outcome-style="value-only" unknown-outcome-style="decision-report"/>
<typ:entity id="child">
<typ:instance id="child1">
<typ:attribute id="child_age">
<typ:number-val>8</typ:number-val>
</typ:attribute>
</typ:instance>
<typ:instance id="child2">
<typ:attribute id="child_age">
<typ:number-val>11</typ:number-val>
</typ:attribute>
</typ:instance>
<typ:instance id="child3">
<typ:attribute id="child_age">
<typ:number-val>16</typ:number-val>
</typ:attribute>
</typ:instance>
</typ:entity>
</typ:global-instance>
</typ:assess-request>
</soapenv:Body>
</soapenv:Envelope>
With the input provided, we can see that the claimant is eligible for the teenage child allowance.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i18n="http://www.w3.org/2005/09/ws-i18n" xmlns:typ="http://oracle.com/determinations/server/10.4/rulebase/assess/types">
<SOAP-ENV:Header>
<i18n:international>
<i18n:locale>en_US</i18n:locale>
<i18n:tz>GMT+0800</i18n:tz>
</i18n:international>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<typ:assess-response>
<typ:global-instance>
<typ:attribute id="eligible_teenage_allowance" type="boolean" inferred="true">
<typ:boolean-val>true</typ:boolean-val>
</typ:attribute>
<typ:entity id="child" inferred="false">
<typ:instance id="child1">
<typ:attribute id="child_age" type="number">
<typ:number-val>8.0</typ:number-val>
</typ:attribute>
</typ:instance>
<typ:instance id="child2">
<typ:attribute id="child_age" type="number">
<typ:number-val>11.0</typ:number-val>
</typ:attribute>
</typ:instance>
<typ:instance id="child3">
<typ:attribute id="child_age" type="number">
<typ:number-val>16.0</typ:number-val>
</typ:attribute>
</typ:instance>
</typ:entity>
</typ:global-instance>
</typ:assess-response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
For information on finding out the next screen that should be displayed to reach a decision, refer to the Determine an Attribute's value topic.