Interface IRuleApi
Namespace: Casewhere.Runtime.DSL.Api
Assembly: Casewhere.Runtime.dll
Provides methods for working with rules.
public interface IRuleApi : IDslApi
Implements
Extension Methods
ObjectExtension.ConvertToBsonValue(object), EnumExtensions.DeepClone<IRuleApi>(IRuleApi)
Methods
Eval(string)
Evaluate a rule.
bool Eval(string ruleName)
Parameters
ruleName
string
Name of the rule.
Returns
Value return from rule expression
Examples
var ruleApi = ctx.Use<IRuleApi>();
ruleApi.Eval(ruleName);
Eval(string, IDictionary<string, object>)
Evaluate a rule with parameters.
bool Eval(string ruleName, IDictionary<string, object> parameters)
Parameters
ruleName
string
Name of the rule.
parameters
IDictionary<string, object>
Parameters to evaluate condition in rule.
Returns
Value return from rule expression
Examples
var ruleApi = ctx.Use<IRuleApi>();
var parameters = new Dictionary<string, object>();
parameters.Add("Username","tester");
var passed = ruleApi.Eval("Demo rule vs parameter", parameters);
Eval<T>(string)
Evaluate a rule.
T Eval<T>(string ruleName)
Parameters
ruleName
string
Name of the rule.
Returns
T
Value return from rule expression
Type Parameters
T
Return value type
Examples
var ruleApi = ctx.Use<IRuleApi>();
ruleApi.Eval<int>(ruleName);
Eval<T>(string, IDictionary<string, object>)
Evaluate a rule with parameters.
T Eval<T>(string ruleName, IDictionary<string, object> parameters)
Parameters
ruleName
string
Name of the rule.
parameters
IDictionary<string, object>
Parameters to evaluate condition in rule.
Returns
T
Value return from rule expression
Type Parameters
T
Return value type
Examples
var ruleApi = ctx.Use<IRuleApi>();
var parameters = new Dictionary<string, object>();
parameters.Add("Username","tester");
var passed = ruleApi.Eval<int>("Demo rule vs parameter", parameters);
Eval<T>(string, string, params RuleParameter[])
Evaluate a rule with parameters.
T Eval<T>(string ruleCacheKey, string ruleExpression, params RuleParameter[] parameters)
Parameters
ruleCacheKey
string
Name of the rule.
ruleExpression
string
Rule code expression.
parameters
RuleParameter[]
Array of RuleParameters needs to evaluate expression.
Returns
T
Value return from rule expression
Type Parameters
T
Return value type
Examples
var ruleApi = ctx.Use<IRuleApi>();
var dataApi = ctx.Use<IDataApi>();
var employee = dataApi.Load("CwUatEmployee/c83fe344-3ee6-4951-90e7-adfe006584ba");
var query = DataObjectApiQuery.For("CwUatEmployee").FilterBy(FilterBuilder.Create().Build());
query.Take = 10;
var queryResult = dataApi.Search(query);
var ruleParameters = new List<RuleParameter>()
{
new DataObjectRuleParameter("dataObj", employee),
new ScalarRuleParameter("number", " 12"),
new DataObjectListRuleParameter("dataObjList", queryResult.Data)
};
var result = ruleApi.Eval<string>(
"DynamicRuleKey",
@"#predicate
var obj1Names = dataObjList.Where(w => w.JobTitle == ""Recruiter"").Select(s => s.Name);
return dataObj.Name + number + "" names: "" + string.Join("","", obj1Names) ; ",
ruleParameters.ToArray()
);
EvalAccessMode(string, Dictionary<string, object>, AccessMode?)
Evaluate a rule with parameters and parent AccessMode.
AccessMode EvalAccessMode(string ruleName, Dictionary<string, object> parameters, AccessMode? parentAccessMode)
Parameters
ruleName
string
Name of the rule.
parameters
Dictionary<string, object>
Parameters to evaluate condition in rule.
parentAccessMode
AccessMode?
The parent AccessMode to evaluate condition in rule.
Returns
AccessMode
Return AccessMode of the rule.
Examples
var ruleApi = ctx.Use<IRuleApi>();
var parameters = new Dictionary<string, object>();
parameters.Add("Username","tester");
var parentAccessMode = AccessMode.Write;
var passed = ruleApi.EvalAccessMode("Demo rule with parameter and parentAccessMode", parameters, parentAccessMode);
if(passed == AccessMode.Read)
{
//To do something...
}
GetRules(string)
Get rules by type.
IList<DslRule> GetRules(string type)
Parameters
type
string
Type of rule.
Returns
Value return from rule expression
Examples
var ruleApi = ctx.Use<IRuleApi>();
ruleApi.GetRules(type);
GetRulesByProduct(string, string)
Get rules by product.
IList<DslRule> GetRulesByProduct(string productName, string type)
Parameters
productName
string
Name of product
type
string
Type of rule.
Returns
Value return from rule expression
Examples
var ruleApi = ctx.Use<IRuleApi>();
ruleApi.GetRulesByProduct(type, productName);