[jboss-svn-commits] JBL Code SVN: r32639 - in labs/jbossrules/trunk: drools-container/drools-spring/src/main/java/org/drools/container/spring/beans and 13 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 23 21:59:53 EDT 2010
Author: baunax
Date: 2010-04-23 21:59:50 -0400 (Fri, 23 Apr 2010)
New Revision: 32639
Added:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandService.java
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandServiceFactory.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/JPASingleSessionCommandServiceFactoryTest.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntity.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityMethods.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityOnlyFields.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyVariableSerializable.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringPersistedVariable.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringVariablePersister.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/SingleSessionCommandService.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml
Removed:
labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties
labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandServiceTest.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/process/
Modified:
labs/jbossrules/trunk/drools-container/drools-spring/pom.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ExecutionNodeBeanFactory.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/persistence/SpringSingleSessionCommandService.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/test/resources/META-INF/persistence.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/log4j.xml
labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml
labs/jbossrules/trunk/drools-persistence-jpa/pom.xml
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
Log:
JBRULES-2332 Drools JPA- Spring Transactions
- added a factory for creating flow using spring transaction manager.
Modified: labs/jbossrules/trunk/drools-container/drools-spring/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/pom.xml 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/pom.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -97,7 +97,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.1.117</version>
+ <version>1.2.128</version>
<scope>test</scope>
</dependency>
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ExecutionNodeBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ExecutionNodeBeanFactory.java 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/ExecutionNodeBeanFactory.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -29,7 +29,7 @@
}
public void afterPropertiesSet() throws Exception {
- node = connection.getExecutionNode(null);
+ node = connection.getExecutionNode();
}
public void setId(String id) {
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandService.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandService.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,9 @@
+package org.drools.container.spring.beans;
+
+import org.drools.command.SingleSessionCommandService;
+
+
+public interface JPASingleSessionCommandService {
+ public SingleSessionCommandService createNew();
+ public SingleSessionCommandService load(int sessionId);
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandServiceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandServiceFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandServiceFactory.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,155 @@
+package org.drools.container.spring.beans;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.SessionConfiguration;
+import org.drools.command.SingleSessionCommandService;
+import org.drools.container.spring.beans.persistence.SpringSingleSessionCommandService;
+import org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory;
+import org.drools.persistence.processinstance.JPASignalManagerFactory;
+import org.drools.persistence.processinstance.JPAWorkItemManagerFactory;
+import org.drools.persistence.processinstance.VariablePersistenceStrategyFactory;
+import org.drools.persistence.processinstance.persisters.VariablePersister;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.transaction.PlatformTransactionManager;
+
+public class JPASingleSessionCommandServiceFactory implements FactoryBean, InitializingBean {
+
+ private Environment environment;
+ private KnowledgeBase knowledgeBase;
+ private EntityManagerFactory entityManagerFactory;
+ private PlatformTransactionManager transactionManager;
+ private Map<String, Class<? extends VariablePersister>> variablePersisters;
+
+ public Environment getEnvironment() {
+ return environment;
+ }
+
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
+ }
+
+ public KnowledgeBase getKnowledgeBase() {
+ return knowledgeBase;
+ }
+
+ public void setKnowledgeBase(KnowledgeBase knowledgeBase) {
+ this.knowledgeBase = knowledgeBase;
+ }
+
+ public EntityManagerFactory getEntityManagerFactory() {
+ return entityManagerFactory;
+ }
+
+ public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
+ this.entityManagerFactory = entityManagerFactory;
+ }
+
+ public PlatformTransactionManager getTransactionManager() {
+ return transactionManager;
+ }
+
+ public void setTransactionManager(PlatformTransactionManager transactionManager) {
+ this.transactionManager = transactionManager;
+ }
+
+ public Map<String, Class<? extends VariablePersister>> getVariablePersisters() {
+ if (variablePersisters == null) {
+ variablePersisters = new HashMap<String, Class<? extends VariablePersister>>();
+ }
+ return variablePersisters;
+ }
+
+ public void setVariablePersisters(Map<String, Class<? extends VariablePersister>> variablePersisters) {
+ this.variablePersisters = variablePersisters;
+ }
+
+ /**
+ * @see org.springframework.beans.factory.FactoryBean#getObject()
+ */
+ public Object getObject() throws Exception {
+
+ return new JPASessionService(getEnvironment(), getKnowledgeBase(), getEntityManagerFactory(),
+ getTransactionManager());
+ }
+
+ public Class<JPASingleSessionCommandService> getObjectType() {
+ return JPASingleSessionCommandService.class;
+ }
+
+ public boolean isSingleton() {
+ return false;
+ }
+
+ public void afterPropertiesSet() throws Exception {
+ if (getEnvironment() == null) {
+ setEnvironment(KnowledgeBaseFactory.newEnvironment());
+ }
+ if (getTransactionManager() == null) {
+ throw new IllegalArgumentException("transactionManager property is mandatory");
+ }
+ if (getEntityManagerFactory() == null) {
+ throw new IllegalArgumentException("entityManagerFactory property is mandatory");
+ }
+ if (getKnowledgeBase() == null) {
+ throw new IllegalArgumentException("knowledgeBase property is mandatory");
+ }
+ if (!getVariablePersisters().isEmpty()) {
+ for (Map.Entry<String, Class<? extends VariablePersister>> entry : getVariablePersisters().entrySet()) {
+ VariablePersistenceStrategyFactory.getVariablePersistenceStrategy().setPersister(entry.getKey(),
+ entry.getValue().getName());
+ }
+ }
+ }
+
+ private static class JPASessionService implements JPASingleSessionCommandService {
+
+ public JPASessionService(Environment environment, KnowledgeBase knowledgeBase,
+ EntityManagerFactory entityManagerFactory, PlatformTransactionManager transactionManager) {
+ super();
+ this.environment = environment;
+ this.knowledgeBase = knowledgeBase;
+ this.entityManagerFactory = entityManagerFactory;
+ this.transactionManager = transactionManager;
+ }
+
+ private Environment environment;
+ private KnowledgeBase knowledgeBase;
+ private EntityManagerFactory entityManagerFactory;
+ private PlatformTransactionManager transactionManager;
+
+ public SingleSessionCommandService createNew() {
+ return new SpringSingleSessionCommandService(knowledgeBase, getSessionConfiguration(), getEnvironment());
+ }
+
+ public SingleSessionCommandService load(int sessionId) {
+ return new SpringSingleSessionCommandService(sessionId, knowledgeBase, getSessionConfiguration(),
+ getEnvironment());
+ }
+
+ public Environment getEnvironment() {
+ environment.set(EnvironmentName.ENTITY_MANAGER_FACTORY, entityManagerFactory);
+ environment.set(EnvironmentName.TRANSACTION_MANAGER, transactionManager);
+ return environment;
+ }
+
+ private SessionConfiguration getSessionConfiguration() {
+ Properties properties = new Properties();
+ properties.setProperty("drools.commandService", SpringSingleSessionCommandService.class.getName());
+ properties.setProperty("drools.processInstanceManagerFactory", JPAProcessInstanceManagerFactory.class
+ .getName());
+ properties.setProperty("drools.workItemManagerFactory", JPAWorkItemManagerFactory.class.getName());
+ properties.setProperty("drools.processSignalManagerFactory", JPASignalManagerFactory.class.getName());
+ return new SessionConfiguration(properties);
+ }
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/JPASingleSessionCommandServiceFactory.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/KnowledgeBaseBeanFactory.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -39,8 +39,7 @@
public void afterPropertiesSet() throws Exception {
if (node == null) {
- LocalConnection connection = new LocalConnection();
- node = connection.getExecutionNode(null);
+ node = new LocalConnection().getExecutionNode();
}
KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandService.java 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandService.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -7,8 +7,8 @@
import org.drools.KnowledgeBase;
import org.drools.RuleBase;
import org.drools.SessionConfiguration;
-import org.drools.command.CommandService;
import org.drools.command.Context;
+import org.drools.command.SingleSessionCommandService;
import org.drools.command.impl.ContextImpl;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
@@ -19,6 +19,7 @@
import org.drools.persistence.processinstance.JPAWorkItemManager;
import org.drools.persistence.session.JPASessionMarshallingHelper;
import org.drools.persistence.session.SessionInfo;
+import org.drools.persistence.session.SingleSessionCommandService.EndOperationListenerImpl;
import org.drools.reteoo.ReteooStatefulSession;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
@@ -31,7 +32,7 @@
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
-public class SpringSingleSessionCommandService implements CommandService {
+public class SpringSingleSessionCommandService implements SingleSessionCommandService {
private JpaTemplate jpaTemplate;
private SessionInfo sessionInfo;
private JPASessionMarshallingHelper marshallingHelper;
@@ -40,7 +41,7 @@
private KnowledgeCommandContext kContext;
private PlatformTransactionManager transactionManager;
- public void checkEnvironment(Environment env) {
+ private void checkEnvironment(Environment env) {
if (env.get(EnvironmentName.ENTITY_MANAGER_FACTORY) == null) {
throw new IllegalArgumentException("Environment must have an EntityManagerFactory");
}
@@ -92,13 +93,17 @@
public Object doInTransaction(TransactionStatus status) {
Object result = jpaTemplate.execute(new JpaCallback() {
public Object doInJpa(EntityManager em) throws PersistenceException {
- SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, em);
- em.persist(sessionInfo);
- // update the session id to be the same as the session info id
- ((StatefulKnowledgeSessionImpl) ksession).session.setId(sessionInfo.getId());
- em.flush();
- SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
- return null;
+ try {
+ SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, em);
+ em.persist(sessionInfo);
+ // update the session id to be the same as the session info id
+ ((StatefulKnowledgeSessionImpl) ksession).session.setId(sessionInfo.getId());
+ ((StatefulKnowledgeSessionImpl) ksession).session.setEndOperationListener( new EndOperationListenerImpl( sessionInfo ) );
+ em.flush();
+ return null;
+ } finally {
+ SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
+ }
}
});
return result;
@@ -120,31 +125,34 @@
return jpaTemplate.execute(new JpaCallback() {
public Object doInJpa(EntityManager em) throws PersistenceException {
- SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, em);
- sessionInfo = em.find(SessionInfo.class, sessionId);
+ try {
+ SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, em);
+ sessionInfo = em.find(SessionInfo.class, sessionId);
- if (sessionInfo == null) {
- SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
- throw new RuntimeException("Could not find session data for id " + sessionId);
- }
+ if (sessionInfo == null) {
+ SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
+ throw new RuntimeException("Could not find session data for id " + sessionId);
+ }
- marshallingHelper = new JPASessionMarshallingHelper(sessionInfo,
- kbase,
- localConf,
- SpringSingleSessionCommandService.this.env);
+ marshallingHelper = new JPASessionMarshallingHelper(sessionInfo, kbase, localConf,
+ SpringSingleSessionCommandService.this.env);
- sessionInfo.setJPASessionMashallingHelper(marshallingHelper);
- ksession = marshallingHelper.getObject();
- kContext = new KnowledgeCommandContext(new ContextImpl("ksession", null), null, null, ksession,
- null);
- ((JPASignalManager) ((StatefulKnowledgeSessionImpl) ksession).session.getSignalManager())
- .setCommandService(SpringSingleSessionCommandService.this);
+ sessionInfo.setJPASessionMashallingHelper(marshallingHelper);
+ ksession = marshallingHelper.getObject();
+ kContext = new KnowledgeCommandContext(new ContextImpl("ksession", null), null, null,
+ ksession, null);
+ ((JPASignalManager) ((StatefulKnowledgeSessionImpl) ksession).session.getSignalManager())
+ .setCommandService(SpringSingleSessionCommandService.this);
- // update the session id to be the same as the session info id
- ((StatefulKnowledgeSessionImpl) ksession).session.setId(sessionInfo.getId());
- em.flush();
- SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
- return sessionInfo;
+ // update the session id to be the same as the
+ // session info id
+ ((StatefulKnowledgeSessionImpl) ksession).session.setId(sessionInfo.getId());
+ ((StatefulKnowledgeSessionImpl) ksession).session.setEndOperationListener( new EndOperationListenerImpl( sessionInfo ) );
+ em.flush();
+ return sessionInfo;
+ } finally {
+ SpringSingleSessionCommandService.this.env.set(EnvironmentName.ENTITY_MANAGER, null);
+ }
}
});
}
@@ -165,18 +173,18 @@
T result = (T) jpaTemplate.execute(new JpaCallback() {
public Object doInJpa(EntityManager em) {
env.set(EnvironmentName.ENTITY_MANAGER, em);
- SessionInfo sessionInfoMerged = em.merge(sessionInfo);
- sessionInfoMerged.setJPASessionMashallingHelper(sessionInfo.getJPASessionMashallingHelper());
- sessionInfo = sessionInfoMerged;
- // sessionInfo = em.find(SessionInfo.class, sessionInfo.getId());
- // sessionInfo.setJPASessionMashallingHelper(marshallingHelper);
- // marshallingHelper.loadSnapshot(sessionInfo.getData(), ksession);
- //sessionInfo.setDirty(); // TODO FIXME baunux: this should not be needed now that we use idle time, I think, double check.
-
- T result = command.execute(kContext);
- em.flush();
- env.set(EnvironmentName.ENTITY_MANAGER, null);
- return result;
+ try {
+ SessionInfo sessionInfoMerged = em.merge(sessionInfo);
+ sessionInfoMerged.setJPASessionMashallingHelper(sessionInfo.getJPASessionMashallingHelper());
+ sessionInfo = sessionInfoMerged;
+ ((StatefulKnowledgeSessionImpl) ksession).session.setEndOperationListener( new EndOperationListenerImpl( sessionInfo ) );
+
+ T result = command.execute(kContext);
+ em.flush();
+ return result;
+ } finally {
+ env.set(EnvironmentName.ENTITY_MANAGER, null);
+ }
}
});
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-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeBaseDefinitionParser.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -22,9 +22,11 @@
BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(KnowledgeBaseBeanFactory.class);
String nodeRef = element.getAttribute(EXECUTION_NODE_ATTRIBUTE);
- factory.addPropertyReference(EXECUTION_NODE_ATTRIBUTE, nodeRef);
+ if (nodeRef != null && nodeRef.length() > 0) {
+ factory.addPropertyReference(EXECUTION_NODE_ATTRIBUTE, nodeRef);
+ }
+
List<Element> childElements = DomUtils.getChildElementsByTagName(element, "resource");
-
ManagedList resources = null;
if (childElements != null && !childElements.isEmpty()) {
resources = new ManagedList();
Deleted: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/log4j.properties 2010-04-24 01:59:50 UTC (rev 32639)
@@ -1,4 +0,0 @@
-log4j.rootLogger=DEBUG, stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/JPASingleSessionCommandServiceFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/JPASingleSessionCommandServiceFactoryTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/JPASingleSessionCommandServiceFactoryTest.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,668 @@
+package org.drools.container.spring.beans.persistence;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.Properties;
+
+import org.drools.command.SingleSessionCommandService;
+import org.drools.command.runtime.process.CompleteWorkItemCommand;
+import org.drools.command.runtime.process.GetProcessInstanceCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.ProcessBuilder;
+import org.drools.container.spring.beans.JPASingleSessionCommandService;
+import org.drools.core.util.DroolsStreamUtils;
+import org.drools.process.core.Work;
+import org.drools.process.core.impl.WorkImpl;
+import org.drools.process.core.timer.Timer;
+import org.drools.rule.Package;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItem;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.StartNode;
+import org.drools.workflow.core.node.SubProcessNode;
+import org.drools.workflow.core.node.TimerNode;
+import org.drools.workflow.core.node.WorkItemNode;
+import org.drools.workflow.instance.node.SubProcessNodeInstance;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import static org.junit.Assert.*;
+
+public class JPASingleSessionCommandServiceFactoryTest {
+ private static final String TMPDIR = System.getProperty("java.io.tmpdir");
+ private static final Logger log = LoggerFactory.getLogger(JPASingleSessionCommandServiceFactoryTest.class);
+ private static Server h2Server;
+
+ private ClassPathXmlApplicationContext ctx;
+
+ @BeforeClass
+ public static void startH2Database() throws Exception {
+ DeleteDbFiles.execute("", "DroolsFlow", true);
+ h2Server = Server.createTcpServer(new String[0]);
+ h2Server.start();
+ }
+
+ @AfterClass
+ public static void stopH2Database() throws Exception {
+ log.info("stoping database");
+ h2Server.stop();
+ DeleteDbFiles.execute("", "DroolsFlow", true);
+ }
+
+ @BeforeClass
+ public static void generatePackages() {
+ try {
+ log.info("creating: {}", TMPDIR + "/processWorkItems.pkg");
+ writePackage(getProcessWorkItems(), new File(TMPDIR + "/processWorkItems.pkg"));
+
+ log.info("creating: {}", TMPDIR + "/processSubProcess.pkg");
+ writePackage(getProcessSubProcess(), new File(TMPDIR + "/processSubProcess.pkg"));
+
+ log.info("creating: {}", TMPDIR + "/processTimer.pkg");
+ writePackage(getProcessTimer(), new File(TMPDIR + "/processTimer.pkg"));
+
+ log.info("creating: {}", TMPDIR + "/processTimer2.pkg");
+ writePackage(getProcessTimer2(), new File(TMPDIR + "/processTimer2.pkg"));
+ } catch (Exception e) {
+ log.error("can't create packages!", e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ @AfterClass
+ public static void deletePackages() {
+ new File(TMPDIR + "/processWorkItems.pkg").delete();
+ new File(TMPDIR + "/processSubProcess.pkg").delete();
+ new File(TMPDIR + "/processTimer.pkg").delete();
+ new File(TMPDIR + "/processTimer2.pkg").delete();
+ }
+
+ @Before
+ public void createSpringContext() {
+ try {
+ log.info("creating spring context");
+ PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
+ Properties properties = new Properties();
+ properties.setProperty("temp.dir", TMPDIR);
+ configurer.setProperties(properties);
+ ctx = new ClassPathXmlApplicationContext();
+ ctx.addBeanFactoryPostProcessor(configurer);
+ ctx.setConfigLocation("org/drools/container/spring/beans/persistence/beans.xml");
+ ctx.refresh();
+ } catch (Exception e) {
+ log.error("can't create spring context", e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ @After
+ public void destrySpringContext() {
+ log.info("destroy spring context");
+ ctx.destroy();
+ }
+
+ @Test
+ public void testPersistenceWorkItems() throws Exception {
+ log.info("---> get bean jpaSingleSessionCommandService");
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+
+ log.info("---> create new SingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+ log.info("---> created SingleSessionCommandService id: " + sessionId);
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ log.info( "Started process instance {}", processInstance.getId() );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ service.dispose();
+ }
+
+ @Test
+ public void testPersistenceWorkItemsUserTransaction() throws Exception {
+
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ log.info( "Started process instance {}", processInstance.getId() );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ service.dispose();
+ }
+
+ private static Package getProcessWorkItems() {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId( "org.drools.test.TestProcess" );
+ process.setName( "TestProcess" );
+ process.setPackageName( "org.drools.test" );
+ StartNode start = new StartNode();
+ start.setId( 1 );
+ start.setName( "Start" );
+ process.addNode( start );
+ ActionNode actionNode = new ActionNode();
+ actionNode.setId( 2 );
+ actionNode.setName( "Action" );
+ DroolsConsequenceAction action = new DroolsConsequenceAction();
+ action.setDialect( "java" );
+ action.setConsequence( "System.out.println(\"Executed action\");" );
+ actionNode.setAction( action );
+ process.addNode( actionNode );
+ new ConnectionImpl( start,
+ Node.CONNECTION_DEFAULT_TYPE,
+ actionNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ WorkItemNode workItemNode = new WorkItemNode();
+ workItemNode.setId( 3 );
+ workItemNode.setName( "WorkItem1" );
+ Work work = new WorkImpl();
+ work.setName( "MyWork" );
+ workItemNode.setWork( work );
+ process.addNode( workItemNode );
+ new ConnectionImpl( actionNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ workItemNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ WorkItemNode workItemNode2 = new WorkItemNode();
+ workItemNode2.setId( 4 );
+ workItemNode2.setName( "WorkItem2" );
+ work = new WorkImpl();
+ work.setName( "MyWork" );
+ workItemNode2.setWork( work );
+ process.addNode( workItemNode2 );
+ new ConnectionImpl( workItemNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ workItemNode2,
+ Node.CONNECTION_DEFAULT_TYPE );
+ WorkItemNode workItemNode3 = new WorkItemNode();
+ workItemNode3.setId( 5 );
+ workItemNode3.setName( "WorkItem3" );
+ work = new WorkImpl();
+ work.setName( "MyWork" );
+ workItemNode3.setWork( work );
+ process.addNode( workItemNode3 );
+ new ConnectionImpl( workItemNode2,
+ Node.CONNECTION_DEFAULT_TYPE,
+ workItemNode3,
+ Node.CONNECTION_DEFAULT_TYPE );
+ EndNode end = new EndNode();
+ end.setId( 6 );
+ end.setName( "End" );
+ process.addNode( end );
+ new ConnectionImpl( workItemNode3,
+ Node.CONNECTION_DEFAULT_TYPE,
+ end,
+ Node.CONNECTION_DEFAULT_TYPE );
+
+ PackageBuilder packageBuilder = new PackageBuilder();
+ ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+
+
+ return packageBuilder.getPackage() ;
+ }
+
+ public static void writePackage(Package pkg, File dest) {
+ OutputStream out = null;
+ try {
+ out = new BufferedOutputStream(new FileOutputStream(dest));
+ DroolsStreamUtils.streamOut(out, pkg);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (out != null) {
+ try {
+ out.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testPersistenceSubProcess() {
+
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.ProcessSubProcess" );
+ RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.execute( startProcessCommand );
+ log.info( "Started process instance {}", processInstance.getId() );
+ long processInstanceId = processInstance.getId();
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstanceId );
+ processInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+
+ Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
+ assertEquals( 1,
+ nodeInstances.size() );
+ SubProcessNodeInstance subProcessNodeInstance = (SubProcessNodeInstance) nodeInstances.iterator().next();
+ long subProcessInstanceId = subProcessNodeInstance.getProcessInstanceId();
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( subProcessInstanceId );
+ RuleFlowProcessInstance subProcessInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
+ assertNotNull( subProcessInstance );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( subProcessInstanceId );
+ subProcessInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
+ assertNull( subProcessInstance );
+
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstanceId );
+ processInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ service.dispose();
+ }
+
+ private static Package getProcessSubProcess() {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId( "org.drools.test.ProcessSubProcess" );
+ process.setName( "ProcessSubProcess" );
+ process.setPackageName( "org.drools.test" );
+ StartNode start = new StartNode();
+ start.setId( 1 );
+ start.setName( "Start" );
+ process.addNode( start );
+ ActionNode actionNode = new ActionNode();
+ actionNode.setId( 2 );
+ actionNode.setName( "Action" );
+ DroolsConsequenceAction action = new DroolsConsequenceAction();
+ action.setDialect( "java" );
+ action.setConsequence( "System.out.println(\"Executed action\");" );
+ actionNode.setAction( action );
+ process.addNode( actionNode );
+ new ConnectionImpl( start,
+ Node.CONNECTION_DEFAULT_TYPE,
+ actionNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ SubProcessNode subProcessNode = new SubProcessNode();
+ subProcessNode.setId( 3 );
+ subProcessNode.setName( "SubProcess" );
+ subProcessNode.setProcessId( "org.drools.test.SubProcess" );
+ process.addNode( subProcessNode );
+ new ConnectionImpl( actionNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ subProcessNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ EndNode end = new EndNode();
+ end.setId( 4 );
+ end.setName( "End" );
+ process.addNode( end );
+ new ConnectionImpl( subProcessNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ end,
+ Node.CONNECTION_DEFAULT_TYPE );
+
+ PackageBuilder packageBuilder = new PackageBuilder();
+ ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+
+ process = new RuleFlowProcess();
+ process.setId( "org.drools.test.SubProcess" );
+ process.setName( "SubProcess" );
+ process.setPackageName( "org.drools.test" );
+ start = new StartNode();
+ start.setId( 1 );
+ start.setName( "Start" );
+ process.addNode( start );
+ actionNode = new ActionNode();
+ actionNode.setId( 2 );
+ actionNode.setName( "Action" );
+ action = new DroolsConsequenceAction();
+ action.setDialect( "java" );
+ action.setConsequence( "System.out.println(\"Executed action\");" );
+ actionNode.setAction( action );
+ process.addNode( actionNode );
+ new ConnectionImpl( start,
+ Node.CONNECTION_DEFAULT_TYPE,
+ actionNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ WorkItemNode workItemNode = new WorkItemNode();
+ workItemNode.setId( 3 );
+ workItemNode.setName( "WorkItem1" );
+ Work work = new WorkImpl();
+ work.setName( "MyWork" );
+ workItemNode.setWork( work );
+ process.addNode( workItemNode );
+ new ConnectionImpl( actionNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ workItemNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ end = new EndNode();
+ end.setId( 6 );
+ end.setName( "End" );
+ process.addNode( end );
+ new ConnectionImpl( workItemNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ end,
+ Node.CONNECTION_DEFAULT_TYPE );
+
+ processBuilder.buildProcess( process,
+ null );
+ return packageBuilder.getPackage();
+ }
+
+ @Test
+ public void testPersistenceTimer() throws Exception {
+ log.info("---> get bean jpaSingleSessionCommandService");
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+
+ log.info("---> create new SingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+ log.info("---> created SingleSessionCommandService id: " + sessionId);
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.ProcessTimer" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ long procId = processInstance.getId();
+ log.info( "---> Started ProcessTimer id: {}", procId );
+ service.dispose();
+ log.info( "---> session disposed" );
+
+ service = jpaService.load(sessionId);
+ log.info( "---> load session: " + sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( procId );
+ processInstance = service.execute( getProcessInstanceCommand );
+ log.info("---> GetProcessInstanceCommand id: " + procId);
+ assertNotNull( processInstance );
+ log.info( "---> session disposed" );
+ service.dispose();
+
+ service = jpaService.load(sessionId);
+ log.info( "---> load session: " + sessionId);
+ Thread.sleep( 3000 );
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( procId );
+ log.info("---> GetProcessInstanceCommand id: " + procId);
+ processInstance = service.execute( getProcessInstanceCommand );
+ log.info( "---> session disposed" );
+ assertNull( processInstance );
+ }
+
+ private static Package getProcessTimer() {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId( "org.drools.test.ProcessTimer" );
+ process.setName( "ProcessTimer" );
+ process.setPackageName( "org.drools.test" );
+ StartNode start = new StartNode();
+ start.setId( 1 );
+ start.setName( "Start" );
+ process.addNode( start );
+ TimerNode timerNode = new TimerNode();
+ timerNode.setId( 2 );
+ timerNode.setName( "Timer" );
+ Timer timer = new Timer();
+ timer.setDelay( "2000" );
+ timerNode.setTimer( timer );
+ process.addNode( timerNode );
+ new ConnectionImpl( start,
+ Node.CONNECTION_DEFAULT_TYPE,
+ timerNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ ActionNode actionNode = new ActionNode();
+ actionNode.setId( 3 );
+ actionNode.setName( "Action" );
+ DroolsConsequenceAction action = new DroolsConsequenceAction();
+ action.setDialect( "java" );
+ action.setConsequence( "System.out.println(\"Executed action\");" );
+ actionNode.setAction( action );
+ process.addNode( actionNode );
+ new ConnectionImpl( timerNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ actionNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ EndNode end = new EndNode();
+ end.setId( 6 );
+ end.setName( "End" );
+ process.addNode( end );
+ new ConnectionImpl( actionNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ end,
+ Node.CONNECTION_DEFAULT_TYPE );
+
+ PackageBuilder packageBuilder = new PackageBuilder();
+ ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+ return packageBuilder.getPackage();
+ }
+
+ @Test
+ public void testPersistenceTimer2() throws Exception {
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.ProcessTimer2" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ log.info( "Started process instance {}", processInstance.getId() );
+
+ Thread.sleep( 2000 );
+
+ service = jpaService.load(sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ }
+
+ private static Package getProcessTimer2() {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId( "org.drools.test.ProcessTimer2" );
+ process.setName( "ProcessTimer2" );
+ process.setPackageName( "org.drools.test" );
+ StartNode start = new StartNode();
+ start.setId( 1 );
+ start.setName( "Start" );
+ process.addNode( start );
+ TimerNode timerNode = new TimerNode();
+ timerNode.setId( 2 );
+ timerNode.setName( "Timer" );
+ Timer timer = new Timer();
+ timer.setDelay( "0" );
+ timerNode.setTimer( timer );
+ process.addNode( timerNode );
+ new ConnectionImpl( start,
+ Node.CONNECTION_DEFAULT_TYPE,
+ timerNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ ActionNode actionNode = new ActionNode();
+ actionNode.setId( 3 );
+ actionNode.setName( "Action" );
+ DroolsConsequenceAction action = new DroolsConsequenceAction();
+ action.setDialect( "java" );
+ action.setConsequence( "try { Thread.sleep(1000); } catch (Throwable t) {} System.out.println(\"Executed action\");" );
+ actionNode.setAction( action );
+ process.addNode( actionNode );
+ new ConnectionImpl( timerNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ actionNode,
+ Node.CONNECTION_DEFAULT_TYPE );
+ EndNode end = new EndNode();
+ end.setId( 6 );
+ end.setName( "End" );
+ process.addNode( end );
+ new ConnectionImpl( actionNode,
+ Node.CONNECTION_DEFAULT_TYPE,
+ end,
+ Node.CONNECTION_DEFAULT_TYPE );
+
+ PackageBuilder packageBuilder = new PackageBuilder();
+ ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+ return packageBuilder.getPackage();
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/JPASingleSessionCommandServiceFactoryTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntity.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntity.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,87 @@
+package org.drools.container.spring.beans.persistence;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author salaboy
+ */
+ at Entity
+public class MyEntity implements Serializable {
+
+
+ private static final long serialVersionUID = 1L;
+
+ @Id @GeneratedValue(strategy=GenerationType.AUTO)
+ private Long id;
+ private String test;
+
+ public MyEntity(){}
+
+ public MyEntity(String string) {
+ this.test= string;
+ }
+
+ /**
+ * @return the id
+ */
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the test
+ */
+ public String getTest() {
+ return test;
+ }
+
+ /**
+ * @param test the test to set
+ */
+ public void setTest(String test) {
+ this.test = test;
+ }
+ public String toString(){
+ return "VARIABLE: " +this.getId() + " - " + this.getTest();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final MyEntity other = (MyEntity) obj;
+ if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
+ return false;
+ }
+ if ((this.test == null) ? (other.test != null) : !this.test.equals(other.test)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
+ hash = 41 * hash + (this.test != null ? this.test.hashCode() : 0);
+ return hash;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntity.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityMethods.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityMethods.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityMethods.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,86 @@
+package org.drools.container.spring.beans.persistence;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author salaboy
+ */
+ at Entity
+public class MyEntityMethods implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+
+ private Long id;
+ private String test;
+
+ public MyEntityMethods(){}
+
+ public MyEntityMethods(String string) {
+ this.test= string;
+ }
+
+ /**
+ * @return the id
+ */
+ @Id @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the test
+ */
+ public String getTest() {
+ return test;
+ }
+
+ /**
+ * @param test the test to set
+ */
+ public void setTest(String test) {
+ this.test = test;
+ }
+ public String toString(){
+ return "VARIABLE: " +this.getId() + " - " + this.getTest();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final MyEntityMethods other = (MyEntityMethods) obj;
+ if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
+ return false;
+ }
+ if ((this.test == null) ? (other.test != null) : !this.test.equals(other.test)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
+ hash = 41 * hash + (this.test != null ? this.test.hashCode() : 0);
+ return hash;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityMethods.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityOnlyFields.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityOnlyFields.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityOnlyFields.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,60 @@
+package org.drools.container.spring.beans.persistence;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author salaboy
+ */
+ at Entity
+public class MyEntityOnlyFields implements Serializable {
+
+
+ private static final long serialVersionUID = 1L;
+
+ @Id @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long id;
+ public String test;
+
+ public MyEntityOnlyFields(){}
+
+ public MyEntityOnlyFields(String string) {
+ this.test= string;
+ }
+
+ public String toString(){
+ return "VARIABLE: " + id + " - " + test;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final MyEntityOnlyFields other = (MyEntityOnlyFields) obj;
+ if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
+ return false;
+ }
+ if ((this.test == null) ? (other.test != null) : !this.test.equals(other.test)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
+ hash = 41 * hash + (this.test != null ? this.test.hashCode() : 0);
+ return hash;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyEntityOnlyFields.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyVariableSerializable.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyVariableSerializable.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyVariableSerializable.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,59 @@
+package org.drools.container.spring.beans.persistence;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MyVariableSerializable implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String text = "";
+
+ public MyVariableSerializable(String string) {
+ this.text = string;
+ }
+
+ /**
+ * @return the text
+ */
+ public String getText() {
+ return text;
+ }
+
+ /**
+ * @param text the text to set
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final MyVariableSerializable other = (MyVariableSerializable) obj;
+ if ((this.text == null) ? (other.text != null) : !this.text.equals(other.text)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 37 * hash + (this.text != null ? this.text.hashCode() : 0);
+ return hash;
+ }
+
+ public String toString(){
+ return "Serializable Variable: "+this.getText();
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/MyVariableSerializable.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandServiceTest.java 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/SpringSingleSessionCommandServiceTest.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -1,659 +0,0 @@
-package org.drools.container.spring.beans.persistence;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-
-import javax.persistence.EntityManagerFactory;
-
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.SessionConfiguration;
-import org.drools.command.runtime.process.CompleteWorkItemCommand;
-import org.drools.command.runtime.process.GetProcessInstanceCommand;
-import org.drools.command.runtime.process.StartProcessCommand;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.ProcessBuilder;
-import org.drools.definition.KnowledgePackage;
-import org.drools.definitions.impl.KnowledgePackageImp;
-import org.drools.helper.FileHelper;
-import org.drools.impl.KnowledgeBaseImpl;
-import org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory;
-import org.drools.persistence.processinstance.JPASignalManagerFactory;
-import org.drools.persistence.processinstance.JPAWorkItemManagerFactory;
-import org.drools.process.core.Work;
-import org.drools.process.core.impl.WorkImpl;
-import org.drools.process.core.timer.Timer;
-import org.drools.rule.Package;
-import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.ruleflow.instance.RuleFlowProcessInstance;
-import org.drools.runtime.Environment;
-import org.drools.runtime.EnvironmentName;
-import org.drools.runtime.process.NodeInstance;
-import org.drools.runtime.process.ProcessInstance;
-import org.drools.runtime.process.WorkItem;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.core.impl.ConnectionImpl;
-import org.drools.workflow.core.impl.DroolsConsequenceAction;
-import org.drools.workflow.core.node.ActionNode;
-import org.drools.workflow.core.node.EndNode;
-import org.drools.workflow.core.node.StartNode;
-import org.drools.workflow.core.node.SubProcessNode;
-import org.drools.workflow.core.node.TimerNode;
-import org.drools.workflow.core.node.WorkItemNode;
-import org.drools.workflow.instance.node.SubProcessNodeInstance;
-import org.h2.tools.Server;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.transaction.PlatformTransactionManager;
-
-public class SpringSingleSessionCommandServiceTest {
- private static final Logger log = LoggerFactory.getLogger(SpringSingleSessionCommandServiceTest.class);
- private static Server h2Server;
-
- private ClassPathXmlApplicationContext ctx;
- private EntityManagerFactory emf;
- private PlatformTransactionManager txManager;
-
- @BeforeClass
- public static void startH2Database() throws Exception {
- File dbDir = new File(System.getProperty("java.io.tmpdir") + "/_droolsFlowDB");
- if (dbDir.exists()) {
- log.info("database exists, deleting before run tests, db location: {}", dbDir.getAbsolutePath());
- FileHelper.remove(dbDir);
- }
- dbDir.mkdirs();
- log.info("creating database on: {}", dbDir );
- h2Server = Server.createTcpServer(new String[] {"-baseDir " + dbDir.getAbsolutePath()});
- h2Server.start();
- }
-
- @AfterClass
- public static void stopH2Database() {
- log.info("stoping database");
- h2Server.stop();
- File dbDir = new File(System.getProperty("java.io.tmpdir") + "/_droolsFlowDB");
- log.info("deleting database: {}", dbDir.getAbsoluteFile());
- FileHelper.remove(dbDir);
- }
-
- @Before
- public void createSpringContext() {
- log.info("creating spring context");
- ctx = new ClassPathXmlApplicationContext("org/drools/container/spring/beans/persistence/beans.xml");
- emf = (EntityManagerFactory) ctx.getBean("myEmf");
- txManager = (PlatformTransactionManager) ctx.getBean("txManager");
- }
-
- @After
- public void destrySpringContext() {
- log.info("destroy spring context");
- ctx.destroy();
- }
-
- private SpringSingleSessionCommandService buildCommandService(KnowledgeBase kbase) {
- Environment env = KnowledgeBaseFactory.newEnvironment();
- env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
- env.set(EnvironmentName.TRANSACTION_MANAGER, txManager);
- Properties properties = new Properties();
- properties.setProperty( "drools.commandService",
- SpringSingleSessionCommandService.class.getName() );
- properties.setProperty( "drools.processInstanceManagerFactory",
- JPAProcessInstanceManagerFactory.class.getName() );
- properties.setProperty( "drools.workItemManagerFactory",
- JPAWorkItemManagerFactory.class.getName() );
- properties.setProperty( "drools.processSignalManagerFactory",
- JPASignalManagerFactory.class.getName() );
- SessionConfiguration config = new SessionConfiguration( properties );
-
- return new SpringSingleSessionCommandService( kbase, config, env );
- }
-
- private SpringSingleSessionCommandService buildCommandService(int sessionId, KnowledgeBase kbase) {
- Environment env = KnowledgeBaseFactory.newEnvironment();
- env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
- env.set(EnvironmentName.TRANSACTION_MANAGER, txManager);
- Properties properties = new Properties();
- properties.setProperty( "drools.commandService",
- SpringSingleSessionCommandService.class.getName() );
- properties.setProperty( "drools.processInstanceManagerFactory",
- JPAProcessInstanceManagerFactory.class.getName() );
- properties.setProperty( "drools.workItemManagerFactory",
- JPAWorkItemManagerFactory.class.getName() );
- properties.setProperty( "drools.processSignalManagerFactory",
- JPASignalManagerFactory.class.getName() );
- SessionConfiguration config = new SessionConfiguration( properties );
-
- return new SpringSingleSessionCommandService(sessionId, kbase, config, env );
- }
-
- @Test
- public void testPersistenceWorkItems() throws Exception {
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- Collection<KnowledgePackage> kpkgs = getProcessWorkItems();
- kbase.addKnowledgePackages( kpkgs );
-
- SpringSingleSessionCommandService service = buildCommandService(kbase);
-
- int sessionId = service.getSessionId();
-
- StartProcessCommand startProcessCommand = new StartProcessCommand();
- startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = service.execute( startProcessCommand );
- log.info( "Started process instance {}", processInstance.getId() );
-
- TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
- WorkItem workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNull( processInstance );
- service.dispose();
- }
-
- @Test
- public void testPersistenceWorkItemsUserTransaction() throws Exception {
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- Collection<KnowledgePackage> kpkgs = getProcessWorkItems();
- kbase.addKnowledgePackages( kpkgs );
-
- SpringSingleSessionCommandService service = buildCommandService(kbase);
- int sessionId = service.getSessionId();
-
- StartProcessCommand startProcessCommand = new StartProcessCommand();
- startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = service.execute( startProcessCommand );
- log.info( "Started process instance {}", processInstance.getId() );
-
- TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
- WorkItem workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service =buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
-
- workItem = handler.getWorkItem();
- Assert.assertNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNull( processInstance );
- service.dispose();
- }
-
- private Collection<KnowledgePackage> getProcessWorkItems() {
- RuleFlowProcess process = new RuleFlowProcess();
- process.setId( "org.drools.test.TestProcess" );
- process.setName( "TestProcess" );
- process.setPackageName( "org.drools.test" );
- StartNode start = new StartNode();
- start.setId( 1 );
- start.setName( "Start" );
- process.addNode( start );
- ActionNode actionNode = new ActionNode();
- actionNode.setId( 2 );
- actionNode.setName( "Action" );
- DroolsConsequenceAction action = new DroolsConsequenceAction();
- action.setDialect( "java" );
- action.setConsequence( "System.out.println(\"Executed action\");" );
- actionNode.setAction( action );
- process.addNode( actionNode );
- new ConnectionImpl( start,
- Node.CONNECTION_DEFAULT_TYPE,
- actionNode,
- Node.CONNECTION_DEFAULT_TYPE );
- WorkItemNode workItemNode = new WorkItemNode();
- workItemNode.setId( 3 );
- workItemNode.setName( "WorkItem1" );
- Work work = new WorkImpl();
- work.setName( "MyWork" );
- workItemNode.setWork( work );
- process.addNode( workItemNode );
- new ConnectionImpl( actionNode,
- Node.CONNECTION_DEFAULT_TYPE,
- workItemNode,
- Node.CONNECTION_DEFAULT_TYPE );
- WorkItemNode workItemNode2 = new WorkItemNode();
- workItemNode2.setId( 4 );
- workItemNode2.setName( "WorkItem2" );
- work = new WorkImpl();
- work.setName( "MyWork" );
- workItemNode2.setWork( work );
- process.addNode( workItemNode2 );
- new ConnectionImpl( workItemNode,
- Node.CONNECTION_DEFAULT_TYPE,
- workItemNode2,
- Node.CONNECTION_DEFAULT_TYPE );
- WorkItemNode workItemNode3 = new WorkItemNode();
- workItemNode3.setId( 5 );
- workItemNode3.setName( "WorkItem3" );
- work = new WorkImpl();
- work.setName( "MyWork" );
- workItemNode3.setWork( work );
- process.addNode( workItemNode3 );
- new ConnectionImpl( workItemNode2,
- Node.CONNECTION_DEFAULT_TYPE,
- workItemNode3,
- Node.CONNECTION_DEFAULT_TYPE );
- EndNode end = new EndNode();
- end.setId( 6 );
- end.setName( "End" );
- process.addNode( end );
- new ConnectionImpl( workItemNode3,
- Node.CONNECTION_DEFAULT_TYPE,
- end,
- Node.CONNECTION_DEFAULT_TYPE );
-
- PackageBuilder packageBuilder = new PackageBuilder();
- ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
- processBuilder.buildProcess( process,
- null );
- List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
- list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
- return list;
- }
-
- @Test
- public void testPersistenceSubProcess() {
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- Package pkg = getProcessSubProcess();
- ruleBase.addPackage( pkg );
-
- SpringSingleSessionCommandService service = buildCommandService( new KnowledgeBaseImpl( ruleBase ));
- int sessionId = service.getSessionId();
- StartProcessCommand startProcessCommand = new StartProcessCommand();
- startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.execute( startProcessCommand );
- log.info( "Started process instance {}", processInstance.getId() );
- long processInstanceId = processInstance.getId();
-
- TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
- WorkItem workItem = handler.getWorkItem();
- Assert.assertNotNull( workItem );
- service.dispose();
-
- service = buildCommandService(sessionId, new KnowledgeBaseImpl( ruleBase ));
- GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstanceId );
- processInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
-
- Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
- Assert.assertEquals( 1,
- nodeInstances.size() );
- SubProcessNodeInstance subProcessNodeInstance = (SubProcessNodeInstance) nodeInstances.iterator().next();
- long subProcessInstanceId = subProcessNodeInstance.getProcessInstanceId();
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( subProcessInstanceId );
- RuleFlowProcessInstance subProcessInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( subProcessInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, new KnowledgeBaseImpl( ruleBase ));
- CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
- completeWorkItemCommand.setWorkItemId( workItem.getId() );
- service.execute( completeWorkItemCommand );
- service.dispose();
-
- service = buildCommandService(sessionId, new KnowledgeBaseImpl( ruleBase ));
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( subProcessInstanceId );
- subProcessInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
- Assert.assertNull( subProcessInstance );
-
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstanceId );
- processInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand );
- Assert.assertNull( processInstance );
- service.dispose();
- }
-
- private Package getProcessSubProcess() {
- RuleFlowProcess process = new RuleFlowProcess();
- process.setId( "org.drools.test.TestProcess" );
- process.setName( "TestProcess" );
- process.setPackageName( "org.drools.test" );
- StartNode start = new StartNode();
- start.setId( 1 );
- start.setName( "Start" );
- process.addNode( start );
- ActionNode actionNode = new ActionNode();
- actionNode.setId( 2 );
- actionNode.setName( "Action" );
- DroolsConsequenceAction action = new DroolsConsequenceAction();
- action.setDialect( "java" );
- action.setConsequence( "System.out.println(\"Executed action\");" );
- actionNode.setAction( action );
- process.addNode( actionNode );
- new ConnectionImpl( start,
- Node.CONNECTION_DEFAULT_TYPE,
- actionNode,
- Node.CONNECTION_DEFAULT_TYPE );
- SubProcessNode subProcessNode = new SubProcessNode();
- subProcessNode.setId( 3 );
- subProcessNode.setName( "SubProcess" );
- subProcessNode.setProcessId( "org.drools.test.SubProcess" );
- process.addNode( subProcessNode );
- new ConnectionImpl( actionNode,
- Node.CONNECTION_DEFAULT_TYPE,
- subProcessNode,
- Node.CONNECTION_DEFAULT_TYPE );
- EndNode end = new EndNode();
- end.setId( 4 );
- end.setName( "End" );
- process.addNode( end );
- new ConnectionImpl( subProcessNode,
- Node.CONNECTION_DEFAULT_TYPE,
- end,
- Node.CONNECTION_DEFAULT_TYPE );
-
- PackageBuilder packageBuilder = new PackageBuilder();
- ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
- processBuilder.buildProcess( process,
- null );
-
- process = new RuleFlowProcess();
- process.setId( "org.drools.test.SubProcess" );
- process.setName( "SubProcess" );
- process.setPackageName( "org.drools.test" );
- start = new StartNode();
- start.setId( 1 );
- start.setName( "Start" );
- process.addNode( start );
- actionNode = new ActionNode();
- actionNode.setId( 2 );
- actionNode.setName( "Action" );
- action = new DroolsConsequenceAction();
- action.setDialect( "java" );
- action.setConsequence( "System.out.println(\"Executed action\");" );
- actionNode.setAction( action );
- process.addNode( actionNode );
- new ConnectionImpl( start,
- Node.CONNECTION_DEFAULT_TYPE,
- actionNode,
- Node.CONNECTION_DEFAULT_TYPE );
- WorkItemNode workItemNode = new WorkItemNode();
- workItemNode.setId( 3 );
- workItemNode.setName( "WorkItem1" );
- Work work = new WorkImpl();
- work.setName( "MyWork" );
- workItemNode.setWork( work );
- process.addNode( workItemNode );
- new ConnectionImpl( actionNode,
- Node.CONNECTION_DEFAULT_TYPE,
- workItemNode,
- Node.CONNECTION_DEFAULT_TYPE );
- end = new EndNode();
- end.setId( 6 );
- end.setName( "End" );
- process.addNode( end );
- new ConnectionImpl( workItemNode,
- Node.CONNECTION_DEFAULT_TYPE,
- end,
- Node.CONNECTION_DEFAULT_TYPE );
-
- processBuilder.buildProcess( process,
- null );
- return packageBuilder.getPackage();
- }
-
- public void TODOtestPersistenceTimer() throws Exception {
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- Collection<KnowledgePackage> kpkgs = getProcessTimer();
- kbase.addKnowledgePackages( kpkgs );
-
- SpringSingleSessionCommandService service = buildCommandService(kbase);
- int sessionId = service.getSessionId();
- StartProcessCommand startProcessCommand = new StartProcessCommand();
- startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = service.execute( startProcessCommand );
- log.info( "Started process instance {}", processInstance.getId() );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNotNull( processInstance );
- service.dispose();
-
- service = buildCommandService(sessionId, kbase);
- Thread.sleep( 3000 );
- getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNull( processInstance );
- }
-
- private List<KnowledgePackage> getProcessTimer() {
- RuleFlowProcess process = new RuleFlowProcess();
- process.setId( "org.drools.test.TestProcess" );
- process.setName( "TestProcess" );
- process.setPackageName( "org.drools.test" );
- StartNode start = new StartNode();
- start.setId( 1 );
- start.setName( "Start" );
- process.addNode( start );
- TimerNode timerNode = new TimerNode();
- timerNode.setId( 2 );
- timerNode.setName( "Timer" );
- Timer timer = new Timer();
- timer.setDelay( "2000" );
- timerNode.setTimer( timer );
- process.addNode( timerNode );
- new ConnectionImpl( start,
- Node.CONNECTION_DEFAULT_TYPE,
- timerNode,
- Node.CONNECTION_DEFAULT_TYPE );
- ActionNode actionNode = new ActionNode();
- actionNode.setId( 3 );
- actionNode.setName( "Action" );
- DroolsConsequenceAction action = new DroolsConsequenceAction();
- action.setDialect( "java" );
- action.setConsequence( "System.out.println(\"Executed action\");" );
- actionNode.setAction( action );
- process.addNode( actionNode );
- new ConnectionImpl( timerNode,
- Node.CONNECTION_DEFAULT_TYPE,
- actionNode,
- Node.CONNECTION_DEFAULT_TYPE );
- EndNode end = new EndNode();
- end.setId( 6 );
- end.setName( "End" );
- process.addNode( end );
- new ConnectionImpl( actionNode,
- Node.CONNECTION_DEFAULT_TYPE,
- end,
- Node.CONNECTION_DEFAULT_TYPE );
-
- PackageBuilder packageBuilder = new PackageBuilder();
- ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
- processBuilder.buildProcess( process,
- null );
- List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
- list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
- return list;
- }
-
- @Test
- public void testPersistenceTimer2() throws Exception {
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- Collection<KnowledgePackage> kpkgs = getProcessTimer2();
- kbase.addKnowledgePackages( kpkgs );
-
- SpringSingleSessionCommandService service = buildCommandService(kbase);
- int sessionId = service.getSessionId();
- StartProcessCommand startProcessCommand = new StartProcessCommand();
- startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = service.execute( startProcessCommand );
- log.info( "Started process instance {}", processInstance.getId() );
-
- Thread.sleep( 2000 );
-
- service = buildCommandService(sessionId, kbase);
- GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
- getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = service.execute( getProcessInstanceCommand );
- Assert.assertNull( processInstance );
- }
-
- private List<KnowledgePackage> getProcessTimer2() {
- RuleFlowProcess process = new RuleFlowProcess();
- process.setId( "org.drools.test.TestProcess" );
- process.setName( "TestProcess" );
- process.setPackageName( "org.drools.test" );
- StartNode start = new StartNode();
- start.setId( 1 );
- start.setName( "Start" );
- process.addNode( start );
- TimerNode timerNode = new TimerNode();
- timerNode.setId( 2 );
- timerNode.setName( "Timer" );
- Timer timer = new Timer();
- timer.setDelay( "0" );
- timerNode.setTimer( timer );
- process.addNode( timerNode );
- new ConnectionImpl( start,
- Node.CONNECTION_DEFAULT_TYPE,
- timerNode,
- Node.CONNECTION_DEFAULT_TYPE );
- ActionNode actionNode = new ActionNode();
- actionNode.setId( 3 );
- actionNode.setName( "Action" );
- DroolsConsequenceAction action = new DroolsConsequenceAction();
- action.setDialect( "java" );
- action.setConsequence( "try { Thread.sleep(1000); } catch (Throwable t) {} System.out.println(\"Executed action\");" );
- actionNode.setAction( action );
- process.addNode( actionNode );
- new ConnectionImpl( timerNode,
- Node.CONNECTION_DEFAULT_TYPE,
- actionNode,
- Node.CONNECTION_DEFAULT_TYPE );
- EndNode end = new EndNode();
- end.setId( 6 );
- end.setName( "End" );
- process.addNode( end );
- new ConnectionImpl( actionNode,
- Node.CONNECTION_DEFAULT_TYPE,
- end,
- Node.CONNECTION_DEFAULT_TYPE );
-
- PackageBuilder packageBuilder = new PackageBuilder();
- ProcessBuilder processBuilder = new ProcessBuilder( packageBuilder );
- processBuilder.buildProcess( process,
- null );
- List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
- list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
- return list;
- }
-}
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringPersistedVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringPersistedVariable.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringPersistedVariable.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,34 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.drools.container.spring.beans.persistence;
+
+import javax.persistence.Entity;
+import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
+
+/**
+ *
+ * @author salaboy
+ * @author baunax at gmail.com
+ */
+ at Entity
+public class StringPersistedVariable extends VariableInstanceInfo {
+
+ private String string;
+
+ public StringPersistedVariable() {
+ }
+
+ public String getString() {
+ return string;
+ }
+
+ public void setString(String string) {
+ this.string = string;
+ }
+
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringPersistedVariable.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringVariablePersister.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringVariablePersister.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringVariablePersister.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,68 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.drools.container.spring.beans.persistence;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.persistence.EntityManager;
+
+import org.drools.persistence.processinstance.persisters.JPAVariablePersister;
+import org.drools.persistence.processinstance.persisters.VariablePersister;
+import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+
+/**
+ *
+ * @author salaboy
+ */
+public class StringVariablePersister implements VariablePersister {
+
+ public VariableInstanceInfo persistExternalVariable(String name, Object o, VariableInstanceInfo oldValue, Environment env) {
+ if (o == null || (oldValue != null && oldValue.getPersister().equals(""))) {
+ return null;
+ }
+ try {
+ boolean newVariable = false;
+ EntityManager em = (EntityManager) env.get(EnvironmentName.ENTITY_MANAGER);
+ StringPersistedVariable result = null;
+ if (oldValue instanceof StringPersistedVariable) {
+ result = (StringPersistedVariable) oldValue;
+ }
+ if (result == null) {
+ result = new StringPersistedVariable();
+
+ newVariable = true;
+ }
+ result.setPersister(this.getClass().getName());
+ result.setName(name);
+ // entity might have changed, updating info
+ result.setString((String)o);
+ if (newVariable) {
+ em.persist(result);
+ } else {
+ em.merge(result);
+ }
+ System.out.println("Saving StringPersistedVariable id=" + result.getId() + " string=" + result.getString() );
+ return result;
+ } catch (Throwable t) {
+ Logger.getLogger(JPAVariablePersister.class.getName()).log(Level.SEVERE, null, t);
+ throw new RuntimeException("Could not persist external variable", t);
+ }
+
+ }
+
+ public Object getExternalPersistedVariable(VariableInstanceInfo variableInstanceInfo, Environment env) {
+ EntityManager em = (EntityManager) env.get(EnvironmentName.ENTITY_MANAGER);
+ if(((StringPersistedVariable) variableInstanceInfo) == null){
+ return null;
+ }else{
+
+ return ((StringPersistedVariable) variableInstanceInfo).getString();
+ }
+
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/StringVariablePersister.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,319 @@
+package org.drools.container.spring.beans.persistence;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.base.MapGlobalResolver;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.command.SingleSessionCommandService;
+import org.drools.command.runtime.process.GetProcessInstanceCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.container.spring.beans.JPASingleSessionCommandService;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.persistence.jpa.JPAKnowledgeService;
+import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkflowProcessInstance;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import static org.junit.Assert.*;
+
+public class VariablePersistenceStrategyTest {
+
+ private static final String TMPDIR = System.getProperty("java.io.tmpdir");
+ private static final Logger log = LoggerFactory.getLogger(JPASingleSessionCommandServiceFactoryTest.class);
+ private static Server h2Server;
+
+ private ClassPathXmlApplicationContext ctx;
+
+ @BeforeClass
+ public static void startH2Database() throws Exception {
+ DeleteDbFiles.execute("", "DroolsFlow", true);
+ h2Server = Server.createTcpServer(new String[0]);
+ h2Server.start();
+ }
+
+ @AfterClass
+ public static void stopH2Database() throws Exception {
+ log.info("stoping database");
+ h2Server.stop();
+ DeleteDbFiles.execute("", "DroolsFlow", true);
+ }
+
+ @Before
+ public void createSpringContext() {
+ try {
+ log.info("creating spring context");
+ PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
+ Properties properties = new Properties();
+ properties.setProperty("temp.dir", TMPDIR);
+ configurer.setProperties(properties);
+ ctx = new ClassPathXmlApplicationContext();
+ ctx.addBeanFactoryPostProcessor(configurer);
+ ctx.setConfigLocation("org/drools/container/spring/beans/persistence/beansVarPersistence.xml");
+ ctx.refresh();
+ } catch (Exception e) {
+ log.error("can't create spring context", e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ @After
+ public void destrySpringContext() {
+ log.info("destroy spring context");
+ ctx.destroy();
+ }
+
+ @Test
+ public void testPersistenceVariables() {
+ log.info("---> get bean jpaSingleSessionCommandService");
+ JPASingleSessionCommandService jpaService = (JPASingleSessionCommandService) ctx.getBean("jpaSingleSessionCommandService");
+
+ log.info("---> create new SingleSessionCommandService");
+ SingleSessionCommandService service = jpaService.createNew();
+
+ int sessionId = service.getSessionId();
+ log.info("---> created SingleSessionCommandService id: " + sessionId);
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand("com.sample.ruleflow");
+ log.info("### Starting process ###");
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("x", "SomeString");
+ parameters.put("y", new MyEntity("This is a test Entity with annotation in fields"));
+ parameters.put("m", new MyEntityMethods("This is a test Entity with annotations in methods"));
+ parameters.put("f", new MyEntityOnlyFields("This is a test Entity with annotations in fields and without accesors methods"));
+ parameters.put("z", new MyVariableSerializable("This is a test SerializableObject"));
+ startProcessCommand.setParameters(parameters);
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance) service.execute( startProcessCommand );
+ log.info( "Started process instance {}", processInstance.getId() );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ EntityManagerFactory emf = (EntityManagerFactory) ctx.getBean("myEmf");
+
+ List<?> result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+ assertEquals(5, result.size());
+ log.info("### Retrieving process instance ###");
+
+ service = jpaService.load(sessionId);
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = (WorkflowProcessInstance) service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+
+ assertNotNull( processInstance );
+ assertEquals("SomeString", processInstance.getVariable("x"));
+ assertEquals("This is a test Entity with annotation in fields", ((MyEntity) processInstance.getVariable("y")).getTest());
+ assertEquals("This is a test Entity with annotations in methods", ((MyEntityMethods) processInstance.getVariable("m")).getTest());
+ assertEquals("This is a test Entity with annotations in fields and without accesors methods", ((MyEntityOnlyFields) processInstance.getVariable("f")).test);
+ assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText());
+ assertNull(processInstance.getVariable("a"));
+ assertNull(processInstance.getVariable("b"));
+ assertNull(processInstance.getVariable("c"));
+
+ service.dispose();
+
+// log.info("### Completing first work item ###");
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// log.info("### Retrieving variable instance infos ###");
+// result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+// assertEquals(8, result.size());
+// for (Object o: result) {
+// assertTrue(VariableInstanceInfo.class.isAssignableFrom(o.getClass()));
+// log.info(o);
+// }
+//
+// log.info("### Retrieving process instance ###");
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+// processInstance = (WorkflowProcessInstance)
+// ksession.getProcessInstance(processInstance.getId());
+// assertNotNull(processInstance);
+// assertEquals("SomeString", processInstance.getVariable("x"));
+// assertEquals("This is a test Entity with annotation in fields", ((MyEntity) processInstance.getVariable("y")).getTest());
+// assertEquals("This is a test Entity with annotations in methods", ((MyEntityMethods) processInstance.getVariable("m")).getTest());
+// assertEquals("This is a test Entity with annotations in fields and without accesors methods", ((MyEntityOnlyFields) processInstance.getVariable("f")).test);
+// assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText());
+// assertEquals("Some new String", processInstance.getVariable("a"));
+// assertEquals("This is a new test Entity", ((MyEntity) processInstance.getVariable("b")).getTest());
+// assertEquals("This is a new test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("c")).getText());
+// log.info("### Completing second work item ###");
+// ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+//
+// workItem = handler.getWorkItem();
+// assertNotNull(workItem);
+//
+// result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+// assertEquals(8, result.size());
+//
+// log.info("### Retrieving process instance ###");
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+// processInstance = (WorkflowProcessInstance)
+// ksession.getProcessInstance(processInstance.getId());
+// assertNotNull(processInstance);
+// assertEquals("SomeString", processInstance.getVariable("x"));
+// assertEquals("This is a test Entity with annotation in fields", ((MyEntity) processInstance.getVariable("y")).getTest());
+// assertEquals("This is a test Entity with annotations in methods", ((MyEntityMethods) processInstance.getVariable("m")).getTest());
+// assertEquals("This is a test Entity with annotations in fields and without accesors methods", ((MyEntityOnlyFields) processInstance.getVariable("f")).test);
+// assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText());
+// assertEquals("Some changed String", processInstance.getVariable("a"));
+// assertEquals("This is a changed test Entity", ((MyEntity) processInstance.getVariable("b")).getTest());
+// assertEquals("This is a changed test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("c")).getText());
+// log.info("### Completing third work item ###");
+// ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+//
+// workItem = handler.getWorkItem();
+// assertNull(workItem);
+//
+// result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+// //This was 6.. but I change it to 0 because all the variables will go away with the process instance..
+// //we need to change that to leave the variables there???
+// assertEquals(0, result.size());
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+// processInstance = (WorkflowProcessInstance)
+// ksession.getProcessInstance(processInstance.getId());
+// assertNull(processInstance);
+ }
+
+// public void testPersistenceVariablesWithTypeChange() {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+// kbuilder.add( new ClassPathResource( "VariablePersistenceStrategyProcessTypeChange.rf" ), ResourceType.DRF );
+// for (KnowledgeBuilderError error: kbuilder.getErrors()) {
+// log.info(error);
+// }
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+// Environment env = KnowledgeBaseFactory.newEnvironment();
+// env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
+//
+// env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+//
+// StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+// int id = ksession.getId();
+//
+// Map<String, Object> parameters = new HashMap<String, Object>();
+// parameters.put("x", "SomeString");
+// parameters.put("y", new MyEntity("This is a test Entity with annotation in fields"));
+// parameters.put("m", new MyEntityMethods("This is a test Entity with annotations in methods"));
+// parameters.put("f", new MyEntityOnlyFields("This is a test Entity with annotations in fields and without accesors methods"));
+// parameters.put("z", new MyVariableSerializable("This is a test SerializableObject"));
+// ProcessInstance processInstance = ksession.startProcess( "com.sample.ruleflow", parameters );
+//
+// TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+// WorkItem workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNotNull( processInstance );
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNotNull( processInstance );
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNull( processInstance );
+// }
+//
+// public void testPersistenceVariablesSubProcess() {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+// kbuilder.add( new ClassPathResource( "VariablePersistenceStrategySubProcess.rf" ), ResourceType.DRF );
+// for (KnowledgeBuilderError error: kbuilder.getErrors()) {
+// log.info("{}", error);
+// }
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+// Environment env = KnowledgeBaseFactory.newEnvironment();
+// env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
+//
+// env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+//
+// StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+// int id = ksession.getId();
+//
+// Map<String, Object> parameters = new HashMap<String, Object>();
+// parameters.put("x", "SomeString");
+// parameters.put("y", new MyEntity("This is a test Entity with annotation in fields"));
+// parameters.put("m", new MyEntityMethods("This is a test Entity with annotations in methods"));
+// parameters.put("f", new MyEntityOnlyFields("This is a test Entity with annotations in fields and without accesors methods"));
+// parameters.put("z", new MyVariableSerializable("This is a test SerializableObject"));
+// ProcessInstance processInstance = ksession.startProcess( "com.sample.ruleflow", parameters );
+//
+// TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+// WorkItem workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNotNull( processInstance );
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNotNull( processInstance );
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNotNull( processInstance );
+// ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+//
+// workItem = handler.getWorkItem();
+// assertNull( workItem );
+//
+// ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+// processInstance = ksession.getProcessInstance( processInstance.getId() );
+// assertNull( processInstance );
+// }
+//
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/META-INF/persistence.xml 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/META-INF/persistence.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -13,15 +13,17 @@
-->
<class>org.drools.persistence.session.SessionInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
- <class>org.drools.persistence.processinstance.WorkItemInfo</class>
+ <class>org.drools.persistence.processinstance.EventType</class>
+ <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
<class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
- <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
<class>org.drools.persistence.processinstance.variabletypes.SerializablePersistedVariable</class>
- <!--
- <class>org.plugtree.labs.variablepersistence.StringPersistedVariable</class>
- <class>org.plugtree.labs.variablepersistence.MyEntity</class>
- <class>org.plugtree.labs.variablepersistence.MyVariableSerializable</class>
- -->
+ <class>org.drools.persistence.processinstance.WorkItemInfo</class>
+
+ <!-- my persistent variables -->
+ <class>org.drools.container.spring.beans.persistence.MyEntity</class>
+ <class>org.drools.container.spring.beans.persistence.MyEntityMethods</class>
+ <class>org.drools.container.spring.beans.persistence.MyEntityOnlyFields</class>
+ <class>org.drools.container.spring.beans.persistence.StringPersistedVariable</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<!--property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/-->
Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/log4j.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/log4j.xml 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/log4j.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -4,18 +4,29 @@
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%-4r %d{dd/MM HH:mm:ss,SSS}[%t] %-5p %c{3}.%M %x - %m%n"/>
+ <param name="ConversionPattern" value="%-4r %d{dd/MM HH:mm:ss,SSS}[%t] %-5p %c{3}.%M %x- %m%n"/>
</layout>
</appender>
- <!--
+
+ <!-- A time/date based rolling appender
+ <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
+ <param name="File" value="${java.io.tmpdir}/drools.log"/>
+ <param name="Append" value="true"/>
+ <param name="MaxBackupIndex" value="5"/>
+ <param name="MaxFileSize" value="50MB"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%-4r %d{dd/MM HH:mm:ss,SSS}[%t] %-5p %c{3}.%M %x- %m%n"/>
+ </layout>
+ </appender>
+ -->
<logger name="org.drools">
<level value="DEBUG"/>
</logger>
- -->
- <logger name="org.hibernate">
+ <!-- logger name="org.hibernate">
<level value="DEBUG"/>
- </logger>
+ </logger -->
<root>
<priority value="INFO"/>
<appender-ref ref="CONSOLE"/>
Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/VariablePersistenceStrategyProcess.rf 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-5.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
+ type="RuleFlow" name="ruleflow" id="com.sample.ruleflow" package-name="com.sample" >
+
+ <header>
+ <imports>
+ <import name="org.drools.container.spring.beans.persistence.MyEntity" />
+ <import name="org.drools.container.spring.beans.persistence.MyVariableSerializable" />
+ </imports>
+ <variables>
+ <variable name="x" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </variable>
+ <variable name="y" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.container.spring.beans.persistence.MyEntity" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.container.spring.beans.persistence.MyVariableSerializable" />
+ </variable>
+ <variable name="a" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </variable>
+ <variable name="b" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.container.spring.beans.persistence.MyEntity" />
+ </variable>
+ <variable name="c" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.container.spring.beans.persistence.MyVariableSerializable" />
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="16" y="16" width="48" height="48" />
+ <end id="3" name="End" x="458" y="189" width="48" height="48" />
+ <humanTask id="4" name="Human Task" x="208" y="16" width="93" height="48" >
+ <work name="Human Task" >
+ <parameter name="ActorId" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Comment" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Content" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Priority" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Skippable" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="TaskName" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ </work>
+ </humanTask>
+ <actionNode id="5" name="Action" x="96" y="20" width="80" height="40" >
+ <action type="expression" dialect="java" >System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ <actionNode id="6" name="Action" x="333" y="20" width="80" height="40" >
+ <action type="expression" dialect="java" >System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);
+kcontext.setVariable("a", "Some new String");
+kcontext.setVariable("b", new MyEntity("This is a new test Entity"));
+kcontext.setVariable("c", new MyVariableSerializable("This is a new test SerializableObject"));</action>
+ </actionNode>
+ <humanTask id="7" name="Human Task" x="445" y="20" width="80" height="40" >
+ <work name="Human Task" >
+ <parameter name="ActorId" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Comment" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Content" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Priority" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Skippable" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="TaskName" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ </work>
+ </humanTask>
+ <actionNode id="8" name="Action" x="557" y="20" width="80" height="40" >
+ <action type="expression" dialect="java" >System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);
+System.out.println("a = " + a);
+System.out.println("b = " + b);
+System.out.println("c = " + c);
+kcontext.setVariable("a", "Some changed String");
+kcontext.setVariable("b", new MyEntity("This is a changed test Entity"));
+kcontext.setVariable("c", new MyVariableSerializable("This is a changed test SerializableObject"));</action>
+ </actionNode>
+ <humanTask id="9" name="Human Task" x="550" y="94" width="100" height="48" >
+ <work name="Human Task" >
+ <parameter name="ActorId" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Comment" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Content" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Priority" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="Skippable" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ <parameter name="TaskName" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ </work>
+ </humanTask>
+ <actionNode id="10" name="Action" x="562" y="189" width="80" height="48" >
+ <action type="expression" dialect="java" >System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);
+System.out.println("a = " + a);
+System.out.println("b = " + b);
+System.out.println("c = " + c);</action>
+ </actionNode>
+ </nodes>
+
+ <connections>
+ <connection from="10" to="3" />
+ <connection from="5" to="4" />
+ <connection from="1" to="5" />
+ <connection from="4" to="6" />
+ <connection from="6" to="7" />
+ <connection from="7" to="8" />
+ <connection from="8" to="9" />
+ <connection from="9" to="10" />
+ </connections>
+
+</process>
\ No newline at end of file
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-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beans.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -14,14 +14,16 @@
<property name="password" value="" />
</bean>
- <!--
- <bean id="sm1" class="org.drools.vsm.local.ServiceManagerLocalClient" />
- <drools:kbase id="kbase1" serviceManager="sm1">
- <drools:resource type="DRF" source="classpath:rules/VariablePersistenceStrategyProcess.rf" />
+ <drools:connection id="connection1" type="local" />
+ <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:kbase>
- <drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" serviceManager="sm1" />
- <drools:ksession id="ksession2" type="stateful" kbase="kbase1" serviceManager="sm1" />
- -->
+
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="ds" />
<property name="persistenceUnitName" value="org.drools.persistence.jpa.local" />
@@ -30,13 +32,12 @@
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="myEmf" />
</bean>
-
- <!--
- <bean id="jpaProcessKnowledgeProvider" class="org.drools.container.spring.beans.persistence.JPAKnowledgeServiceBean">
- <property name="kbase" ref="kbase1" />
- <property name="serviceManager" ref="sm1" />
- <property name="entityManagerFactory" ref="myEmf" />
- <property name="transactionManager" ref="txManager" />
+
+ <bean id="jpaSingleSessionCommandService" class="org.drools.container.spring.beans.JPASingleSessionCommandServiceFactory">
+ <property name="knowledgeBase" ref="kbProcessWorkItems"/>
+ <property name="entityManagerFactory" ref="myEmf"/>
+ <property name="transactionManager" ref="txManager"/>
+ <!--
<property name="variablePersisters">
<map>
<entry key="javax.persistence.Entity" value="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
@@ -44,6 +45,7 @@
<entry key="java.io.Serializable" value="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
</map>
</property>
+ -->
</bean>
- -->
+
</beans>
\ No newline at end of file
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,42 @@
+<?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"
+ 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">
+
+ <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName" value="org.h2.Driver" />
+ <property name="url" value="jdbc:h2:tcp://localhost/DroolsFlow" />
+ <property name="username" value="sa" />
+ <property name="password" value="" />
+ </bean>
+
+ <!-- <drools:connection id="connection1" type="local" />
+ <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:kbase>
+
+ <bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="ds" />
+ <property name="persistenceUnitName" value="org.drools.persistence.jpa.local" />
+ </bean>
+
+ <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="myEmf" />
+ </bean>
+
+ <bean id="jpaSingleSessionCommandService" class="org.drools.container.spring.beans.JPASingleSessionCommandServiceFactory">
+ <property name="knowledgeBase" ref="kbase1"/>
+ <property name="entityManagerFactory" ref="myEmf"/>
+ <property name="transactionManager" ref="txManager"/>
+ <property name="variablePersisters">
+ <map>
+ <entry key="javax.persistence.Entity" value="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
+ <entry key="java.lang.String" value="org.drools.container.spring.beans.persistence.StringVariablePersister"/>
+ <entry key="java.io.Serializable" value="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/>
+ </map>
+ </property>
+ </bean>
+</beans>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/beans/persistence/beansVarPersistence.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/SingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/SingleSessionCommandService.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/SingleSessionCommandService.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,6 @@
+package org.drools.command;
+
+public interface SingleSessionCommandService extends CommandService {
+ int getSessionId();
+ void dispose();
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/SingleSessionCommandService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/trunk/drools-persistence-jpa/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/pom.xml 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-persistence-jpa/pom.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -66,19 +66,19 @@
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
- <version>1.5.2</version>
- </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.2</version>
</dependency>
-
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.5.2</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.apache.felix</groupId>
@@ -120,8 +120,8 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.1.117</version>
- <scope>test</scope>
+ <version>1.2.128</version>
+ <scope>test</scope>
</dependency>
<dependency>
@@ -151,10 +151,16 @@
<dependency>
<groupId>org.codehaus.btm</groupId>
<artifactId>btm</artifactId>
- <version>1.3.2</version>
+ <version>1.3.3</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.5.2</version>
+ <scope>test</scope>
+ </dependency>
<!--dependency>
<groupId>org.objectweb.jotm</groupId>
<artifactId>com.springsource.org.objectweb.jotm</artifactId>
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -17,7 +17,6 @@
import org.drools.KnowledgeBase;
import org.drools.RuleBase;
import org.drools.SessionConfiguration;
-import org.drools.command.CommandService;
import org.drools.command.Context;
import org.drools.command.impl.ContextImpl;
import org.drools.command.impl.GenericCommand;
@@ -37,7 +36,7 @@
public class SingleSessionCommandService
implements
- CommandService {
+ org.drools.command.SingleSessionCommandService {
private EntityManagerFactory emf;
private EntityManager em;
@@ -63,7 +62,7 @@
SessionConfiguration conf,
Environment env) {
this( new KnowledgeBaseImpl( ruleBase ),
- (SessionConfiguration) conf,
+ conf,
env );
}
@@ -73,7 +72,7 @@
Environment env) {
this( sessionId,
new KnowledgeBaseImpl( ruleBase ),
- (SessionConfiguration) conf,
+ conf,
env );
}
@@ -112,7 +111,7 @@
this.sessionInfo.setJPASessionMashallingHelper( this.marshallingHelper );
- ((ReteooWorkingMemory)((StatefulKnowledgeSessionImpl) this.ksession).session).setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
+ ((StatefulKnowledgeSessionImpl) this.ksession).session.setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
this.emf = (EntityManagerFactory) env.get( EnvironmentName.ENTITY_MANAGER_FACTORY );
this.em = emf.createEntityManager(); // how can I ensure this is an extended entity?
@@ -209,7 +208,7 @@
this.sessionInfo.setJPASessionMashallingHelper( this.marshallingHelper );
this.ksession = this.marshallingHelper.getObject();
- ((ReteooWorkingMemory)((StatefulKnowledgeSessionImpl) this.ksession).session).setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
+ ((StatefulKnowledgeSessionImpl) this.ksession).session.setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
this.kContext = new KnowledgeCommandContext(new ContextImpl( "ksession", null), null, null, this.ksession, null );
((JPASignalManager) ((StatefulKnowledgeSessionImpl)ksession).session.getSignalManager()).setCommandService( this );
@@ -245,7 +244,7 @@
// there must have been a rollback to lazily re-initialise the state
this.em = this.emf.createEntityManager();
this.sessionInfo = this.em.find( SessionInfo.class, this.sessionInfo.getId() );
- ((ReteooWorkingMemory)((StatefulKnowledgeSessionImpl) this.ksession).session).setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
+ ((StatefulKnowledgeSessionImpl) this.ksession).session.setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
this.sessionInfo.setJPASessionMashallingHelper( this.marshallingHelper );
// have to create a new localEM as an EM part of a transaction cannot do a find.
// this.sessionInfo.rollback();
@@ -306,7 +305,8 @@
return sessionInfo.getId();
}
- private void registerRollbackSync() throws IllegalStateException,
+ @SuppressWarnings("unchecked")
+ private void registerRollbackSync() throws IllegalStateException,
RollbackException,
SystemException {
TransactionManager txm = (TransactionManager) env.get( EnvironmentName.TRANSACTION_MANAGER );
@@ -314,17 +314,16 @@
return;
}
- Map map = (Map) env.get( "synchronizations" );
+ Map<Object, Object> map = (Map<Object, Object>) env.get( "synchronizations" );
if ( map == null ) {
- map = new IdentityHashMap();
+ map = new IdentityHashMap<Object, Object>();
env.set( "synchronizations",
map );
}
if ( map.get( this ) == null ) {
txm.getTransaction().registerSynchronization( new SynchronizationImpl() );
- map.put( this,
- this );
+ map.put(this, this);
}
}
@@ -333,14 +332,15 @@
implements
Synchronization {
- public void afterCompletion(int status) {
+ @SuppressWarnings("unchecked")
+ public void afterCompletion(int status) {
if ( status != Status.STATUS_COMMITTED ) {
rollback();
}
// always cleanup thread local whatever the result
//rollbackRegistered.remove();
- Map map = (Map) env.get( "synchronizations" );
+ Map<Object, Object> map = (Map<Object, Object>) env.get( "synchronizations" );
map.remove( SingleSessionCommandService.this );
// cleanup local entity manager
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2010-04-24 00:38:23 UTC (rev 32638)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2010-04-24 01:59:50 UTC (rev 32639)
@@ -1,5 +1,6 @@
package org.drools.persistence.session;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -12,6 +13,7 @@
import junit.framework.TestCase;
+import org.apache.log4j.xml.DOMConfigurator;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.RuleBase;
@@ -45,27 +47,61 @@
import org.drools.workflow.core.node.TimerNode;
import org.drools.workflow.core.node.WorkItemNode;
import org.drools.workflow.instance.node.SubProcessNodeInstance;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
import bitronix.tm.TransactionManagerServices;
import bitronix.tm.resource.jdbc.PoolingDataSource;
public class SingleSessionCommandServiceTest extends TestCase {
- PoolingDataSource ds1;
- private EntityManagerFactory emf;
-
+ private PoolingDataSource ds1;
+ private EntityManagerFactory emf;
+ private static Server h2Server;
+
+ static {
+ try {
+ DeleteDbFiles.execute("", "JPADroolsFlow", true);
+ h2Server = Server.createTcpServer(new String[0]);
+ h2Server.start();
+ } catch (SQLException e) {
+ throw new RuntimeException("can't start h2 server db",e);
+ }
+ DOMConfigurator.configure(SingleSessionCommandServiceTest.class.getResource("/log4j.xml"));
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ if (h2Server != null) {
+ h2Server.stop();
+ }
+ DeleteDbFiles.execute("", "JPADroolsFlow", true);
+ super.finalize();
+ }
+
protected void setUp() {
+
ds1 = new PoolingDataSource();
- ds1.setUniqueName( "jdbc/testDS1" );
- ds1.setClassName( "org.h2.jdbcx.JdbcDataSource" );
- ds1.setMaxPoolSize( 3 );
- ds1.setAllowLocalTransactions( true );
- ds1.getDriverProperties().put( "user",
- "sa" );
- ds1.getDriverProperties().put( "password",
- "sasa" );
- ds1.getDriverProperties().put( "URL",
- "jdbc:h2:mem:mydb" );
+ ds1.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");
+ ds1.setUniqueName("jdbc/testDS1");
+ ds1.setMaxPoolSize(5);
+ ds1.setAllowLocalTransactions(true);
+ ds1.getDriverProperties().setProperty("driverClassName", "org.h2.Driver");
+ ds1.getDriverProperties().setProperty("url", "jdbc:h2:tcp://localhost/JPADroolsFlow");
+ ds1.getDriverProperties().setProperty("user", "sa");
+ ds1.getDriverProperties().setProperty("password", "");
+
+
+// ds1.setUniqueName( "jdbc/testDS1" );
+// ds1.setClassName( "org.h2.Driver" );
+// ds1.setMaxPoolSize( 3 );
+// ds1.setAllowLocalTransactions( true );
+// ds1.getDriverProperties().put( "user",
+// "sa" );
+// ds1.getDriverProperties().put( "password",
+// "" );
+// ds1.getDriverProperties().put( "URL",
+// "jdbc:h2:tcp://localhost/JPADroolsFlow" );
ds1.init();
emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
@@ -106,7 +142,7 @@
StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = (ProcessInstance) service.execute( startProcessCommand );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
System.out.println( "Started process instance " + processInstance.getId() );
TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
@@ -120,7 +156,7 @@
env );
GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNotNull( processInstance );
service.dispose();
@@ -142,7 +178,7 @@
env );
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNotNull( processInstance );
service.dispose();
@@ -164,7 +200,7 @@
env );
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNotNull( processInstance );
service.dispose();
@@ -186,7 +222,7 @@
env );
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNull( processInstance );
service.dispose();
}
@@ -222,7 +258,7 @@
ut.begin();
StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = (ProcessInstance) service.execute( startProcessCommand );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
System.out.println( "Started process instance " + processInstance.getId() );
ut.commit();
@@ -238,7 +274,7 @@
ut.begin();
GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNotNull( processInstance );
ut.commit();
service.dispose();
@@ -264,7 +300,7 @@
ut.begin();
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
ut.commit();
assertNotNull( processInstance );
service.dispose();
@@ -290,7 +326,7 @@
ut.begin();
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
ut.commit();
assertNotNull( processInstance );
service.dispose();
@@ -316,7 +352,7 @@
ut.begin();
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
ut.commit();
assertNull( processInstance );
service.dispose();
@@ -593,7 +629,7 @@
int sessionId = service.getSessionId();
StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = (ProcessInstance) service.execute( startProcessCommand );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
System.out.println( "Started process instance " + processInstance.getId() );
service.dispose();
@@ -603,7 +639,7 @@
env );
GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNotNull( processInstance );
service.dispose();
@@ -614,7 +650,7 @@
Thread.sleep( 3000 );
getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNull( processInstance );
}
@@ -696,7 +732,7 @@
int sessionId = service.getSessionId();
StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
- ProcessInstance processInstance = (ProcessInstance) service.execute( startProcessCommand );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
System.out.println( "Started process instance " + processInstance.getId() );
Thread.sleep( 2000 );
@@ -707,7 +743,7 @@
env );
GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
- processInstance = (ProcessInstance) service.execute( getProcessInstanceCommand );
+ processInstance = service.execute( getProcessInstanceCommand );
assertNull( processInstance );
}
Added: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml 2010-04-24 01:59:50 UTC (rev 32639)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%-4r %d{dd/MM HH:mm:ss,SSS}[%t] %-5p %c{3}.%M %x - %m%n"/>
+ </layout>
+ </appender>
+
+ <logger name="org.drools">
+ <level value="DEBUG"/>
+ </logger>
+
+ <!-- logger name="org.hibernate">
+ <level value="DEBUG"/>
+ </logger -->
+ <root>
+ <priority value="INFO"/>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+</log4j:configuration>
Property changes on: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
More information about the jboss-svn-commits
mailing list