public void addFactPatterns(IFactPattern[] patterns) { for ( int i = 0; i < patterns.length; i++ ) { IFactPattern iFactPattern = patterns[i]; this.addFactPattern( iFactPattern ); } }
public void addFactPatterns(IFactPattern[] patterns) { for ( int i = 0; i < patterns.length; i++ ) { IFactPattern iFactPattern = patterns[i]; this.addFactPattern( iFactPattern ); } }
private CompositeFactPattern visitCompositeFactPattern(CompositeFactPattern pattern) { CompositeFactPattern clone = new CompositeFactPattern(); clone.type = pattern.type; if ( pattern.getPatterns() != null ) { for ( IFactPattern fp : pattern.getPatterns() ) { clone.addFactPattern( (IFactPattern) visit( fp ) ); } } return clone; }
private CompositeFactPattern visitCompositeFactPattern(CompositeFactPattern pattern) { CompositeFactPattern clone = new CompositeFactPattern(); clone.type = pattern.type; if ( pattern.getPatterns() != null ) { for ( IFactPattern fp : pattern.getPatterns() ) { clone.addFactPattern( (IFactPattern) visit( fp ) ); } } return clone; }
@Test public void testAddPattern() { final CompositeFactPattern pat = new CompositeFactPattern(); final FactPattern x = new FactPattern(); pat.addFactPattern( x ); assertEquals( 1, pat.getPatterns().length ); final FactPattern y = new FactPattern(); pat.addFactPattern( y ); assertEquals( 2, pat.getPatterns().length ); assertEquals( x, pat.getPatterns()[0] ); assertEquals( y, pat.getPatterns()[1] ); }
@Test public void testOrComposite() throws Exception { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_OR ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); FactPattern p2 = new FactPattern( "Person" ); SingleFieldConstraint sf2 = new SingleFieldConstraint( "age" ); sf2.setOperator( "==" ); sf2.setValue( "43" ); p2.addConstraint( sf2 ); cp.addFactPattern( p2 ); m.addLhsItem( cp ); String result = BRDRLPersistence.getInstance().marshal( m ); assertTrue( result .indexOf( "( Person( age == 42 ) or Person( age == 43 ) )" ) > 0 ); }
private String getCompositeFOL( String type ) { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( type ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); FactPattern p2 = new FactPattern( "Person" ); SingleFieldConstraint sf2 = new SingleFieldConstraint( "age" ); sf2.setOperator( "==" ); sf2.setValue( "43" ); p2.addConstraint( sf2 ); cp.addFactPattern( p2 ); m.addLhsItem( cp ); String result = BRDRLPersistence.getInstance().marshal( m ); return result; }
@Test public void testSingleExists() throws Exception { RuleModel m = new RuleModel(); m.name = "or"; CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_EXISTS ); FactPattern p1 = new FactPattern( "Person" ); SingleFieldConstraint sf1 = new SingleFieldConstraint( "age" ); sf1.setOperator( "==" ); sf1.setValue( "42" ); p1.addConstraint( sf1 ); cp.addFactPattern( p1 ); m.addLhsItem( cp ); String result = BRDRLPersistence.getInstance().marshal( m ); assertTrue( result.indexOf( "exists (Person( age == 42 )) " ) > 0 ); }
final CompositeFactPattern pat = new CompositeFactPattern(); final FactPattern x = new FactPattern(); pat.addFactPattern( x ); final FactPattern y = new FactPattern(); pat.addFactPattern( y );
@Test public void testCompositeFactPatternWithFromWithDSL() { final RuleModel m = new RuleModel(); m.name = "model"; final DSLSentence sen = new DSLSentence(); sen.setDefinition( "A DSL phrase" ); m.addLhsItem( sen ); final FactPattern fp1 = new FactPattern( "Data" ); fp1.setBoundName( "$d" ); m.addLhsItem( fp1 ); final CompositeFactPattern cp = new CompositeFactPattern( CompositeFactPattern.COMPOSITE_TYPE_NOT ); final FactPattern fp2 = new FactPattern( "Person" ); final FromCompositeFactPattern ffp1 = new FromCompositeFactPattern(); ffp1.setExpression( new ExpressionFormLine( new ExpressionVariable( fp1 ) ) ); ffp1.setFactPattern( fp2 ); cp.addFactPattern( ffp1 ); m.addLhsItem( cp ); final String actual = BRDRLPersistence.getInstance().marshal( m ); final String expected = "rule \"model\"\n" + "dialect \"mvel\"\n" + "when\n" + "A DSL phrase\n" + ">$d : Data( )\n" + ">not ( Person( ) from $d\n" + ")\n" + "then\n" + "end\n"; assertEqualsIgnoreWhitespace( expected, actual ); }
fp1.addConstraint( fp1sfc0 ); cfp0.addFactPattern( fp0 ); cfp0.addFactPattern( fp1 );
fp1.addConstraint( fp1sfc0 ); cfp0.addFactPattern( fp0 ); cfp0.addFactPattern( fp1 );
private RuleModel getComplexModel() { final RuleModel m = new RuleModel(); m.addAttribute( new RuleAttribute( "no-loop", "true" ) ); final FactPattern pat = new FactPattern( "Person" ); pat.setBoundName( "p1" ); final SingleFieldConstraint con = new SingleFieldConstraint(); con.setFactType( "Person" ); con.setFieldBinding( "f1" ); con.setFieldName( "age" ); con.setOperator( "<" ); con.setValue( "42" ); pat.addConstraint( con ); m.addLhsItem( pat ); final CompositeFactPattern comp = new CompositeFactPattern( "not" ); comp.addFactPattern( new FactPattern( "Cancel" ) ); m.addLhsItem( comp ); final ActionUpdateField set = new ActionUpdateField(); set.variable = "p1"; set.addFieldValue( new ActionFieldValue( "status", "rejected", SuggestionCompletionEngine.TYPE_STRING ) ); m.addRhsItem( set ); final ActionRetractFact ret = new ActionRetractFact( "p1" ); m.addRhsItem( ret ); final DSLSentence sen = new DSLSentence(); sen.setDefinition( "Send an email to {administrator}" ); m.addRhsItem( sen ); return m; }
comp.addFactPattern( new FactPattern( "Cancel" ) ); m.addLhsItem( comp );
fp1.addConstraint( fp1sfc0 ); cfp0.addFactPattern( fp0 ); cfp0.addFactPattern( fp1 );