IF声明未评估为真

时间:2016-10-21 10:23:27

标签: nxbre

<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>

我运行了rulesEngine.RuleContext.GetResult("CustomFieldName").Result并且它等于XAGENTNAME但未将isValid变量设置为false。

为什么?

1 个答案:

答案 0 :(得分:1)

Equals中,您使用的是ID为XAGENTNAME但未声明的值。

尝试:

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