[jboss-svn-commits] JBL Code SVN: r33967 - in labs/jbossrules/trunk/drools-container/drools-spring/src: main/java/org/drools/container/spring/namespace and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 16 20:39:40 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-07-16 20:39:40 -0400 (Fri, 16 Jul 2010)
New Revision: 33967
Added:
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockAccumulateFunction.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockEvaluatorDefinition.java
Modified:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml
Log:
JBRULES-1434 Drools Spring
-added conf support for evaluators and accumulator functions
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java 2010-07-17 00:31:54 UTC (rev 33966)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java 2010-07-17 00:39:40 UTC (rev 33967)
@@ -5,6 +5,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import javax.xml.bind.util.JAXBResult;
@@ -14,15 +15,23 @@
import org.drools.RuleBaseConfiguration;
import org.drools.builder.JaxbConfiguration;
import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.builder.ResourceType;
+import org.drools.builder.conf.AccumulateFunctionOption;
+import org.drools.builder.conf.EvaluatorOption;
import org.drools.builder.conf.impl.JaxbConfigurationImpl;
import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.grid.ExecutionNode;
import org.drools.grid.local.LocalConnection;
import org.drools.impl.KnowledgeBaseImpl;
import org.drools.process.core.WorkDefinition;
+import org.drools.runtime.rule.AccumulateFunction;
+import org.drools.runtime.rule.Evaluator;
+import org.drools.runtime.rule.EvaluatorDefinition;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
@@ -38,6 +47,8 @@
InitializingBean {
private KnowledgeBaseConfiguration conf;
+ private Map<String, AccumulateFunction> accumulateFunctions;
+ private Map<String, EvaluatorDefinition> evaluators;
private KnowledgeBase kbase;
private ExecutionNode node;
@@ -56,11 +67,24 @@
}
public void afterPropertiesSet() throws Exception {
- if ( node == null ) {
- node = new LocalConnection().getExecutionNode();
+ if ( this.node == null ) {
+ this.node = new LocalConnection().getExecutionNode();
+ }
+
+ PackageBuilderConfiguration kconf = (PackageBuilderConfiguration) KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+ if (this.accumulateFunctions != null && !this.accumulateFunctions.isEmpty()) {
+ for ( Entry<String, AccumulateFunction> entry : this.accumulateFunctions.entrySet() ) {
+ kconf.setOption( AccumulateFunctionOption.get( entry.getKey(), entry.getValue()) );
+ }
}
+
+ if (this.evaluators != null && !this.evaluators.isEmpty()) {
+ for ( Entry<String, EvaluatorDefinition> entry : this.evaluators.entrySet() ) {
+ kconf.setOption( EvaluatorOption.get( entry.getKey(), entry.getValue()) );
+ }
+ }
- KnowledgeBuilder kbuilder = node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder();
+ KnowledgeBuilder kbuilder = node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(kconf);
if ( this.conf != null ) {
kbase = node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(conf);
} else {
@@ -97,8 +121,25 @@
kbaseImpl.jaxbClasses.add( conf.getClasses() );
}
- }
+ }
+
+ public Map<String, AccumulateFunction> getAccumulateFunctions() {
+ return accumulateFunctions;
+ }
+
+ public void setAccumulateFunctions(Map<String, AccumulateFunction> accumulateFunctions) {
+ this.accumulateFunctions = accumulateFunctions;
+ }
+
+ public Map<String, EvaluatorDefinition> getEvaluators() {
+ return evaluators;
+ }
+
+ public void setEvaluators(Map<String, EvaluatorDefinition> evaluators) {
+ this.evaluators = evaluators;
+ }
+
public KnowledgeBaseConfiguration getConf() {
return conf;
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java 2010-07-17 00:31:54 UTC (rev 33966)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java 2010-07-17 00:39:40 UTC (rev 33967)
@@ -30,9 +30,13 @@
private static final String EVENT_PROCESSING_MODE = "event-processing-mode";
- private static final String WORK_ITEM_DEFINITIONS = "work-item-definitions";
+ private static final String ACCUMULATE_FUNCTIONS = "accumulate-functions";
- private static final String WORK_ITEM_DEFINITION = "work-item-definition";
+ private static final String ACCUMULATE_FUNCTION = "accumulate-function";
+
+ private static final String EVALUATORS = "evaluators";
+
+ private static final String EVALUATOR = "evaluator";
@SuppressWarnings("unchecked")
@Override
@@ -66,6 +70,32 @@
rbaseConfBuilder.addPropertyValue( "eventProcessingMode", EventProcessingOption.valueOf( e.getAttribute( "mode" ) ) );
}
+ e = DomUtils.getChildElementByTagName(kbaseConf, ACCUMULATE_FUNCTIONS);
+ if ( e != null ) {
+ List<Element> children = DomUtils.getChildElementsByTagName( e, ACCUMULATE_FUNCTION );
+ if ( children != null && !children.isEmpty() ) {
+ ManagedMap functions = new ManagedMap();
+ for ( Element child : children ) {
+ functions.put( child.getAttribute( "name" ),
+ new RuntimeBeanReference( child.getAttribute( "ref" ) ) );
+ }
+ factory.addPropertyValue( "accumulateFunctions", functions );
+ }
+ }
+
+ e = DomUtils.getChildElementByTagName(kbaseConf, EVALUATORS);
+ if ( e != null ) {
+ List<Element> children = DomUtils.getChildElementsByTagName( e, EVALUATOR );
+ if ( children != null && !children.isEmpty() ) {
+ ManagedMap evaluators = new ManagedMap();
+ for ( Element child : children ) {
+ evaluators.put( child.getAttribute( "name" ),
+ new RuntimeBeanReference( child.getAttribute( "ref" ) ) );
+ }
+ factory.addPropertyValue( "evaluators", evaluators );
+ }
+ }
+
factory.addPropertyValue( "conf", rbaseConfBuilder.getBeanDefinition() );
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-07-17 00:31:54 UTC (rev 33966)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-07-17 00:39:40 UTC (rev 33967)
@@ -77,7 +77,33 @@
<xsd:attribute name="mode" type="cloudModeEnum"/>
</xsd:complexType>
</xsd:element>
-
+
+ <xsd:element name="accumulate-functions" minOccurs="0">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="accumulate-function" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:attribute name="name" use="required" type="xsd:string"/>
+ <xsd:attribute name="ref" use="required" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="evaluators" minOccurs="0">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="evaluator" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:attribute name="name" use="required" type="xsd:string"/>
+ <xsd:attribute name="ref" use="required" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+
</xsd:all>
</xsd:complexType>
</xsd:element>
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockAccumulateFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockAccumulateFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockAccumulateFunction.java 2010-07-17 00:39:40 UTC (rev 33967)
@@ -0,0 +1,55 @@
+package org.drools.container.spring;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
+import org.drools.runtime.rule.AccumulateFunction;
+
+public class MockAccumulateFunction implements AccumulateFunction {
+
+ public void accumulate(Serializable context,
+ Object value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Serializable createContext() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Object getResult(Serializable context) throws Exception {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void init(Serializable context) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reverse(Serializable context,
+ Object value) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean supportsReverse() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockEvaluatorDefinition.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/MockEvaluatorDefinition.java 2010-07-17 00:39:40 UTC (rev 33967)
@@ -0,0 +1,66 @@
+package org.drools.container.spring;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.EvaluatorDefinition;
+import org.drools.base.evaluators.Operator;
+import org.drools.spi.Evaluator;
+
+public class MockEvaluatorDefinition implements EvaluatorDefinition {
+
+ public Evaluator getEvaluator(ValueType type,
+ String operatorId,
+ boolean isNegated,
+ String parameterText,
+ Target leftTarget,
+ Target rightTarget) {
+ return null;
+ }
+
+ public Evaluator getEvaluator(ValueType type,
+ String operatorId,
+ boolean isNegated,
+ String parameterText) {
+ return null;
+ }
+
+ public Evaluator getEvaluator(ValueType type,
+ Operator operator,
+ String parameterText) {
+ return null;
+ }
+
+ public Evaluator getEvaluator(ValueType type,
+ Operator operator) {
+ return null;
+ }
+
+ public String[] getEvaluatorIds() {
+ return new String[] { "id1", "id2" };
+ }
+
+ public Target getTarget() {
+ return null;
+ }
+
+ public boolean isNegatable() {
+ return false;
+ }
+
+ public boolean supportsType(ValueType type) {
+ return false;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml 2010-07-17 00:31:54 UTC (rev 33966)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml 2010-07-17 00:39:40 UTC (rev 33967)
@@ -11,8 +11,14 @@
<bean id="rwih1" class="org.drools.process.instance.impl.humantask.HumanTaskHandler" />
- <bean id="rwih2" class="org.drools.process.instance.impl.humantask.HumanTaskHandler" />
+ <bean id="rwih2" class="org.drools.process.instance.impl.humantask.HumanTaskHandler" />
+
+ <bean id="raf1" class="org.drools.container.spring.MockAccumulateFunction" />
+ <bean id="raf2" class="org.drools.container.spring.MockAccumulateFunction" />
+ <bean id="red1" class="org.drools.container.spring.MockEvaluatorDefinition" />
+ <bean id="red2" class="org.drools.container.spring.MockEvaluatorDefinition" />
+
<drools:kbase id="kbase1">
<drools:resources>
<drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
@@ -27,6 +33,16 @@
<drools:event-processing-mode mode="STREAM" />
+ <drools:accumulate-functions>
+ <drools:accumulate-function name="af1" ref="raf1" />
+ <drools:accumulate-function name="af2" ref="raf2" />
+ </drools:accumulate-functions>
+
+ <drools:evaluators>
+ <drools:evaluator name="ed1" ref="red1" />
+ <drools:evaluator name="ed2" ref="red2" />
+ </drools:evaluators>
+
</drools:configuration>
</drools:kbase>
More information about the jboss-svn-commits
mailing list