How to access IContext in .rul file!

218 views
Skip to first unread message

Rupesh Bhurke

unread,
Aug 29, 2018, 6:51:29 AM8/29/18
to NRules Users
I am trying to test NRules dynamic rules loading from a text file. I am stuck at a place. I dont understand how can we access IContext in dynamic rules file. We need to add Validation Error Objects in Context.

Kindly advice.

Rupesh

Rupesh Bhurke

unread,
Aug 29, 2018, 6:57:39 AM8/29/18
to NRules Users
An example rule file will be appreciated!

Sergiy Nikolayev

unread,
Aug 29, 2018, 9:33:21 PM8/29/18
to NRules Users
This is not yet supported in the rules language. I added an issue to track this: https://github.com/NRules/NRules.Language/issues/3

Rupesh Bhurke

unread,
Sep 1, 2018, 7:11:30 AM9/1/18
to NRules Users
Ok! Thank you!

Rupesh Bhurke

unread,
Sep 1, 2018, 8:03:37 AM9/1/18
to NRules Users
Hi Sergiy,

I was trying to work around the problem.

So I created following rul file.

using Domain;

rule "User ID Validation"
when
    var user = User(u => string.IsNullOrWhiteSpace(u.UserID));
    
then
//user.Errors.Add(new ValidationError2("User ID is invalid!"));
Console.WriteLine("Fired");


If uncomment  user.Errors.Add line! I get following exception:

Unhandled Exception: NRules.RuleSharp.CompilationException: Unsupported expression. ExpressionType=object creation
   at NRules.RuleSharp.ExpressionParser.VisitPrimary_expression(Primary_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 144
   at NRules.RuleSharp.RuleSharpParser.Primary_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2661
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitUnary_expression(Unary_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 244
   at NRules.RuleSharp.RuleSharpParser.Unary_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2503
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitMultiplicative_expression(Multiplicative_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 442
   at NRules.RuleSharp.RuleSharpParser.Multiplicative_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2419
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitAdditive_expression(Additive_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 469
   at NRules.RuleSharp.RuleSharpParser.Additive_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2342
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitShift_expression(Shift_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 897
   at NRules.RuleSharp.RuleSharpParser.Shift_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2262
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitRelational_expression(Relational_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 333
   at NRules.RuleSharp.RuleSharpParser.Relational_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2159
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitEquality_expression(Equality_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 419
   at NRules.RuleSharp.RuleSharpParser.Equality_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2065
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitAnd_expression(And_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 408
   at NRules.RuleSharp.RuleSharpParser.And_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1992
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitExclusive_or_expression(Exclusive_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 397
   at NRules.RuleSharp.RuleSharpParser.Exclusive_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1929
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitInclusive_or_expression(Inclusive_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 386
   at NRules.RuleSharp.RuleSharpParser.Inclusive_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1866
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_and_expression(Conditional_and_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 375
   at NRules.RuleSharp.RuleSharpParser.Conditional_and_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1803
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_or_expression(Conditional_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 364
   at NRules.RuleSharp.RuleSharpParser.Conditional_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1736
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitNull_coalescing_expression(Null_coalescing_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 322
   at NRules.RuleSharp.RuleSharpParser.Null_coalescing_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1673
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_expression(Conditional_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 310
   at NRules.RuleSharp.RuleSharpParser.Conditional_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1612
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitNon_assignment_expression(Non_assignment_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 765
   at NRules.RuleSharp.RuleSharpParser.Non_assignment_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1375
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitExpression(ExpressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 754
   at NRules.RuleSharp.RuleSharpParser.ExpressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1311
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitArgument(ArgumentContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 743
   at NRules.RuleSharp.RuleSharpParser.ArgumentContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1231
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitPrimary_expression(Primary_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 206
   at NRules.RuleSharp.RuleSharpParser.Primary_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2661
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitUnary_expression(Unary_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 244
   at NRules.RuleSharp.RuleSharpParser.Unary_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2503
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitMultiplicative_expression(Multiplicative_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 442
   at NRules.RuleSharp.RuleSharpParser.Multiplicative_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2419
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitAdditive_expression(Additive_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 469
   at NRules.RuleSharp.RuleSharpParser.Additive_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2342
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitShift_expression(Shift_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 897
   at NRules.RuleSharp.RuleSharpParser.Shift_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2262
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitRelational_expression(Relational_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 333
   at NRules.RuleSharp.RuleSharpParser.Relational_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2159
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitEquality_expression(Equality_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 419
   at NRules.RuleSharp.RuleSharpParser.Equality_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 2065
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitAnd_expression(And_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 408
   at NRules.RuleSharp.RuleSharpParser.And_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1992
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitExclusive_or_expression(Exclusive_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 397
   at NRules.RuleSharp.RuleSharpParser.Exclusive_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1929
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitInclusive_or_expression(Inclusive_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 386
   at NRules.RuleSharp.RuleSharpParser.Inclusive_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1866
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_and_expression(Conditional_and_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 375
   at NRules.RuleSharp.RuleSharpParser.Conditional_and_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1803
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_or_expression(Conditional_or_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 364
   at NRules.RuleSharp.RuleSharpParser.Conditional_or_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1736
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitNull_coalescing_expression(Null_coalescing_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 322
   at NRules.RuleSharp.RuleSharpParser.Null_coalescing_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1673
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitConditional_expression(Conditional_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 310
   at NRules.RuleSharp.RuleSharpParser.Conditional_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1612
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitNon_assignment_expression(Non_assignment_expressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 765
   at NRules.RuleSharp.RuleSharpParser.Non_assignment_expressionContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 1375
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitExpression(ExpressionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 754
   at NRules.RuleSharp.ExpressionParser.VisitExpressionStatement(ExpressionStatementContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 29
   at NRules.RuleSharp.RuleSharpParser.ExpressionStatementContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 6652
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.RuleSharpParserBaseVisitor`1.VisitEmbedded_statement(Embedded_statementContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParserBaseVisitor.cs:line 1370
   at NRules.RuleSharp.RuleSharpParser.Embedded_statementContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 6415
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.VisitChildren(IRuleNode node)
   at NRules.RuleSharp.ExpressionParser.VisitEmbeddedStatement(EmbeddedStatementContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 23
   at NRules.RuleSharp.RuleSharpParser.EmbeddedStatementContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 6235
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.ExpressionParser.VisitStatement_list(Statement_listContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\ExpressionParser.cs:line 56
   at NRules.RuleSharp.RuleSharpParser.Statement_listContext.Accept[TResult](IParseTreeVisitor`1 visitor) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 8198
   at Antlr4.Runtime.Tree.AbstractParseTreeVisitor`1.Visit(IParseTree tree)
   at NRules.RuleSharp.RuleParserListener.EnterRule_action(Rule_actionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\RuleParserListener.cs:line 131
   at NRules.RuleSharp.RuleSharpParser.Rule_actionContext.EnterRule(IParseTreeListener listener) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 18631
   at Antlr4.Runtime.Tree.ParseTreeWalker.EnterRule(IParseTreeListener listener, IRuleNode r)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at NRules.RuleSharp.RuleSharpParserListener.EnterRule_definition(Rule_definitionContext context) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\RuleSharpParserListener.cs:line 41
   at NRules.RuleSharp.RuleSharpParser.Rule_definitionContext.EnterRule(IParseTreeListener listener) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\obj\Release\RuleSharpParser.cs:line 18691
   at Antlr4.Runtime.Tree.ParseTreeWalker.EnterRule(IParseTreeListener listener, IRuleNode r)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at NRules.RuleSharp.RuleRepository.Load(AntlrInputStream input) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\RuleRepository.cs:line 124
   at NRules.RuleSharp.RuleRepository.Load(String fileName) in C:\GitHub\NRules.Language\src\NRules.RuleSharp\NRules.RuleSharp\RuleRepository.cs:line 82
   at NRulesDynamicConsole.UserValidationRileFileTest.Run() in d:\Rupesh\WorkData\Self\RnD\C#\DomainSpecificLanguages\NRulesWalkthrough\NRulesDynamicConsole\NRulesDynamicConsole\UserValidationRileFileTest.cs:line 17
   at NRulesDynamicConsole.Program.Main(String[] args) in d:\Rupesh\WorkData\Self\RnD\C#\DomainSpecificLanguages\NRulesWalkthrough\NRulesDynamicConsole\NRulesDynamicConsole\Program.cs:line 10

Kindly guide!

Thank you.

With warm regards,
Rupesh

Sergiy Nikolayev

unread,
Sep 2, 2018, 10:05:46 PM9/2/18
to NRules Users
Creating objects in rules actions was not supported either.
I added support for the "new" operator, and also exposed engine's context to rules' actions. I released a new version with these changes, and pushed it to nuget.

Let me know if you have any issues with it.

Sergiy

Rupesh Bhurke

unread,
Sep 6, 2018, 4:48:21 AM9/6/18
to NRules Users
Ok! Thank you. I will check and revert!

Rupesh Bhurke

unread,
Sep 6, 2018, 5:07:44 AM9/6/18
to NRules Users
HI Sergiy!

While updating NRules.RuleSharp I face following issue:

The attribute "Remove" in element <None> is unrecognized.  d:\Rupesh\WorkData\Self\RnD\C#\DomainSpecificLanguages\NRulesWalkthrough\NRulesDynamicConsole\packages\Antlr4.CodeGenerator.4.6.5\build\Antlr4.CodeGenerator.props

I tries uninstalling all the packages and the deleting packages folder too.

Upon opening solution VS show message to install missing NuGet packages. It installs NRules. Then If I install the NRules.RuleSharp I get same error.

Kindly Advice.

Rupesh

Rupesh Bhurke

unread,
Sep 6, 2018, 7:46:13 AM9/6/18
to NRules Users
Hi Sergiy!

Just to add!

Even when I create a new project and add NuGet packages, we get the same error!

Rupesh

Sergiy Nikolayev

unread,
Sep 6, 2018, 9:09:42 PM9/6/18
to NRules Users
While it shouldn't cause an error, what I'm realizing is that I shouldn't have declared Antlr4.CodeGenerator as a dependency. It is needed to build RuleSharp, but it is not needed to run it.
I'm checking with the ANTLR team, and if that's true, I'll republish the package w/o that dependency, which should resolve your issue.
I'll get back to you on this.

Sergiy

Sergiy Nikolayev

unread,
Sep 6, 2018, 11:50:33 PM9/6/18
to NRules Users
Please try this out. I dropped the Antlr4.CodeGenerator from the package dependencies, as it is a development dependency only for RuleSharp.

Message has been deleted

Rupesh Bhurke

unread,
Sep 12, 2018, 5:19:04 AM9/12/18
to NRules Users


Hi Sergiy,

Now I am able to add Nuget Package NRules.RulesSharp to the project. My following rule file works fine:

using Domain;


rule
"User ID Validation"

when
   
var user = User(u => string.IsNullOrWhiteSpace(u.UserID));
   
then

 user
.Errors.Add(new ValidationError2("User ID is invalid!"));

 
//Console.WriteLine("Fired");



However, it is not clear how to access context object in Rule file. Could you please furnish with a sample?

Thank you.

With warm Regards,

Rupesh

Rupesh Bhurke

unread,
Sep 12, 2018, 5:23:56 AM9/12/18
to NRules Users
Sorry for the delay as there is festive season going on in my part of the world! 

Rupesh

Sergiy Nikolayev

unread,
Sep 12, 2018, 7:28:56 AM9/12/18
to NRules Users
You access it via the Context variable. In the release notes you can click on the corresponding issue and see a usage example there as well.

Sergiy

Sergiy Nikolayev

unread,
Sep 18, 2018, 8:39:14 PM9/18/18
to NRules Users
Hi Rupesh, please let me know if this worked for you.

Sergiy

Rupesh Bhurke

unread,
Sep 21, 2018, 3:39:08 AM9/21/18
to NRules Users
Hi! Sergiy,

Yes, "Context" variable is accessible in "then" part! 

using Domain;


rule
"User ID Validation"
when
   
var user = User(u => string.IsNullOrWhiteSpace(u.UserID));
   
then

   
Context.Insert(new ValidationError("User ID is invalid!"));




Rupesh Bhurke

unread,
Sep 24, 2018, 6:26:46 AM9/24/18
to NRules Users
Hi Sergiy!

I have an issue.

While loading Rule Files, I get this exception "CompilationException" but it does not show me which Rule File and exception location.

I am using this version of load:
public void Load(IEnumerable<string> fileNames)

I could use the following version to get which file is causing the problem:
public void Load(string fileName)

But this will still not give me the line of code that causes the error.

Kindly Advice!

Rupesh

Sergiy Nikolayev

unread,
Sep 25, 2018, 8:04:44 PM9/25/18
to NRules Users
I added an issue to improve error reporting (https://github.com/NRules/NRules.Language/issues/5).

Is the error message helpful in finding the error?

Sergiy
Reply all
Reply to author
Forward
0 new messages