RulesEngine icon indicating copy to clipboard operation
RulesEngine copied to clipboard

How to do nested if else

Open ying234 opened this issue 1 year ago • 3 comments

Is there way to do such nested if rules? Is there setting to make the parent rule expression also evaluated even if there are nested child rules?

if(loyaltyFactor > 4)
{
    if(totalOrder > 3)
    {
    ...
    }
   else
    {
    ...
    }
}
else
{
...
}
[
  {
    "WorkflowName": "Discount",
    "Rules": [
      {
        "RuleName": "GiveDiscount30NestedOrExample",
        "SuccessEvent": "30",
        "ErrorMessage": "One or more adjust rules failed.",
        "ErrorType": "Error",
        "Operator": "OrElse",
        "Rules": [
          {
            "RuleName": "ParentRule",
            "ErrorMessage": "One or more adjust rules failed.",
            "ErrorType": "Error",
            "RuleExpressionType": "LambdaExpression",
            "Operator": "OrElse",
            "Expression": "input1.loyaltyFactor > 4",
            "Rules": [
              {
                "RuleName": "SubHighLoyaltyLowNumberOrders",
                "ErrorMessage": "One or more adjust rules failed.",
                "ErrorType": "Error",
                "RuleExpressionType": "LambdaExpression",
                "Expression": "input2.totalOrders <= 3"
              },
              {
                "RuleName": "SubHighLoyaltyHighNumberOfTotalOrders",
                "ErrorMessage": "One or more adjust rules failed.",
                "ErrorType": "Error",
                "RuleExpressionType": "LambdaExpression",
                "Expression": "input2.totalOrders > 3"
              }
            ]
          },
          {
            "RuleName": "LowLayaltyHighNumberOfTotalOrders",
            "ErrorMessage": "One or more adjust rules failed.",
            "ErrorType": "Error",
            "RuleExpressionType": "LambdaExpression",
            "Expression": "input2.totalOrders > 15"
          }
        ]
      }
    ]
  }
]

ying234 avatar Jan 19 '24 01:01 ying234

Also hoping this issue can get fixed to make the Rules Engine much power useful.

jjrobinson avatar Jan 23 '24 03:01 jjrobinson

@ying234 complex scenarios can be enabled via actions such as evaluateRule and ExecuteActionWorkflowAsync . Please refer this example - https://microsoft.github.io/RulesEngine/#evaluaterule

abbasc52 avatar Jan 26 '24 15:01 abbasc52

@abbasc52 looks good for the evaluateRule. Thank you!

ying234 avatar Feb 05 '24 16:02 ying234