-
Notifications
You must be signed in to change notification settings - Fork 607
Closed
Description
F# and fsx files could be used to write a rule DSL using Computation Expressions, adding type safety and conciseness in the rules (without them having to be dynamic maybe) ?
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/computation-expressions
instead of json file
[
{
"WorkflowName": "Discount",
"Rules": [
{
"RuleName": "GiveDiscount10",
"SuccessEvent": "10",
"ErrorMessage": "One or more adjust rules failed.",
"ErrorType": "Error",
"RuleExpressionType": "LambdaExpression",
"Expression": "input1.country == \"india\" AND input1.loyaltyFactor <= 2 AND input1.totalPurchasesToDate >= 5000"
},
{
"RuleName": "GiveDiscount20",
"SuccessEvent": "20",
"ErrorMessage": "One or more adjust rules failed.",
"ErrorType": "Error",
"RuleExpressionType": "LambdaExpression",
"Expression": "input1.country == \"india\" AND input1.loyaltyFactor >= 3 AND input1.totalPurchasesToDate >= 10000"
}
]
}
]
have an .fs or .fsx file
open Rules.DSL
open Rules.Types
workflow {
name "discount"
rules [
rule {
name "GiveDiscount10"
expression <@@ fun (input : Rules.Types.MyRuleType) -> input.country = "india" && input.loyaltyFactor >= 3 && input.totalPurchasesToDate >= 100 @@>
}
]
}
PramodValavala-MSFT, pablito and hbulens
Metadata
Metadata
Assignees
Labels
No labels