[jboss-svn-commits] JBL Code SVN: r33935 - in labs/jbossrules/trunk: drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 16 06:25:49 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-07-16 06:25:48 -0400 (Fri, 16 Jul 2010)
New Revision: 33935
Added:
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml
Modified:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/AbstractKnowledgeSessionBeanFactory.java
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/StatefulKnowledgeSessionBeanFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.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/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.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/java/org/drools/container/spring/SpringDroolsTest.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/no-node-beans.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
Log:
JBRULES-1434 Drools Spring
-Various configurations now work for ksessions and kbases
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/AbstractKnowledgeSessionBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/AbstractKnowledgeSessionBeanFactory.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/AbstractKnowledgeSessionBeanFactory.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -1,12 +1,16 @@
package org.drools.container.spring.beans;
import java.util.List;
+import java.util.Map;
import org.drools.KnowledgeBase;
+import org.drools.SessionConfiguration;
import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.command.Command;
import org.drools.grid.ExecutionNode;
import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.process.WorkItemHandler;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
@@ -20,6 +24,8 @@
NamedBean {
private ExecutionNode node;
+ private Map<String, WorkItemHandler> workItems;
+ private KnowledgeSessionConfiguration conf;
private KnowledgeBase kbase;
private String beanName;
private String name;
@@ -34,6 +40,22 @@
return getCommandExecutor();
}
+ public Map<String, WorkItemHandler> getWorkItems() {
+ return workItems;
+ }
+
+ public void setWorkItems(Map<String, WorkItemHandler> workItems) {
+ this.workItems = workItems;
+ }
+
+ public KnowledgeSessionConfiguration getConf() {
+ return conf;
+ }
+
+ public void setConf(KnowledgeSessionConfiguration conf) {
+ this.conf = conf;
+ }
+
public String getName() {
return name;
}
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-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -4,11 +4,14 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import javax.xml.bind.util.JAXBResult;
import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
import org.drools.KnowledgeBaseFactoryService;
+import org.drools.RuleBaseConfiguration;
import org.drools.builder.JaxbConfiguration;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderErrors;
@@ -19,6 +22,7 @@
import org.drools.grid.ExecutionNode;
import org.drools.grid.local.LocalConnection;
import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.process.core.WorkDefinition;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
@@ -33,6 +37,9 @@
FactoryBean,
InitializingBean {
+ private KnowledgeBaseConfiguration conf;
+ private Map<String, WorkDefinition> workDefinitions;
+
private KnowledgeBase kbase;
private ExecutionNode node;
private List<DroolsResourceAdapter> resources = Collections.emptyList();
@@ -53,8 +60,18 @@
if ( node == null ) {
node = new LocalConnection().getExecutionNode();
}
+
+ if ( this.conf != null && this.workDefinitions != null && !this.workDefinitions.isEmpty() ) {
+ Map<String, WorkDefinition> map = ((RuleBaseConfiguration) this.conf).getProcessWorkDefinitions();
+ map.putAll( this.workDefinitions );
+ }
+
KnowledgeBuilder kbuilder = node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder();
- kbase = node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase();
+ if ( this.conf != null ) {
+ kbase = node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(conf);
+ } else {
+ kbase = node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase( );
+ }
List<JaxbConfigurationImpl> xsds = new ArrayList<JaxbConfigurationImpl>();
@@ -87,7 +104,24 @@
}
}
+
+ public Map<String, WorkDefinition> getWorkDefinitions() {
+ return workDefinitions;
+ }
+
+ public void setWorkDefinitions(Map<String, WorkDefinition> workDefinitions) {
+ this.workDefinitions = workDefinitions;
+ }
+
+ public KnowledgeBaseConfiguration getConf() {
+ return conf;
+ }
+
+ public void setConf(KnowledgeBaseConfiguration conf) {
+ this.conf = conf;
+ }
+
public KnowledgeBase getKbase() {
return kbase;
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatefulKnowledgeSessionBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatefulKnowledgeSessionBeanFactory.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatefulKnowledgeSessionBeanFactory.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -6,14 +6,18 @@
import javax.persistence.EntityManagerFactory;
import org.drools.KnowledgeBaseFactory;
+import org.drools.RuleBaseConfiguration;
+import org.drools.SessionConfiguration;
import org.drools.command.Command;
import org.drools.persistence.jpa.JPAKnowledgeService;
import org.drools.persistence.processinstance.VariablePersistenceStrategyFactory;
import org.drools.persistence.processinstance.persisters.VariablePersister;
+import org.drools.process.core.WorkDefinition;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
import org.springframework.transaction.PlatformTransactionManager;
public class StatefulKnowledgeSessionBeanFactory extends AbstractKnowledgeSessionBeanFactory {
@@ -40,6 +44,11 @@
@Override
protected void internalAfterPropertiesSet() {
+ if ( getConf() != null && getWorkItems() != null && !getWorkItems().isEmpty() ) {
+ Map<String, WorkItemHandler> map = ((SessionConfiguration) getConf()).getWorkItemHandlers();
+ map.putAll( getWorkItems() );
+ }
+
if ( jpaConfiguration != null ) {
if ( !jpaConfiguration.getVariablePersisters().isEmpty() ) {
for ( Map.Entry<String, Class< ? extends VariablePersister>> entry : jpaConfiguration.getVariablePersisters().entrySet() ) {
@@ -53,18 +62,20 @@
jpaConfiguration.getEntityManagerFactory() );
env.set( EnvironmentName.TRANSACTION_MANAGER,
jpaConfiguration.getPlatformTransactionManager() );
+
+
if ( jpaConfiguration.getId() >= 0 ) {
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( jpaConfiguration.getId(),
getKbase(),
- null,
+ getConf(),
env );
} else {
ksession = JPAKnowledgeService.newStatefulKnowledgeSession( getKbase(),
- null,
+ getConf(),
env );
}
} else {
- ksession = getKbase().newStatefulKnowledgeSession();
+ ksession = getKbase().newStatefulKnowledgeSession( getConf(), null);
}
if ( getScript() != null && !getScript().isEmpty()) {
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/StatelessKnowledgeSessionBeanFactory.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -1,8 +1,12 @@
package org.drools.container.spring.beans;
+import java.util.Map;
+
+import org.drools.SessionConfiguration;
import org.drools.agent.KnowledgeAgent;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
public class StatelessKnowledgeSessionBeanFactory extends AbstractKnowledgeSessionBeanFactory {
private StatelessKnowledgeSession ksession;
@@ -27,10 +31,15 @@
@Override
protected void internalAfterPropertiesSet() {
+ if ( getConf() != null && getWorkItems() != null && !getWorkItems().isEmpty() ) {
+ Map<String, WorkItemHandler> map = ((SessionConfiguration) getConf()).getWorkItemHandlers();
+ map.putAll( getWorkItems() );
+ }
+
if ( this.kagent != null ) {
- ksession = this.kagent.newStatelessKnowledgeSession();
+ ksession = this.kagent.newStatelessKnowledgeSession( getConf() );
} else {
- ksession = getKbase().newStatelessKnowledgeSession();
+ ksession = getKbase().newStatelessKnowledgeSession( getConf() );
}
}
}
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-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -2,11 +2,16 @@
import java.util.List;
+import org.drools.RuleBaseConfiguration;
+import org.drools.conf.EventProcessingOption;
import org.drools.container.spring.beans.KnowledgeBaseBeanFactory;
+import org.drools.core.util.StringUtils;
import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.ManagedList;
+import org.springframework.beans.factory.support.ManagedMap;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.util.xml.DomUtils;
@@ -14,22 +19,79 @@
public class KnowledgeBaseDefinitionParser extends AbstractBeanDefinitionParser {
- private static final String EXECUTION_NODE_ATTRIBUTE = "node";
+ private static final String EXECUTION_NODE_ATTRIBUTE = "node";
+ private static final String ADVANCED_PROCESS_RULE_INTEGRATED = "advanced-process-rule-integration";
+
+ private static final String MULTITHREADS = "multithread";
+ private static final String MAX_THREADS = "max-threads";
+
+ private static final String MBEABS = "mbeans";
+
+ private static final String EVENT_PROCESSING_MODE = "event-processing-mode";
+
+ private static final String WORK_ITEM_DEFINITIONS = "work-item-definitions";
+
+ private static final String WORK_ITEM_DEFINITION = "work-item-definition";
+
@SuppressWarnings("unchecked")
@Override
protected AbstractBeanDefinition parseInternal(Element element,
ParserContext parserContext) {
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition( KnowledgeBaseBeanFactory.class );
+
+ Element kbaseConf = DomUtils.getChildElementByTagName(element, "configuration");
+ if ( kbaseConf != null ) {
+ BeanDefinitionBuilder rbaseConfBuilder = BeanDefinitionBuilder.rootBeanDefinition( RuleBaseConfiguration.class );
+ Element e = DomUtils.getChildElementByTagName(kbaseConf, ADVANCED_PROCESS_RULE_INTEGRATED);
+ if ( e != null && !StringUtils.isEmpty( e.getAttribute( "enabled" ) )) {
+ rbaseConfBuilder.addPropertyValue( "advancedProcessRuleIntegration", Boolean.parseBoolean( e.getAttribute( "enabled" ) ) );
+ }
+
+ e = DomUtils.getChildElementByTagName(kbaseConf, MULTITHREADS);
+ if ( e != null && !StringUtils.isEmpty( e.getAttribute( "enabled" ) )) {
+ rbaseConfBuilder.addPropertyValue( "multithreadEvaluation", Boolean.parseBoolean( e.getAttribute( "enabled" ) ));
+ if ( !StringUtils.isEmpty( e.getAttribute( MAX_THREADS ) ) ) {
+ rbaseConfBuilder.addPropertyValue( "maxThreads" , Integer.parseInt( e.getAttribute( MAX_THREADS ) ) );
+ }
+ }
+
+ e = DomUtils.getChildElementByTagName(kbaseConf, MBEABS);
+ if ( e != null && !StringUtils.isEmpty( e.getAttribute( "enabled" ) )) {
+ rbaseConfBuilder.addPropertyValue( "MBeansEnabled", Boolean.parseBoolean( e.getAttribute( "enabled" ) ) );
+ }
+
+ e = DomUtils.getChildElementByTagName(kbaseConf, EVENT_PROCESSING_MODE);
+ if ( e != null && !StringUtils.isEmpty( e.getAttribute( "mode" ) )) {
+ rbaseConfBuilder.addPropertyValue( "eventProcessingMode", EventProcessingOption.valueOf( e.getAttribute( "mode" ) ) );
+ }
+
+ e = DomUtils.getChildElementByTagName(kbaseConf, WORK_ITEM_DEFINITIONS);
+ if ( e != null ) {
+ List<Element> children = DomUtils.getChildElementsByTagName( e, WORK_ITEM_DEFINITION );
+ if ( children != null && !children.isEmpty() ) {
+ ManagedMap workDefs = new ManagedMap();
+ for ( Element child : children ) {
+ workDefs.put( child.getAttribute( "name" ),
+ new RuntimeBeanReference( child.getAttribute( "ref" ) ) );
+ }
+ factory.addPropertyValue( "workDefinitions", workDefs );
+ }
+ }
+
+ factory.addPropertyValue( "conf", rbaseConfBuilder.getBeanDefinition() );
+ }
String nodeRef = element.getAttribute( EXECUTION_NODE_ATTRIBUTE );
if ( nodeRef != null && nodeRef.length() > 0 ) {
factory.addPropertyReference( EXECUTION_NODE_ATTRIBUTE,
nodeRef );
}
-
- ManagedList resources = getResources(element, parserContext, factory);
+ ManagedList resources = getResources( element,
+ parserContext,
+ factory );
+
if ( resources != null ) {
factory.addPropertyValue( "resources",
resources );
@@ -38,33 +100,39 @@
return factory.getBeanDefinition();
}
- public static ManagedList getResources(Element element, ParserContext parserContext, BeanDefinitionBuilder factory) {
- List<Element> childElements = DomUtils.getChildElementsByTagName( element,
- "resource" );
+ public static ManagedList getResources(Element element,
+ ParserContext parserContext,
+ BeanDefinitionBuilder factory) {
+ Element resourcesElm = DomUtils.getChildElementByTagName( element,
+ "resources" );
ManagedList resources = null;
- if ( childElements != null && !childElements.isEmpty() ) {
- resources = new ManagedList();
- for ( Element childResource : childElements ) {
- BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement( childResource,
- factory.getBeanDefinition() );
- resources.add( resourceDefinition );
+
+ if ( resourcesElm != null ) {
+ List<Element> childElements = DomUtils.getChildElementsByTagName( resourcesElm,
+ "resource" );
+ if ( childElements != null && !childElements.isEmpty() ) {
+ resources = new ManagedList();
+ for ( Element childResource : childElements ) {
+ BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement( childResource,
+ factory.getBeanDefinition() );
+ resources.add( resourceDefinition );
+ }
}
- }
- childElements = DomUtils.getChildElementsByTagName( element,
- "resource-ref" );
+ childElements = DomUtils.getChildElementsByTagName( resourcesElm,
+ "resource-ref" );
- if ( childElements != null && !childElements.isEmpty() ) {
- if ( resources == null ) {
- resources = new ManagedList( childElements.size() );
+ if ( childElements != null && !childElements.isEmpty() ) {
+ if ( resources == null ) {
+ resources = new ManagedList( childElements.size() );
+ }
+ for ( Element childResource : childElements ) {
+ BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement( childResource,
+ factory.getBeanDefinition() );
+ resources.add( resourceDefinition );
+ }
}
- for ( Element childResource : childElements ) {
- BeanDefinition resourceDefinition = parserContext.getDelegate().parseCustomElement( childResource,
- factory.getBeanDefinition() );
- resources.add( resourceDefinition );
- }
}
-
return resources;
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -4,6 +4,9 @@
import java.util.List;
+import org.drools.ClockType;
+import org.drools.RuleBaseConfiguration;
+import org.drools.SessionConfiguration;
import org.drools.command.CommandFactory;
import org.drools.command.runtime.SetGlobalCommand;
import org.drools.command.runtime.process.SignalEventCommand;
@@ -11,11 +14,13 @@
import org.drools.command.runtime.rule.FireAllRulesCommand;
import org.drools.command.runtime.rule.FireUntilHaltCommand;
import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.conf.EventProcessingOption;
import org.drools.container.spring.beans.KnowledgeAgentBeanFactory;
import org.drools.container.spring.beans.KnowledgeBaseBeanFactory;
import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory;
import org.drools.container.spring.beans.StatelessKnowledgeSessionBeanFactory;
import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.JpaConfiguration;
+import org.drools.runtime.conf.ClockTypeOption;
import org.springframework.beans.PropertyValue;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.RuntimeBeanReference;
@@ -43,6 +48,13 @@
private static final String EXECUTION_NODE_ATTRIBUTE = "node";
private static final String TYPE_ATTRIBUTE = "type";
+ private static final String KEEP_RERENCE = "keep-reference";
+ private static final String CLOCK_TYPE = "clock-type";
+
+ private static final String WORK_ITEMS = "work-item-handlers";
+
+ private static final String WORK_ITEM = "work-item-handler";
+
protected AbstractBeanDefinition parseInternal(Element element,
ParserContext parserContext) {
@@ -86,45 +98,71 @@
id );
}
- Element persistenceElm = DomUtils.getChildElementByTagName(element, "jpa-persistence");
- if ( persistenceElm != null) {
- BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition( JpaConfiguration.class );
-
- String loadId = persistenceElm.getAttribute( "load" );
- if ( StringUtils.hasText( loadId ) ) {
- beanBuilder.addPropertyValue( "id", Long.parseLong( loadId ) );
+ Element ksessionConf = DomUtils.getChildElementByTagName(element, "configuration");
+ if ( ksessionConf != null ) {
+ Element persistenceElm = DomUtils.getChildElementByTagName(ksessionConf, "jpa-persistence");
+ if ( persistenceElm != null) {
+ BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition( JpaConfiguration.class );
+
+ String loadId = persistenceElm.getAttribute( "load" );
+ if ( StringUtils.hasText( loadId ) ) {
+ beanBuilder.addPropertyValue( "id", Long.parseLong( loadId ) );
+ }
+
+ Element tnxMng = DomUtils.getChildElementByTagName(persistenceElm, TX_MANAGER_ATTRIBUTE);
+ String ref = tnxMng.getAttribute( "ref" );
+
+ beanBuilder.addPropertyReference( "platformTransactionManager", ref );
+
+ Element emf = DomUtils.getChildElementByTagName(persistenceElm, EMF_ATTRIBUTE);
+ ref = emf.getAttribute( "ref" );
+ beanBuilder.addPropertyReference( "entityManagerFactory", ref );
+
+ Element variablePersisters = DomUtils.getChildElementByTagName(persistenceElm, "variable-persisters");
+ if ( variablePersisters != null && variablePersisters.hasChildNodes() ) {
+ List<Element> childPersisterElems = DomUtils.getChildElementsByTagName(variablePersisters, "persister");
+ ManagedMap persistors = new ManagedMap( childPersisterElems.size() );
+ for ( Element persisterElem : childPersisterElems) {
+ String forClass = persisterElem.getAttribute( FORCLASS_ATTRIBUTE );
+ String implementation = persisterElem.getAttribute( IMPLEMENTATION_ATTRIBUTE );
+ if ( !StringUtils.hasText( forClass ) ) {
+ throw new RuntimeException( "persister element must have valid for-class attribute" );
+ }
+ if ( !StringUtils.hasText( implementation ) ) {
+ throw new RuntimeException( "persister element must have valid implementation attribute" );
+ }
+ persistors.put( forClass,
+ implementation );
+ }
+ beanBuilder.addPropertyValue( "variablePersisters", persistors );
+ }
+
+ factory.addPropertyValue( "jpaConfiguration", beanBuilder.getBeanDefinition() );
}
+ BeanDefinitionBuilder rbaseConfBuilder = BeanDefinitionBuilder.rootBeanDefinition( SessionConfiguration.class );
+ Element e = DomUtils.getChildElementByTagName(ksessionConf, KEEP_RERENCE);
+ if ( e != null && StringUtils.hasText( e.getAttribute( "enabled" ) )) {
+ rbaseConfBuilder.addPropertyValue( "keepReference", Boolean.parseBoolean( e.getAttribute( "enabled" ) ) );
+ }
- Element tnxMng = DomUtils.getChildElementByTagName(persistenceElm, TX_MANAGER_ATTRIBUTE);
- String ref = tnxMng.getAttribute( "ref" );
+ e = DomUtils.getChildElementByTagName(ksessionConf, CLOCK_TYPE);
+ if ( e != null && StringUtils.hasText( e.getAttribute( "type" ) )) {
+ rbaseConfBuilder.addPropertyValue( "clockType", ClockType.resolveClockType( e.getAttribute( "type" ) ) );
+ }
+ factory.addPropertyValue( "conf", rbaseConfBuilder.getBeanDefinition() );
- beanBuilder.addPropertyReference( "platformTransactionManager", ref );
-
- Element emf = DomUtils.getChildElementByTagName(persistenceElm, EMF_ATTRIBUTE);
- ref = emf.getAttribute( "ref" );
- beanBuilder.addPropertyReference( "entityManagerFactory", ref );
-
- Element variablePersisters = DomUtils.getChildElementByTagName(persistenceElm, "variable-persisters");
- if ( variablePersisters != null && variablePersisters.hasChildNodes() ) {
- List<Element> childPersisterElems = DomUtils.getChildElementsByTagName(variablePersisters, "persister");
- ManagedMap persistors = new ManagedMap( childPersisterElems.size() );
- for ( Element persisterElem : childPersisterElems) {
- String forClass = persisterElem.getAttribute( FORCLASS_ATTRIBUTE );
- String implementation = persisterElem.getAttribute( IMPLEMENTATION_ATTRIBUTE );
- if ( !StringUtils.hasText( forClass ) ) {
- throw new RuntimeException( "persister element must have valid for-class attribute" );
+ e = DomUtils.getChildElementByTagName(ksessionConf, WORK_ITEMS);
+ if ( e != null ) {
+ List<Element> children = DomUtils.getChildElementsByTagName( e, WORK_ITEM );
+ if ( children != null && !children.isEmpty() ) {
+ ManagedMap workDefs = new ManagedMap();
+ for ( Element child : children ) {
+ workDefs.put( child.getAttribute( "name" ),
+ new RuntimeBeanReference( child.getAttribute( "ref" ) ) );
}
- if ( !StringUtils.hasText( implementation ) ) {
- throw new RuntimeException( "persister element must have valid implementation attribute" );
- }
- persistors.put( forClass,
- implementation );
+ factory.addPropertyValue( "workItems", workDefs );
}
- beanBuilder.addPropertyValue( "variablePersisters", persistors );
- }
-
- factory.addPropertyValue( "jpaConfiguration", beanBuilder.getBeanDefinition() );
-
+ }
}
Element script = DomUtils.getChildElementByTagName(element, "script");
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-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring.xsd 2010-07-16 10:25:48 UTC (rev 33935)
@@ -26,6 +26,15 @@
</xsd:complexType>
</xsd:element>
+ <xsd:element name="resources">
+ <xsd:complexType>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element ref="resource" />
+ <xsd:element ref="resource-ref" />
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+
<xsd:element name="resource">
<xsd:complexType>
<xsd:complexContent>
@@ -35,13 +44,58 @@
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
+
+ <xsd:element name="resource-ref" type="resourceRefType" />
<xsd:element name="kbase">
<xsd:complexType>
- <xsd:choice minOccurs="0" maxOccurs="unbounded">
- <xsd:element name="resource" type="resourceType"/>
- <xsd:element name="resource-ref" type="resourceRefType"/>
- </xsd:choice>
+ <xsd:all minOccurs="0">
+ <xsd:element ref="resources" minOccurs="0" maxOccurs="1" />
+
+ <xsd:element name="configuration" minOccurs="0" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:all minOccurs="0">
+ <xsd:element name="advanced-process-rule-integration" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="enabled" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="multithread" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="enabled" type="xsd:boolean"/>
+ <xsd:attribute name="max-threads" type="xsd:positiveInteger"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="mbeans" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="enabled" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="event-processing-mode" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="mode" type="cloudModeEnum"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="work-item-definitions" minOccurs="0">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="work-item-definition" 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>
+ </xsd:all>
<xsd:attribute name="id" use="optional" type="xsd:ID"/>
<xsd:attribute name="node" use="optional" type="xsd:string"/>
</xsd:complexType>
@@ -49,11 +103,9 @@
<xsd:element name="kagent">
<xsd:complexType>
- <xsd:choice minOccurs="0" maxOccurs="unbounded">
- <xsd:element name="resource" type="resourceType"/>
- <xsd:element name="resource-ref" type="resourceRefType"/>
- </xsd:choice>
-
+ <xsd:all>
+ <xsd:element ref="resources" minOccurs="0" maxOccurs="1" />
+ </xsd:all>
<xsd:attribute name="id" use="required" type="xsd:ID"/>
<xsd:attribute name="kbase" use="required" type="xsd:string"/>
<xsd:attribute name="new-instance" use="optional" type="xsd:boolean"/>
@@ -64,7 +116,7 @@
<xsd:element name="ksession">
<xsd:complexType>
- <xsd:all>
+ <xsd:all minOccurs="0">
<xsd:element name="script" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
@@ -73,7 +125,39 @@
</xsd:complexType>
</xsd:element>
- <xsd:element ref="persistence" minOccurs="0" maxOccurs="1" />
+ <xsd:element name="configuration" minOccurs="0" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:all minOccurs="0">
+ <xsd:element ref="persistence" minOccurs="0"/>
+
+ <xsd:element name="keep-reference" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="enabled" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="clock-type" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="type" type="clockTypeEnum"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="work-item-handlers" minOccurs="0">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element name="work-item-handler" 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>
+
</xsd:all>
<xsd:attribute name="type" use="required" type="knowledgeSessionTypeEnum"/>
@@ -124,6 +208,21 @@
</xsd:restriction>
</xsd:simpleType>
+ <xsd:simpleType name="cloudModeEnum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="STREAM" />
+ <xsd:enumeration value="CLOUD" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="clockTypeEnum">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="REALTIME" />
+ <xsd:enumeration value="PSEUDO" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
<xsd:complexType name="resourceType">
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="decisiontable-conf">
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsTest.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -6,15 +6,21 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import junit.framework.TestCase;
import org.apache.log4j.lf5.util.StreamUtils;
+import org.drools.ClockType;
import org.drools.KnowledgeBase;
import org.drools.Person;
+import org.drools.RuleBaseConfiguration;
+import org.drools.SessionConfiguration;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.impl.KnowledgeAgentImpl;
import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.common.InternalRuleBase;
+import org.drools.conf.EventProcessingOption;
import org.drools.core.util.FileManager;
import org.drools.grid.ExecutionNode;
import org.drools.impl.KnowledgeBaseImpl;
@@ -23,8 +29,12 @@
import org.drools.io.ResourceChangeScanner;
import org.drools.io.ResourceFactory;
import org.drools.io.impl.ResourceChangeScannerImpl;
+import org.drools.process.core.WorkDefinition;
+import org.drools.process.instance.impl.humantask.HumanTaskHandler;
+import org.drools.reteoo.ReteooRuleBase;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
import org.drools.server.KnowledgeService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -151,17 +161,51 @@
list.size() );
}
-// public void FIXME_testBeansConstructions() {
-// ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/beans.xml" );
-// assertNotNull( context.getBean( "connection1" ) );
-// assertNotNull( context.getBean( "node1" ) );
-// KnowledgeBase bean = (KnowledgeBase) context.getBean( "kbase1" );
-// assertNotNull( bean );
-// KnowledgeServiceConfiguration kserviceConf1 = (KnowledgeServiceConfiguration) context.getBean( "service-conf-1" );
-// assertNotNull( kserviceConf1 );
-// assertEquals( "XSTREAM",
-// kserviceConf1.getMarshaller() );
-// KnowledgeService kservice = (KnowledgeService) context.getBean( "service" );
-// assertNotNull( kservice );
-// }
+ public void testConfiguration() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/session-conf-beans.xml" );
+ KnowledgeBaseImpl kbase1 = ( KnowledgeBaseImpl ) context.getBean( "kbase1" );
+ RuleBaseConfiguration rconf = ((InternalRuleBase)kbase1.getRuleBase()).getConfiguration();
+ assertTrue( rconf.isAdvancedProcessRuleIntegration() );
+ assertTrue( rconf.isMultithreadEvaluation() );
+ assertEquals( 5, rconf.getMaxThreads() );
+ assertEquals( EventProcessingOption.STREAM, rconf.getEventProcessingMode() );
+ Map<String, WorkDefinition> wds = rconf.getProcessWorkDefinitions();
+ assertEquals( 4, wds.size() );
+ assertTrue( wds.containsKey( "Email" ));
+ assertTrue( wds.containsKey( "Log" ));
+ assertTrue( wds.containsKey( "wid1" ));
+ assertTrue( wds.containsKey( "wid2" ));
+ assertNotSame( wds.get( "wid1" ), wds.get( "wid2" ));
+ assertEquals( org.drools.process.core.impl.WorkDefinitionImpl.class, wds.get( "wid1" ).getClass() );
+ assertEquals( org.drools.process.core.impl.WorkDefinitionImpl.class, wds.get( "wid2" ).getClass() );
+
+ KnowledgeBaseImpl kbase2 = ( KnowledgeBaseImpl ) context.getBean( "kbase2" );
+ rconf = ((InternalRuleBase)kbase2.getRuleBase()).getConfiguration();
+ assertFalse( rconf.isAdvancedProcessRuleIntegration() );
+ assertFalse( rconf.isMultithreadEvaluation() );
+ assertEquals( 3, rconf.getMaxThreads() );
+ assertEquals( EventProcessingOption.CLOUD, rconf.getEventProcessingMode() );
+
+ StatefulKnowledgeSessionImpl ksession1 = ( StatefulKnowledgeSessionImpl ) context.getBean( "ksession1" );
+ SessionConfiguration sconf = ksession1.session.getSessionConfiguration();
+ assertTrue( sconf.isKeepReference() );
+ assertEquals( ClockType.REALTIME_CLOCK , sconf.getClockType() );
+ Map<String, WorkItemHandler> wih = sconf.getWorkItemHandlers();
+ System.out.println( wih );
+ assertEquals( 4, wih.size() );
+ assertTrue( wih.containsKey( "wih1" ));
+ assertTrue( wih.containsKey( "wih2" ));
+ assertTrue( wih.containsKey( "Human Task" ));
+ assertTrue( wih.containsKey( "MyWork" ));
+ assertNotSame( wih.get( "wih1" ), wih.get( "wih2" ));
+ assertEquals( HumanTaskHandler.class, wih.get( "wih1" ).getClass() );
+ assertEquals( HumanTaskHandler.class, wih.get( "wih2" ).getClass() );
+
+ StatefulKnowledgeSessionImpl ksession2 = ( StatefulKnowledgeSessionImpl ) context.getBean( "ksession2" );
+ sconf = ksession2.session.getSessionConfiguration();
+ assertFalse( sconf.isKeepReference() );
+ assertEquals( ClockType.PSEUDO_CLOCK, sconf.getClockType() );
+
+
+ }
}
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -18,10 +18,12 @@
<drools:execution-node id="node1" connection="connection1" />
<drools:kbase id="kbProcessWorkItems" node="node1">
- <drools:resource type="PKG" source="file:///${temp.dir}/processWorkItems.pkg" />
- <drools:resource type="PKG" source="file:///${temp.dir}/processSubProcess.pkg" />
- <drools:resource type="PKG" source="file:///${temp.dir}/processTimer.pkg" />
- <drools:resource type="PKG" source="file:///${temp.dir}/processTimer2.pkg" />
+ <drools:resources>
+ <drools:resource type="PKG" source="file:///${temp.dir}/processWorkItems.pkg" />
+ <drools:resource type="PKG" source="file:///${temp.dir}/processSubProcess.pkg" />
+ <drools:resource type="PKG" source="file:///${temp.dir}/processTimer.pkg" />
+ <drools:resource type="PKG" source="file:///${temp.dir}/processTimer2.pkg" />
+ </drools:resources>
</drools:kbase>
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
@@ -36,10 +38,12 @@
<drools:kstore id="kstore1" />
<drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbProcessWorkItems">
- <drools:jpa-persistence>
- <drools:transaction-manager ref="txManager" />
- <drools:entity-manager-factory ref="myEmf" />
- </drools:jpa-persistence>
+ <drools:configuration>
+ <drools:jpa-persistence>
+ <drools:transaction-manager ref="txManager" />
+ <drools:entity-manager-factory ref="myEmf" />
+ </drools:jpa-persistence>
+ </drools:configuration>
</drools:ksession>
</beans>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -15,7 +15,9 @@
<drools:execution-node id="node1" connection="connection1" /> -->
<drools:kbase id="kbase1">
- <drools:resource type="DRF" source="classpath:org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf" />
+ <drools:resources>
+ <drools:resource type="DRF" source="classpath:org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf" />
+ </drools:resources>
</drools:kbase>
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
@@ -27,26 +29,19 @@
<property name="entityManagerFactory" ref="myEmf" />
</bean>
- <drools:kstore id="kstore1" />
+ <drools:kstore id="kstore1" />
- <!--drools:jpaSessionServiceFactory id="jpaSingleSessionCommandService" kbase="kbase1"
- entityManagerFactory="myEmf" transactionManager="txManager">
- <drools:variablePersisters>
- <drools:persister forClass="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
- <drools:persister forClass="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
- <drools:persister forClass="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
- </drools:variablePersisters>
- </drools:jpaSessionServiceFactory-->
-
<drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1">
- <drools:jpa-persistence>
- <drools:transaction-manager ref="txManager" />
- <drools:entity-manager-factory ref="myEmf" />
- <drools:variable-persisters>
- <drools:persister for-class="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
- <drools:persister for-class="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
- <drools:persister for-class="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
- </drools:variable-persisters>
- </drools:jpa-persistence>
+ <drools:configuration>
+ <drools:jpa-persistence>
+ <drools:transaction-manager ref="txManager" />
+ <drools:entity-manager-factory ref="myEmf" />
+ <drools:variable-persisters>
+ <drools:persister for-class="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
+ <drools:persister for-class="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
+ <drools:persister for-class="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
+ </drools:variable-persisters>
+ </drools:jpa-persistence>
+ </drools:configuration>
</drools:ksession>
</beans>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -13,15 +13,17 @@
<drools:resource id="resource1" type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
<drools:kbase id="kbase1" node="node1">
- <drools:resource source="classpath:org/drools/container/spring/IntegrationExampleTest.xls" type="DTABLE">
- <drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" />
- </drools:resource>
-
- <drools:resource-ref id="resource1"/>
-
- <drools:resource source="classpath:org/drools/container/spring/model.xsd" type="XSD">
- <drools:jaxb-conf system-id="xsd" />
- </drools:resource>
+ <drools:resources>
+ <drools:resource source="classpath:org/drools/container/spring/IntegrationExampleTest.xls" type="DTABLE">
+ <drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" />
+ </drools:resource>
+
+ <drools:resource-ref id="resource1"/>
+
+ <drools:resource source="classpath:org/drools/container/spring/model.xsd" type="XSD">
+ <drools:jaxb-conf system-id="xsd" />
+ </drools:resource>
+ </drools:resources>
</drools:kbase>
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/kagents-beans.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -18,8 +18,10 @@
<drools:ksession id="ksession2" type="stateful" kbase="kbase1"/>
- <drools:kbase id="kbase1" node="node1">
- <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ <drools:kbase id="kbase1" node="node1">
+ <drools:resources>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ </drools:resources>
</drools:kbase>
<drools:kbase id="kbase2" node="node1">
@@ -31,7 +33,9 @@
<drools:kagent id="kagent1" kbase="kbase1" new-instance="false" />
<drools:kagent id="kagent2" kbase="kbase2" new-instance="false">
- <drools:resource type="DRL" source="classpath:org/drools/container/spring/drl" />
+ <drools:resources>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/drl" />
+ </drools:resources>
</drools:kagent>
<drools:kagent id="kagent3" kbase="kbase3" new-instance="true" />
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/no-node-beans.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/no-node-beans.xml 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/no-node-beans.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -10,22 +10,14 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<drools:kbase id="kbase1">
- <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ <drools:resources>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ </drools:resources>
</drools:kbase>
<drools:ksession id="ksession1" type="stateless" kbase="kbase1"/>
<drools:ksession id="ksession2" type="stateful" kbase="kbase1"/>
-
- <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <!-- org.h2.jdbcx.JdbcDataSource -->
- <property name="driverClassName" value="org.h2.Driver" />
- <!-- jdbc:h2:mem:mydb
- jdbc:h2:tcp://localhost/DroolsFlow-->
- <property name="url" value="jdbc:h2:tcp://localhost/DroolsFlow" />
- <property name="username" value="sa" />
- <property name="password" value="" />
- </bean>
<drools:ksession id="ksession3" type="stateful" kbase="kbase1">
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/session-conf-beans.xml 2010-07-16 10:25:48 UTC (rev 33935)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:drools="http://drools.org/schema/drools-spring"
+ xmlns:drools-service="http://drools.org/schema/drools-service-spring"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd
+ http://drools.org/schema/drools-service-spring http://drools.org/schema/drools-service-spring.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <bean id="rwid1" class="org.drools.process.core.impl.WorkDefinitionImpl">
+ <property name="name" value="wid1" />
+ </bean>
+
+ <bean id="rwid2" class="org.drools.process.core.impl.WorkDefinitionImpl">
+ <property name="name" value="wid2" />
+ </bean>
+
+ <bean id="rwih1" class="org.drools.process.instance.impl.humantask.HumanTaskHandler" />
+
+ <bean id="rwih2" class="org.drools.process.instance.impl.humantask.HumanTaskHandler" />
+
+ <drools:kbase id="kbase1">
+ <drools:resources>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ </drools:resources>
+
+ <drools:configuration>
+ <drools:advanced-process-rule-integration enabled="true" />
+
+ <drools:multithread enabled="true" max-threads="5" />
+
+ <drools:mbeans enabled="true" />
+
+ <drools:event-processing-mode mode="STREAM" />
+
+ <drools:work-item-definitions>
+ <drools:work-item-definition name="wid1" ref="rwid1" />
+ <drools:work-item-definition name="wid2" ref="rwid2" />
+ </drools:work-item-definitions>
+
+ </drools:configuration>
+ </drools:kbase>
+
+ <drools:kbase id="kbase2">
+ <drools:resources>
+ <drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/>
+ </drools:resources>
+
+ <drools:configuration>
+ <drools:advanced-process-rule-integration enabled="false" />
+
+ <drools:multithread enabled="false" />
+
+ <drools:mbeans enabled="false" />
+
+ <drools:event-processing-mode mode="CLOUD" />
+ </drools:configuration>
+ </drools:kbase>
+
+
+ <drools:ksession id="ksession1" type="stateful" kbase="kbase1" >
+ <drools:configuration>
+ <drools:work-item-handlers>
+ <drools:work-item-handler name="wih1" ref="rwih1" />
+ <drools:work-item-handler name="wih2" ref="rwih2" />
+ </drools:work-item-handlers>
+ <drools:keep-reference enabled="true" />
+ <drools:clock-type type="REALTIME" />
+ </drools:configuration>
+ </drools:ksession>
+
+ <drools:ksession id="ksession2" type="stateful" kbase="kbase1" >
+ <drools:configuration>
+ <drools:keep-reference enabled="false" />
+ <drools:clock-type type="PSEUDO" />
+ </drools:configuration>
+ </drools:ksession>
+
+</beans>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2010-07-16 10:10:10 UTC (rev 33934)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2010-07-16 10:25:48 UTC (rev 33935)
@@ -12,6 +12,7 @@
import java.util.Map;
import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
import org.drools.RuleBase;
import org.drools.SessionConfiguration;
import org.drools.command.CommandService;
More information about the jboss-svn-commits
mailing list