Table of Contents

Interface IRuleApi

Namespace: Casewhere.Runtime.DSL.Api
Assembly: Casewhere.Runtime.dll

Provides methods for working with rules.

public interface IRuleApi : IDslApi

Implements

IDslApi

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

bool

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

bool

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

IList<DslRule>

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

IList<DslRule>

Value return from rule expression

Examples

var ruleApi = ctx.Use<IRuleApi>();
ruleApi.GetRulesByProduct(type, productName);