use of org.drools.core.rule.NamedConsequence in project drools by kiegroup.
the class ConditionalBranchBuilder method build.
public ConditionalBranch build(RuleBuildContext context, BaseDescr descr, Pattern prefixPattern) {
ConditionalBranchDescr conditionalBranch = (ConditionalBranchDescr) descr;
String consequenceName = conditionalBranch.getConsequence().getName();
if (!context.getRuleDescr().getNamedConsequences().keySet().contains(consequenceName)) {
DroolsError err = new RuleBuildError(context.getRule(), context.getParentDescr(), null, "Unknown consequence name: " + consequenceName);
context.addError(err);
return null;
}
RuleConditionBuilder evalBuilder = (RuleConditionBuilder) context.getDialect().getBuilder(EvalDescr.class);
EvalCondition condition = (EvalCondition) evalBuilder.build(context, conditionalBranch.getCondition(), getLastPattern(context));
NamedConsequenceBuilder namedConsequenceBuilder = (NamedConsequenceBuilder) context.getDialect().getBuilder(NamedConsequenceDescr.class);
NamedConsequence consequence = namedConsequenceBuilder.build(context, conditionalBranch.getConsequence());
ConditionalBranchDescr elseBranchDescr = conditionalBranch.getElseBranch();
return new ConditionalBranch(condition, consequence, elseBranchDescr != null ? build(context, elseBranchDescr, prefixPattern) : null);
}
use of org.drools.core.rule.NamedConsequence in project drools by kiegroup.
the class KiePackagesBuilder method buildConditionalConsequence.
private ConditionalBranch buildConditionalConsequence(RuleContext ctx, ConditionalNamedConsequenceImpl consequence) {
EvalCondition evalCondition;
if (consequence.getExpr() != null) {
Pattern pattern = ctx.getPattern(consequence.getExpr().getVariables()[0]);
EvalExpression eval = new LambdaEvalExpression(pattern, consequence.getExpr());
evalCondition = new EvalCondition(eval, pattern.getRequiredDeclarations());
} else {
evalCondition = new EvalCondition(LambdaEvalExpression.EMPTY, null);
}
return new ConditionalBranch(evalCondition, new NamedConsequence(consequence.getThenConsequence().getName(), consequence.getThenConsequence().isBreaking()), consequence.getElseBranch() != null ? buildConditionalConsequence(ctx, consequence.getElseBranch()) : null);
}
use of org.drools.core.rule.NamedConsequence in project drools by kiegroup.
the class NamedConsequenceBuilder method build.
public void build(BuildContext context, BuildUtils utils, RuleConditionElement rce) {
NamedConsequence namedConsequence = (NamedConsequence) rce;
Timer timer = context.getRule().getTimer();
if (timer != null) {
ReteooComponentBuilder builder = utils.getBuilderFor(Timer.class);
builder.build(context, utils, context.getRule().getTimer());
}
RuleTerminalNode terminalNode = buildTerminalNodeForNamedConsequence(context, namedConsequence);
terminalNode.attach(context);
terminalNode.networkUpdated(new UpdateContext());
// adds the terminal node to the list of nodes created/added by this sub-rule
context.getNodes().add(terminalNode);
if (timer != null) {
context.setTupleSource(context.getTupleSource().getLeftTupleSource());
}
context.setTerminated(namedConsequence.isTerminal());
}
Aggregations