[rules-users] property change listeners aren't working as described in the Expert Doc

abasile alex.basile at interactivedata.com
Thu Jun 20 12:41:54 EDT 2013


Hello,

The property change listener advise from the expert doc isn't working for
me.

http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html/ch04.html#d0e5351
(4.8.3.5)

- I've tried setting the configuration
KnowledgeBuilderConfiguration config =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
config.setOption(PropertySpecificOption.ALWAYS);
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder(config);

- Tried added annotations to Java Class 
@PropertyReactive, @Modifies

- Tried adding @watch to rule

FYI: We're using salience but not Agency Groups; also StatelessSession but
tried StatefulSesson as well.

Any suggestions? Reference to a working code sample would be great.

----------------------------------------------------------------------------
(snippet for creating knowledge base)
	// Set Property Specific Evaluation
	KnowledgeBuilderConfiguration config =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
	config.setOption(PropertySpecificOption.ALWAYS);

	//final KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();
	KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder(config);
		
	addRulesToKBuilder(ruleFiles, logger, kbuilder);

        // get the compiled packages (which are serializable)
        final Collection<KnowledgePackage> pkgs =
kbuilder.getKnowledgePackages();

        // add the packages to a knowledgebase (deploy the knowledge
packages).
        kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages( pkgs );

(snippet for adding rules to KBuilder)
	for (String ruleFile : ruleFiles) {
		// this will parse and compile in one step
	        kbuilder.add( ResourceFactory.newClassPathResource(ruleFile),
ResourceType.DRL );
	        
	        if ( kbuilder.hasErrors() ) {
	            logger.error( kbuilder.getErrors().toString() );
	            throw new RuntimeException( "ERROR: Unable to compile " +
ruleFile );
	        }
	}

(snippet for creating a stateless session)
public StatelessKnowledgeSession createStatelessSession(boolean isDebug) {
		
        StatelessKnowledgeSession ksession =
kbase.newStatelessKnowledgeSession();

        if (isDebug) {
        	ksession.addEventListener(new DebugWorkingMemoryEventListener());
        	ksession.addEventListener(new DebugAgendaEventListener());
        	ksession.addEventListener(new DebugProcessEventListener());
        }
        
        return ksession;        	
}

(snippet for rule)
dialect "java"
salience 1350

rule "Initial Normalization: Bid Size - Remove Unwanted Characters"

	when
		$md : MarketDataRow (
			candidate,
			hasValue( bidSize ),
			bidSize not matches "123"//,
		)

	then
		System.out.println( String.format( "%s; Row %d: '%s';",
drools.getRule().getName(), $md.getRowNumber(), $md.getBidSize() ) );
		modify( $md ) {
			setBidSize( "678m" );
		}

end

Thank you in advance,
Alex



--
View this message in context: http://drools.46999.n3.nabble.com/property-change-listeners-aren-t-working-as-described-in-the-Expert-Doc-tp4024437.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list