private RuleImpl getRule(KieBase kbase, String ruleName) { return ((KnowledgeBaseImpl)kbase).getPackage("org.drools").getRule(ruleName); }
@Test public void testDebug() throws Exception { String rule = "package com.sample; dialect \"mvel\" rule myRule when then\n System.out.println( \"test\" ); end"; KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr packageDescr = parser.parse(null, rule); RuleDescr ruleDescr = packageDescr.getRules().get(0); builder = new KnowledgeBuilderImpl( ); builder.addPackage(packageDescr); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence(); String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName(); System.out.println(sourceName); String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName(); System.out.println(ruleName); assertEquals(sourceName, ruleName); }
kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackage("org.drools.compiler").getRule( "test nested CEs" );
final RuleImpl rule = pkg.getRule( "rule-1" ); assertNotNull( rule );
@Test public void testBuildBigIntegerLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigInteger", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this==10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigInteger. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigInteger ); } }
@Test public void testBuildBigDecimalLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigDecimal", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this == 10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigDecimal. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigDecimal ); } }
private RuleImpl createRule( final ConditionalElementDescr ceDescr, final KnowledgeBuilderImpl builder, final String consequence ) throws Exception { final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); lhs.addDescr( (BaseDescr) ceDescr ); final PatternDescr patternDescr = new PatternDescr( Cheese.class.getName(), "stilton" ); patternDescr.addConstraint( new ExprConstraintDescr( "type == \"stilton\" ") ); ceDescr.addDescr( patternDescr ); ruleDescr.setConsequence( consequence ); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); final RuleImpl rule = pkg.getRule( "rule-1" ); assertEquals( "rule-1", rule.getName() ); return rule; }
@Test public void testNull() { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr patternDescr = new PatternDescr( Cheese.class.getName(), "stilton" ); final FieldConstraintDescr literalDescr = new FieldConstraintDescr( "type" ); literalDescr.addRestriction( new LiteralRestrictionDescr( "==", null ) ); patternDescr.addConstraint( literalDescr ); ruleDescr.setConsequence( "" ); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); final RuleImpl rule = pkg.getRule( "rule-1" ); assertLength( 0, builder.getErrors().getErrors() ); }
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule) throws IllegalStateException { if (kbase == null) { throw new IllegalStateException("Cannot determine starting rule unit. KieBase is null"); } InternalKnowledgeBase ikb = (InternalKnowledgeBase) kbase; Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName : calculatePossiblePackageNames()) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
final RuleImpl rule = pkg.getRule( "rule-1" ); final EvalCondition eval = (EvalCondition) rule.getLhs().getChildren().get( 1 ); final CompiledInvoker invoker = (CompiledInvoker) eval.getEvalExpression();
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule, InternalKnowledgeBase ikb, List<String> possiblePackages) { Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName : possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule, InternalKnowledgeBase ikb, List<String> possiblePackages) { Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl = null; for (String pkgName : possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
assertTrue(mockDialect2.isCompileAll()); assertNotNull(pkg.getRule("test rule"));
protected Class<? extends RuleUnit> startingRuleUnit(String startingRule, String modelId, String...knownPackageNames) { List<String> possiblePackages = calculatePossiblePackageNames(modelId, knownPackageNames); InternalKnowledgeBase internalKnowledgeBase = (InternalKnowledgeBase) kieBase; Map<String,InternalKnowledgePackage> pkgs = internalKnowledgeBase.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName: possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = internalKnowledgeBase.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; } }