nxbre

IF statement not evaluating as true


<xBusinessRules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xBusinessRules.xsd">

<ObjectLookup id="Applicant" objectId="Args" member="Applicant"/>
<ObjectLookup id="CustomValues" objectId="Applicant" member="CustomValues"/>
<ObjectLookup id="ValidationErrors" objectId="Args" member="ValidationErrors"/>
<Boolean id="IsValid" value="True"/>

<ForEach id="CustomField" valueId="CustomValues">
    <ObjectLookup id="Field" objectId="CustomField" member="Field"/>
    <ObjectLookup id="CustomFieldName" objectId="Field" member="Key"/>
    <ObjectLookup id="CustomFieldValue" objectId="CustomField" member="Value"/>
    <Logic>

        <If>      
            <And>   
                <Equals leftId="CustomFieldName" rightId="XAGENTNAME">          
                </Equals>                   
            </And>       
            <Do>
                <Modify id="IsValid" value="False" type="Boolean"/>
                <ObjectLookup objectId="ValidationErrors" member="Add">
                    <Argument value="Custom_XAGENTNAME" type="String"/>
                    <Argument value="Pick a sales broker plz" type="String"/>
                </ObjectLookup>  
            </Do>         
        </If>
    </Logic>
</ForEach>

I have ran a rulesEngine.RuleContext.GetResult("CustomFieldName").Result and it does equal to XAGENTNAME but won't set the isValid variable to false.

why?


Solution

  • In Equals, you are using a value with ID XAGENTNAME but you do not declare it.

    Try with:

    <Equals leftId="CustomFieldName" rightId="XAGENTNAME">
        <String id="XAGENTNAME" value="XAGENTNAME" />
    </Equal>