[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