[jboss-svn-commits] JBL Code SVN: r35178 - in labs/jbossrules/trunk: drools-container/drools-spring and 34 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 17 09:55:02 EDT 2010
Author: KrisVerlaenen
Date: 2010-09-17 09:54:59 -0400 (Fri, 17 Sep 2010)
New Revision: 35178
Added:
labs/jbossrules/trunk/drools-flow-persistence-jpa/
labs/jbossrules/trunk/drools-flow-persistence-jpa/pom.xml
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntity.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityMethods.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityOnlyFields.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyVariableSerializable.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariableCheckerTestWorkItemHandler.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/EventsProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/MyWorkItemHandlers.conf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/drools.session.conf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/orm.xml
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/persistence.xml
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetRules.drl
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/StateProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SubProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SuperProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/TimerProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablesProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/WorkItemsProcess.rf
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/jndi.properties
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/log4j.xml
labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/testVariables.rf
Removed:
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/META-INF/
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetRules.drl
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/StateProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SubProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SuperProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/TimerProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablesProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/WorkItemsProcess.rf
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/jndi.properties
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml
labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/testVariables.rf
Modified:
labs/jbossrules/trunk/drools-container/drools-spring/pom.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/process/InternalProcessRuntime.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/ProcessMarshallerImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java
labs/jbossrules/trunk/drools-grid/drools-grid-local/pom.xml
labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java
labs/jbossrules/trunk/drools-persistence-jpa/pom.xml
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/WorkItemInfo.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
labs/jbossrules/trunk/drools-process/drools-bam/pom.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
labs/jbossrules/trunk/drools-process/drools-gwt-server-war/pom.xml
labs/jbossrules/trunk/pom.xml
Log:
JBRULES-2679: Mdularize Drools Flow
- refactoring drools-persistence-jpa
Modified: labs/jbossrules/trunk/drools-container/drools-spring/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-container/drools-spring/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -37,7 +37,7 @@
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
<optional>true</optional>
</dependency>
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -48,6 +48,8 @@
import org.drools.impl.EnvironmentFactory;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.marshalling.ObjectMarshallingStrategy;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.impl.WorkItemImpl;
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.BetaNode;
import org.drools.reteoo.EntryPointNode;
@@ -793,4 +795,35 @@
pc );
}
+ public static WorkItem readWorkItem(MarshallerReaderContext context, boolean includeVariables) throws IOException {
+ ObjectInputStream stream = context.stream;
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setId( stream.readLong() );
+ workItem.setProcessInstanceId( stream.readLong() );
+ workItem.setName( stream.readUTF() );
+ workItem.setState( stream.readInt() );
+
+ if(includeVariables){
+ int nbParameters = stream.readInt();
+
+ for ( int i = 0; i < nbParameters; i++ ) {
+ String name = stream.readUTF();
+ try {
+ Object value = stream.readObject();
+ workItem.setParameter( name,
+ value );
+ } catch ( ClassNotFoundException e ) {
+ throw new IllegalArgumentException( "Could not reload parameter " + name );
+ }
+ }
+ }
+
+ return workItem;
+ }
+
+ public static WorkItem readWorkItem(MarshallerReaderContext context) throws IOException {
+ return readWorkItem(context, true);
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -43,6 +43,7 @@
import org.drools.core.util.ObjectHashMap;
import org.drools.core.util.ObjectHashSet;
import org.drools.marshalling.ObjectMarshallingStrategy;
+import org.drools.process.instance.WorkItem;
import org.drools.reteoo.BetaNode;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.LeftTupleSink;
@@ -748,4 +749,26 @@
stream.writeUTF( pc.getEntryPoint().getEntryPointId() );
}
+ public static void writeWorkItem(MarshallerWriteContext context, WorkItem workItem) throws IOException {
+ writeWorkItem(context, workItem, true);
+ }
+
+ public static void writeWorkItem(MarshallerWriteContext context,
+ WorkItem workItem, boolean includeVariables) throws IOException {
+ ObjectOutputStream stream = context.stream;
+ stream.writeLong(workItem.getId());
+ stream.writeLong(workItem.getProcessInstanceId());
+ stream.writeUTF(workItem.getName());
+ stream.writeInt(workItem.getState());
+
+ if (includeVariables) {
+ Map<String, Object> parameters = workItem.getParameters();
+ stream.writeInt(parameters.size());
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ stream.writeUTF(entry.getKey());
+ stream.writeObject(entry.getValue());
+ }
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -33,5 +33,7 @@
Set<WorkItem> getWorkItems();
WorkItem getWorkItem(long id);
+
+ void clear();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -138,4 +138,8 @@
this.workItemHandlers.put(workItemName, handler);
}
+ public void clear() {
+ this.workItems.clear();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/process/InternalProcessRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/process/InternalProcessRuntime.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/process/InternalProcessRuntime.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -8,5 +8,7 @@
void dispose();
void setProcessEventSupport(ProcessEventSupport processEventSupport);
+
+ void clearProcessInstances();
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/ProcessMarshallerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/ProcessMarshallerImpl.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/ProcessMarshallerImpl.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -8,13 +8,11 @@
import java.util.Comparator;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import org.drools.common.InternalWorkingMemory;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.WorkItem;
import org.drools.process.instance.WorkItemManager;
-import org.drools.process.instance.impl.WorkItemImpl;
import org.drools.process.instance.timer.TimerInstance;
import org.drools.process.instance.timer.TimerManager;
@@ -98,35 +96,11 @@
} );
for ( WorkItem workItem : workItems ) {
stream.writeShort( PersisterEnums.WORK_ITEM );
- writeWorkItem( context,
- workItem );
+ OutputMarshaller.writeWorkItem( context, workItem );
}
stream.writeShort( PersisterEnums.END );
}
- public static void writeWorkItem(MarshallerWriteContext context,
- WorkItem workItem) throws IOException {
- writeWorkItem(context, workItem, true);
- }
-
- public static void writeWorkItem(MarshallerWriteContext context,
- WorkItem workItem, boolean includeVariables) throws IOException {
- ObjectOutputStream stream = context.stream;
- stream.writeLong( workItem.getId() );
- stream.writeLong( workItem.getProcessInstanceId() );
- stream.writeUTF( workItem.getName() );
- stream.writeInt( workItem.getState() );
-
- if(includeVariables){
- Map<String, Object> parameters = workItem.getParameters();
- stream.writeInt( parameters.size() );
- for ( Map.Entry<String, Object> entry : parameters.entrySet() ) {
- stream.writeUTF( entry.getKey() );
- stream.writeObject( entry.getValue() );
- }
- }
- }
-
public void readProcessInstances(MarshallerReaderContext context) throws IOException {
ObjectInputStream stream = context.stream;
while ( stream.readShort() == PersisterEnums.PROCESS_INSTANCE ) {
@@ -139,42 +113,11 @@
InternalWorkingMemory wm = context.wm;
ObjectInputStream stream = context.stream;
while ( stream.readShort() == PersisterEnums.WORK_ITEM ) {
- WorkItem workItem = readWorkItem( context );
+ WorkItem workItem = InputMarshaller.readWorkItem( context );
((WorkItemManager) wm.getWorkItemManager()).internalAddWorkItem( workItem );
}
}
- public static WorkItem readWorkItem(MarshallerReaderContext context) throws IOException {
- return readWorkItem(context, true);
- }
-
- public static WorkItem readWorkItem(MarshallerReaderContext context, boolean includeVariables) throws IOException {
- ObjectInputStream stream = context.stream;
-
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setId( stream.readLong() );
- workItem.setProcessInstanceId( stream.readLong() );
- workItem.setName( stream.readUTF() );
- workItem.setState( stream.readInt() );
-
- if(includeVariables){
- int nbParameters = stream.readInt();
-
- for ( int i = 0; i < nbParameters; i++ ) {
- String name = stream.readUTF();
- try {
- Object value = stream.readObject();
- workItem.setParameter( name,
- value );
- } catch ( ClassNotFoundException e ) {
- throw new IllegalArgumentException( "Could not reload parameter " + name );
- }
- }
- }
-
- return workItem;
- }
-
public void readProcessTimers(MarshallerReaderContext context) throws IOException {
ObjectInputStream stream = context.stream;
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -33,5 +33,7 @@
void removeProcessInstance(ProcessInstance processInstance);
void internalRemoveProcessInstance(ProcessInstance processInstance);
+
+ void clearProcessInstances();
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -294,4 +294,8 @@
this.timerManager.dispose();
}
+ public void clearProcessInstances() {
+ this.processInstanceManager.clearProcessInstances();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -53,4 +53,8 @@
public void internalRemoveProcessInstance(ProcessInstance processInstance) {
processInstances.remove(((ProcessInstance)processInstance).getId());
}
+
+ public void clearProcessInstances() {
+ processInstances.clear();
+ }
}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.2.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-flow-persistence-jpa</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools Flow :: Persistence :: JPA</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <manifestLocation>META-INF</manifestLocation>
+ <instructions>
+ <_removeheaders>Ignore-Package</_removeheaders>
+ <Require-Bundle>org.drools.core;bundle-version="${pom.version}", org.drools.compiler;bundle-version="${pom.version}"</Require-Bundle>
+ <Import-Package>!org.drools.*, *</Import-Package>
+ <Export-Package> org.drools.*</Export-Package>
+ <DynamicImport-Package>*</DynamicImport-Package>
+ <!--Bundle-Activator>org.drools.osgi.core.Activator</Bundle-Activator-->
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-flow-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-flow-compiler</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-persistence-jpa</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-xjc</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- Hibernate -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-commons-annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ </dependency>
+
+ <!-- HSQLDB -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.btm</groupId>
+ <artifactId>btm</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!--dependency>
+ <groupId>org.objectweb.jotm</groupId>
+ <artifactId>com.springsource.org.objectweb.jotm</artifactId>
+ <version>2.0.10</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.experlog.xapool</groupId>
+ <artifactId>com.springsource.org.enhydra.jdbc</artifactId>
+ <version>1.5.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.directory</groupId>
+ <artifactId>com.springsource.org.apache.directory.server.jndi</artifactId>
+ <version>1.0.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.resource</groupId>
+ <artifactId>com.springsource.javax.resource</artifactId>
+ <version>1.5.0</version>
+ </dependency-->
+
+ </dependencies>
+
+</project>
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,105 @@
+package org.drools.persistence.processinstance;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.definition.process.Process;
+import org.drools.process.instance.ProcessInstanceManager;
+import org.drools.process.instance.impl.ProcessInstanceImpl;
+import org.drools.runtime.EnvironmentName;
+import org.drools.runtime.process.ProcessInstance;
+
+public class JPAProcessInstanceManager
+ implements
+ ProcessInstanceManager {
+
+ private InternalKnowledgeRuntime kruntime;
+ private transient Map<Long, ProcessInstance> processInstances;
+
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
+ this.kruntime = kruntime;
+ }
+
+ public void addProcessInstance(ProcessInstance processInstance) {
+ ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.kruntime.getEnvironment() );
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ em.persist( processInstanceInfo );
+ //em.refresh( processInstanceInfo );
+// em.flush();
+ //em.getTransaction().commit();
+ ((org.drools.process.instance.ProcessInstance) processInstance).setId( processInstanceInfo.getId() );
+ processInstanceInfo.updateLastReadDate();
+ internalAddProcessInstance(processInstance);
+ }
+
+ public void internalAddProcessInstance(ProcessInstance processInstance) {
+ if (this.processInstances == null) {
+ this.processInstances = new HashMap<Long, ProcessInstance>();
+ }
+ processInstances.put(processInstance.getId(), processInstance);
+ }
+
+ public ProcessInstance getProcessInstance(long id) {
+ org.drools.process.instance.ProcessInstance processInstance = null;
+ if (this.processInstances != null) {
+ processInstance = (org.drools.process.instance.ProcessInstance) this.processInstances.get(id);
+ if (processInstance != null) {
+ return processInstance;
+ }
+ }
+
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
+ id );
+ if ( processInstanceInfo == null ) {
+ return null;
+ }
+ processInstanceInfo.updateLastReadDate();
+ processInstance = (org.drools.process.instance.ProcessInstance)
+ processInstanceInfo.getProcessInstance(kruntime, this.kruntime.getEnvironment());
+ Process process = kruntime.getKnowledgeBase().getProcess( processInstance.getProcessId() );
+ if ( process == null ) {
+ throw new IllegalArgumentException( "Could not find process " + processInstance.getProcessId() );
+ }
+ processInstance.setProcess( process );
+ if ( processInstance.getKnowledgeRuntime() == null ) {
+ processInstance.setKnowledgeRuntime( kruntime );
+ ((ProcessInstanceImpl) processInstance).reconnect();
+ }
+ return processInstance;
+ }
+
+ public Collection<ProcessInstance> getProcessInstances() {
+ return new ArrayList<ProcessInstance>();
+ }
+
+ public void removeProcessInstance(ProcessInstance processInstance) {
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
+ processInstance.getId() );
+ if ( processInstanceInfo != null ) {
+ em.remove( processInstanceInfo );
+ }
+ internalRemoveProcessInstance(processInstance);
+ }
+
+ public void internalRemoveProcessInstance(ProcessInstance processInstance) {
+ if (this.processInstances != null) {
+ processInstances.remove( processInstance.getId() );
+ }
+ }
+
+ public void clearProcessInstances() {
+ if (processInstances != null) {
+ for (ProcessInstance processInstance: new ArrayList<ProcessInstance>(processInstances.values())) {
+ ((ProcessInstanceImpl) processInstance).disconnect();
+ }
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,15 @@
+package org.drools.persistence.processinstance;
+
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.process.instance.ProcessInstanceManager;
+import org.drools.process.instance.ProcessInstanceManagerFactory;
+
+public class JPAProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
+
+ public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
+ JPAProcessInstanceManager result = new JPAProcessInstanceManager();
+ result.setKnowledgeRuntime(kruntime);
+ return result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,40 @@
+package org.drools.persistence.processinstance;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.FlushModeType;
+import javax.persistence.Query;
+
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.process.instance.event.DefaultSignalManager;
+import org.drools.runtime.EnvironmentName;
+
+public class JPASignalManager extends DefaultSignalManager {
+
+ public JPASignalManager(InternalKnowledgeRuntime kruntime) {
+ super(kruntime);
+ }
+
+ public void signalEvent(String type,
+ Object event) {
+ for ( long id : getProcessInstancesForEvent( type ) ) {
+ getKnowledgeRuntime().getProcessInstance( id );
+ }
+ super.signalEvent( type,
+ event );
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<Long> getProcessInstancesForEvent(String type) {
+ EntityManager em = (EntityManager) getKnowledgeRuntime().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+
+ Query processInstancesForEvent = em.createNamedQuery( "ProcessInstancesWaitingForEvent" );
+ processInstancesForEvent.setFlushMode(FlushModeType.COMMIT);
+ processInstancesForEvent.setParameter( "type",
+ type );
+ List<Long> list = (List<Long>) processInstancesForEvent.getResultList();
+ return list;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,13 @@
+package org.drools.persistence.processinstance;
+
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.process.instance.event.SignalManager;
+import org.drools.process.instance.event.SignalManagerFactory;
+
+public class JPASignalManagerFactory implements SignalManagerFactory {
+
+ public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
+ return new JPASignalManager(kruntime);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,51 @@
+package org.drools.persistence.processinstance;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Version;
+
+ at Entity
+public class ProcessInstanceEventInfo {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long id;
+
+ @Version
+ @Column(name = "OPTLOCK")
+ private int version;
+
+ private String eventType;
+ private long processInstanceId;
+
+ protected ProcessInstanceEventInfo() {
+ }
+
+ public long getId() {
+ return this.id;
+ }
+
+ public int getVersion() {
+ return this.version;
+ }
+
+ public ProcessInstanceEventInfo(long processInstanceId,
+ String eventType) {
+ this.processInstanceId = processInstanceId;
+ this.eventType = eventType;
+ }
+
+ public long getProcessInstanceId() {
+ return processInstanceId;
+ }
+
+ public String getEventType() {
+ return eventType;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,426 @@
+package org.drools.persistence.processinstance;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.Lob;
+import javax.persistence.MapKey;
+import javax.persistence.OneToMany;
+import javax.persistence.PreUpdate;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.InternalRuleBase;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.marshalling.impl.MarshallerReaderContext;
+import org.drools.marshalling.impl.MarshallerWriteContext;
+import org.drools.marshalling.impl.ProcessInstanceMarshaller;
+import org.drools.marshalling.impl.ProcessMarshallerRegistry;
+import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.ContextInstance;
+import org.drools.process.instance.ContextInstanceContainer;
+import org.drools.process.instance.ContextableInstance;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.process.instance.impl.ProcessInstanceImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.process.NodeInstanceContainer;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkflowProcessInstance;
+import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
+import org.hibernate.annotations.CollectionOfElements;
+
+ at Entity
+public class ProcessInstanceInfo {
+
+ private static final String VARIABLE_SEPARATOR = ":";
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "InstanceId")
+ private Long processInstanceId;
+
+ @Version
+ @Column(name = "OPTLOCK")
+ private int version;
+
+ private String processId;
+ private Date startDate;
+ private Date lastReadDate;
+ private Date lastModificationDate;
+ private int state;
+ // TODO How do I mark a process instance info as dirty when the process
+ // instance has changed (so that byte array is regenerated and saved) ?
+ private @Lob
+ byte[] processInstanceByteArray;
+
+// @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
+// @JoinColumn(name = "processInstanceId")
+// private Set<EventType> eventTypes = new HashSet<EventType>();
+ private @CollectionOfElements
+
+ @JoinTable(name = "EventTypes", joinColumns = @JoinColumn(name = "InstanceId"))
+ Set<String> eventTypes = new HashSet<String>();
+ private @Transient
+ ProcessInstance processInstance;
+ private @Transient
+ Environment env;
+ @OneToMany(cascade = CascadeType.ALL)
+ @JoinColumn(name = "processInstanceId")
+ @MapKey(name = "name")
+ private Map<String, VariableInstanceInfo> variables = new HashMap<String, VariableInstanceInfo>();
+ private boolean externalVariables = false;
+
+ protected ProcessInstanceInfo() {
+ }
+
+ public ProcessInstanceInfo(ProcessInstance processInstance) {
+ this.processInstance = processInstance;
+ this.processId = processInstance.getProcessId();
+ startDate = new Date();
+ }
+
+ public ProcessInstanceInfo(ProcessInstance processInstance,
+ Environment env) {
+ this.processInstance = processInstance;
+ this.processId = processInstance.getProcessId();
+ startDate = new Date();
+ this.env = env;
+ }
+
+ public long getId() {
+ return processInstanceId;
+ }
+
+ public String getProcessId() {
+ return processId;
+ }
+
+ public Date getStartDate() {
+ return startDate;
+ }
+
+ public Date getLastModificationDate() {
+ return lastModificationDate;
+ }
+
+ public Date getLastReadDate() {
+ return lastReadDate;
+ }
+
+ public void updateLastReadDate() {
+ lastReadDate = new Date();
+ }
+
+ public int getState() {
+ return state;
+ }
+
+ public ProcessInstance getProcessInstance(InternalKnowledgeRuntime kruntime,
+ Environment env) {
+ this.env = env;
+ if ( processInstance == null ) {
+ try {
+ ByteArrayInputStream bais = new ByteArrayInputStream( processInstanceByteArray );
+ MarshallerReaderContext context = new MarshallerReaderContext( bais,
+ (InternalRuleBase) ((InternalKnowledgeBase) kruntime.getKnowledgeBase()).getRuleBase(),
+ null,
+ null );
+ ProcessInstanceMarshaller marshaller = getMarshallerFromContext( context );
+ context.wm = ((StatefulKnowledgeSessionImpl) kruntime).getInternalWorkingMemory();
+ processInstance = marshaller.readProcessInstance( context,
+ !externalVariables );
+ if ( externalVariables ) {
+ restoreVariables();
+ }
+ context.close();
+ } catch ( IOException e ) {
+ e.printStackTrace();
+ throw new IllegalArgumentException( "IOException while loading process instance: " + e.getMessage(),
+ e );
+ }
+ }
+ return processInstance;
+ }
+
+ private void restoreVariables() {
+ for ( Map.Entry<String, VariableInstanceInfo> entry : variables.entrySet() ) {
+ String[] variableHierarchy = entry.getKey().split( VARIABLE_SEPARATOR );
+ // last one is variable name
+ String variableName = variableHierarchy[variableHierarchy.length - 1];
+ // other ones are parent ids
+ List<Long> parentIds = new ArrayList<Long>();
+ for ( int i = 0; i < variableHierarchy.length - 1; i++ ) {
+ parentIds.add( Long.valueOf( variableHierarchy[i] ) );
+ }
+ restoreVariable( entry.getValue(),
+ parentIds,
+ variableName,
+ (WorkflowProcessInstance) processInstance );
+ }
+ }
+
+ private void restoreVariable(VariableInstanceInfo variableInfo,
+ List<Long> parentIds,
+ String variableName,
+ NodeInstanceContainer nodeInstanceContainer) throws NumberFormatException {
+ if ( parentIds.size() == 0 ) {
+ if ( !(nodeInstanceContainer instanceof ContextableInstance) ) {
+ throw new IllegalArgumentException( "Parent node instance is not a contextable instance: " + nodeInstanceContainer );
+ }
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance) ((ContextableInstance) nodeInstanceContainer).getContextInstance( VariableScope.VARIABLE_SCOPE );
+ VariablePersistenceStrategy persistenceStrategy = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy();
+ Object value = persistenceStrategy.getVariable( variableInfo,
+ this.env );
+ System.out.println( ">>>>> Restoring variable " + variableName + " = " + value );
+ variableScopeInstance.setVariable( variableName,
+ value );
+ } else {
+ Long nodeInstanceId = parentIds.get( 0 );
+ // find the node and get the variableScopeInstance and insert the
+ // variable..
+ Collection<NodeInstance> nodeInstances = nodeInstanceContainer.getNodeInstances();
+ for ( NodeInstance nodeInstance : nodeInstances ) {
+ if ( nodeInstance.getId() == nodeInstanceId ) {
+ parentIds.remove( 0 );
+ if ( !(nodeInstance instanceof NodeInstanceContainer) ) {
+ throw new IllegalArgumentException( "Restoring variable " + variableName + " but node found is not a node instance container:" + nodeInstance );
+ }
+ restoreVariable( variableInfo,
+ parentIds,
+ variableName,
+ (NodeInstanceContainer) nodeInstance );
+ }
+ return;
+ }
+ throw new IllegalArgumentException( "Could not find node instance " + nodeInstanceId + " in " + nodeInstanceContainer );
+ }
+ }
+
+ private ProcessInstanceMarshaller getMarshallerFromContext(MarshallerReaderContext context) throws IOException {
+ ObjectInputStream stream = context.stream;
+ String processInstanceType = stream.readUTF();
+ return ProcessMarshallerRegistry.INSTANCE.getMarshaller( processInstanceType );
+ }
+
+ private void saveProcessInstanceType(MarshallerWriteContext context,
+ ProcessInstance processInstance,
+ String processInstanceType) throws IOException {
+ ObjectOutputStream stream = context.stream;
+ // saves the processInstance type first
+ stream.writeUTF( processInstanceType );
+ }
+
+ @PreUpdate
+ public void update() {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ boolean variablesChanged = false;
+ try {
+ MarshallerWriteContext context = new MarshallerWriteContext( baos,
+ null,
+ null,
+ null,
+ null );
+ String processType = ((ProcessInstanceImpl) processInstance).getProcess().getType();
+ saveProcessInstanceType( context,
+ processInstance,
+ processType );
+ ProcessInstanceMarshaller marshaller = ProcessMarshallerRegistry.INSTANCE.getMarshaller( processType );
+ externalVariables = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy().isEnabled();
+ marshaller.writeProcessInstance( context,
+ processInstance,
+ !externalVariables );
+ if ( externalVariables ) {
+ variablesChanged = persistVariables();
+ }
+ context.close();
+ } catch ( IOException e ) {
+ throw new IllegalArgumentException( "IOException while storing process instance " + processInstance.getId() + ": " + e.getMessage() );
+ }
+ byte[] newByteArray = baos.toByteArray();
+ if ( variablesChanged || !Arrays.equals( newByteArray,
+ processInstanceByteArray ) ) {
+ this.state = processInstance.getState();
+ this.lastModificationDate = new Date();
+ this.processInstanceByteArray = newByteArray;
+ this.eventTypes.clear();
+ for ( String type : processInstance.getEventTypes() ) {
+ eventTypes.add( type );
+ }
+ }
+ }
+
+ private boolean persistVariables() {
+ // Get Process Variables
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance) ((WorkflowProcessInstanceImpl) this.processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE );
+ Map<String, Object> processVariables = variableScopeInstance.getVariables();
+ Map<String, VariableInstanceInfo> newVariables = new HashMap<String, VariableInstanceInfo>();
+ // persist process variables
+ persist( processVariables,
+ "",
+ newVariables );
+ // persist variables in nested variable scopes
+ Collection<NodeInstance> nodeInstances = ((WorkflowProcessInstanceImpl) this.processInstance).getNodeInstances();
+ if ( nodeInstances.size() > 0 ) {
+ persistNodeVariables( nodeInstances,
+ "",
+ newVariables );
+ }
+ if ( newVariables.size() > 0 || this.variables.size() > 0 ) {
+ // clear variables so unnecessary values are removed
+ this.variables.clear();
+ this.variables.putAll( newVariables );
+ // TODO: how can I know that no variables were changed?
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private void persist(Map<String, Object> variables,
+ String prefix,
+ Map<String, VariableInstanceInfo> newVariables) {
+ VariablePersistenceStrategy persistenceStrategy = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy();
+ for ( Map.Entry<String, Object> entries : variables.entrySet() ) {
+ String variableName = prefix + entries.getKey();
+ Object value = entries.getValue();
+ VariableInstanceInfo oldValue = this.variables.get( variableName );
+ VariableInstanceInfo variable = persistenceStrategy.persistVariable( variableName,
+ value,
+ oldValue,
+ this.env );
+
+ if ( variable != null ) {
+ System.out.println( "<<<<< Persisting variable " + variableName + " = " + value );
+ newVariables.put( variableName,
+ variable );
+ } else {
+ System.out.println( "<<<<< Variable " + variableName + " not persisted (value null)" );
+ }
+ }
+ }
+
+ private void persistNodeVariables(Collection<NodeInstance> nodeInstances,
+ String parentPrefix,
+ Map<String, VariableInstanceInfo> newVariables) {
+ for ( NodeInstance nodeInstance : nodeInstances ) {
+ String prefix = parentPrefix + nodeInstance.getId() + VARIABLE_SEPARATOR;
+ if ( nodeInstance instanceof ContextInstanceContainer ) {
+ List<ContextInstance> variableScopeInstances = ((ContextInstanceContainer) nodeInstance).getContextInstances( VariableScope.VARIABLE_SCOPE );
+ if ( variableScopeInstances != null ) {
+ for ( ContextInstance contextInstance : variableScopeInstances ) {
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance) contextInstance;
+ persist( variableScopeInstance.getVariables(),
+ prefix,
+ newVariables );
+ }
+ }
+ }
+ if ( nodeInstance instanceof NodeInstanceContainer ) {
+ Collection<NodeInstance> nodeInstancesInsideTheContainer = ((NodeInstanceContainer) nodeInstance).getNodeInstances();
+ persistNodeVariables( nodeInstancesInsideTheContainer,
+ prefix,
+ newVariables );
+ }
+ }
+ }
+
+ public Map<String, VariableInstanceInfo> getVariables() {
+ return variables;
+ }
+
+ public void setVariables(Map<String, VariableInstanceInfo> variables) {
+ this.variables = variables;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if ( obj == null ) {
+ return false;
+ }
+ if ( getClass() != obj.getClass() ) {
+ return false;
+ }
+ final ProcessInstanceInfo other = (ProcessInstanceInfo) obj;
+ if ( this.processInstanceId != other.processInstanceId && (this.processInstanceId == null || !this.processInstanceId.equals( other.processInstanceId )) ) {
+ return false;
+ }
+ if ( this.version != other.version ) {
+ return false;
+ }
+ if ( (this.processId == null) ? (other.processId != null) : !this.processId.equals( other.processId ) ) {
+ return false;
+ }
+ if ( this.startDate != other.startDate && (this.startDate == null || !this.startDate.equals( other.startDate )) ) {
+ return false;
+ }
+ if ( this.lastReadDate != other.lastReadDate && (this.lastReadDate == null || !this.lastReadDate.equals( other.lastReadDate )) ) {
+ return false;
+ }
+ if ( this.lastModificationDate != other.lastModificationDate && (this.lastModificationDate == null || !this.lastModificationDate.equals( other.lastModificationDate )) ) {
+ return false;
+ }
+ if ( this.state != other.state ) {
+ return false;
+ }
+ if ( !Arrays.equals( this.processInstanceByteArray,
+ other.processInstanceByteArray ) ) {
+ return false;
+ }
+ if ( this.eventTypes != other.eventTypes && (this.eventTypes == null || !this.eventTypes.equals( other.eventTypes )) ) {
+ return false;
+ }
+ if ( this.processInstance != other.processInstance && (this.processInstance == null || !this.processInstance.equals( other.processInstance )) ) {
+ return false;
+ }
+ if ( this.env != other.env && (this.env == null || !this.env.equals( other.env )) ) {
+ return false;
+ }
+ if ( this.variables != other.variables && (this.variables == null || !this.variables.equals( other.variables )) ) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 61 * hash + (this.processInstanceId != null ? this.processInstanceId.hashCode() : 0);
+ hash = 61 * hash + this.version;
+ hash = 61 * hash + (this.processId != null ? this.processId.hashCode() : 0);
+ hash = 61 * hash + (this.startDate != null ? this.startDate.hashCode() : 0);
+ hash = 61 * hash + (this.lastReadDate != null ? this.lastReadDate.hashCode() : 0);
+ hash = 61 * hash + (this.lastModificationDate != null ? this.lastModificationDate.hashCode() : 0);
+ hash = 61 * hash + this.state;
+ hash = 61 * hash + Arrays.hashCode( this.processInstanceByteArray );
+ hash = 61 * hash + (this.eventTypes != null ? this.eventTypes.hashCode() : 0);
+ hash = 61 * hash + (this.processInstance != null ? this.processInstance.hashCode() : 0);
+ hash = 61 * hash + (this.env != null ? this.env.hashCode() : 0);
+ hash = 61 * hash + (this.variables != null ? this.variables.hashCode() : 0);
+ return hash;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntity.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntity.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,87 @@
+package org.drools.persistence.session;
+
+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 = 510l;
+
+ @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;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityMethods.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityMethods.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityMethods.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,86 @@
+package org.drools.persistence.session;
+
+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 = 510l;
+
+
+ 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;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityOnlyFields.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityOnlyFields.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyEntityOnlyFields.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,60 @@
+package org.drools.persistence.session;
+
+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 = 510l;
+
+ @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;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,10 @@
+package org.drools.persistence.session;
+
+import javax.persistence.Entity;
+
+ at Entity
+public class MySubEntity extends MyEntity {
+
+ private static final long serialVersionUID = 510l;
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,10 @@
+package org.drools.persistence.session;
+
+import javax.persistence.Entity;
+
+ at Entity
+public class MySubEntityMethods extends MyEntityMethods {
+
+ private static final long serialVersionUID = 510l;
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyVariableSerializable.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyVariableSerializable.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/MyVariableSerializable.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,59 @@
+package org.drools.persistence.session;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MyVariableSerializable implements Serializable {
+
+ private static final long serialVersionUID = 510l;
+
+ 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();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,814 @@
+package org.drools.persistence.session;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Properties;
+
+import javax.naming.InitialContext;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.transaction.UserTransaction;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.xml.DOMConfigurator;
+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.compiler.ProcessBuilderImpl;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
+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.DeleteDbFiles;
+import org.h2.tools.Server;
+
+import bitronix.tm.TransactionManagerServices;
+import bitronix.tm.resource.jdbc.PoolingDataSource;
+
+public class SingleSessionCommandServiceTest extends TestCase {
+
+ 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.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" );
+ }
+
+ protected void tearDown() {
+ emf.close();
+ ds1.close();
+ }
+
+ public void testPersistenceWorkItems() throws Exception {
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ Collection<KnowledgePackage> kpkgs = getProcessWorkItems();
+ kbase.addKnowledgePackages( kpkgs );
+
+ Properties properties = new Properties();
+ properties.setProperty( "drools.commandService",
+ "org.drools.persistence.session.SingleSessionCommandService" );
+ properties.setProperty( "drools.processInstanceManagerFactory",
+ "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
+ properties.setProperty( "drools.workItemManagerFactory",
+ "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
+ properties.setProperty( "drools.processSignalManagerFactory",
+ "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+ properties.setProperty( "drools.timerService",
+ "org.drools.persistence.session.JpaJDKTimerService" );
+ SessionConfiguration config = new SessionConfiguration( properties );
+
+ SingleSessionCommandService service = new SingleSessionCommandService( kbase,
+ config,
+ env );
+ int sessionId = service.getSessionId();
+
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ System.out.println( "Started process instance " + processInstance.getId() );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+
+ workItem = handler.getWorkItem();
+ assertNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ service.dispose();
+ }
+
+ public void testPersistenceWorkItemsUserTransaction() throws Exception {
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ Collection<KnowledgePackage> kpkgs = getProcessWorkItems();
+ kbase.addKnowledgePackages( kpkgs );
+
+ Properties properties = new Properties();
+ properties.setProperty( "drools.commandService",
+ "org.drools.persistence.session.SingleSessionCommandService" );
+ properties.setProperty( "drools.processInstanceManagerFactory",
+ "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
+ properties.setProperty( "drools.workItemManagerFactory",
+ "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
+ properties.setProperty( "drools.processSignalManagerFactory",
+ "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+ properties.setProperty( "drools.timerService",
+ "org.drools.persistence.session.JpaJDKTimerService" );
+ SessionConfiguration config = new SessionConfiguration( properties );
+
+ SingleSessionCommandService service = new SingleSessionCommandService( kbase,
+ config,
+ env );
+ int sessionId = service.getSessionId();
+
+ UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ System.out.println( "Started process instance " + processInstance.getId() );
+ ut.commit();
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ ut.commit();
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+ ut.commit();
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ ut.commit();
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+ ut.commit();
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ ut.commit();
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+ ut.commit();
+
+ workItem = handler.getWorkItem();
+ assertNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ ut.begin();
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ ut.commit();
+ assertNull( processInstance );
+ service.dispose();
+ }
+
+ @SuppressWarnings("unused")
+ 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();
+ ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+ List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
+ list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
+ return list;
+ }
+
+ public void testPersistenceSubProcess() {
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+ Properties properties = new Properties();
+ properties.setProperty( "drools.commandService",
+ "org.drools.persistence.session.SingleSessionCommandService" );
+ properties.setProperty( "drools.processInstanceManagerFactory",
+ "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
+ properties.setProperty( "drools.workItemManagerFactory",
+ "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
+ properties.setProperty( "drools.processSignalManagerFactory",
+ "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+ properties.setProperty( "drools.timerService",
+ "org.drools.persistence.session.JpaJDKTimerService" );
+ SessionConfiguration config = new SessionConfiguration( properties );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ Package pkg = getProcessSubProcess();
+ ruleBase.addPackage( pkg );
+
+ SingleSessionCommandService service = new SingleSessionCommandService( ruleBase,
+ config,
+ env );
+ int sessionId = service.getSessionId();
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.execute( startProcessCommand );
+ System.out.println( "Started process instance " + processInstance.getId() );
+ long processInstanceId = processInstance.getId();
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ ruleBase,
+ config,
+ env );
+ 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 = new SingleSessionCommandService( sessionId,
+ ruleBase,
+ config,
+ env );
+ CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
+ completeWorkItemCommand.setWorkItemId( workItem.getId() );
+ service.execute( completeWorkItemCommand );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ ruleBase,
+ config,
+ env );
+ 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();
+ }
+
+ @SuppressWarnings("unused")
+ 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();
+ ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( 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 testPersistenceTimer() throws Exception {
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+ Properties properties = new Properties();
+ properties.setProperty( "drools.commandService",
+ "org.drools.persistence.session.SingleSessionCommandService" );
+ properties.setProperty( "drools.processInstanceManagerFactory",
+ "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
+ properties.setProperty( "drools.workItemManagerFactory",
+ "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
+ properties.setProperty( "drools.processSignalManagerFactory",
+ "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+ properties.setProperty( "drools.timerService",
+ "org.drools.persistence.session.JpaJDKTimerService" );
+ SessionConfiguration config = new SessionConfiguration( properties );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ Collection<KnowledgePackage> kpkgs = getProcessTimer();
+ kbase.addKnowledgePackages( kpkgs );
+
+ SingleSessionCommandService service = new SingleSessionCommandService( kbase,
+ config,
+ env );
+ int sessionId = service.getSessionId();
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ System.out.println( "Started process instance " + processInstance.getId() );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNotNull( processInstance );
+ service.dispose();
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ Thread.sleep( 3000 );
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ }
+
+ @SuppressWarnings("unused")
+ 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();
+ ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+ List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
+ list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
+ return list;
+ }
+
+ public void testPersistenceTimer2() throws Exception {
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+ Properties properties = new Properties();
+ properties.setProperty( "drools.commandService",
+ "org.drools.persistence.session.SingleSessionCommandService" );
+ properties.setProperty( "drools.processInstanceManagerFactory",
+ "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
+ properties.setProperty( "drools.workItemManagerFactory",
+ "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
+ properties.setProperty( "drools.processSignalManagerFactory",
+ "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+ properties.setProperty( "drools.timerService",
+ "org.drools.persistence.session.JpaJDKTimerService" );
+ SessionConfiguration config = new SessionConfiguration( properties );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ Collection<KnowledgePackage> kpkgs = getProcessTimer2();
+ kbase.addKnowledgePackages( kpkgs );
+
+ SingleSessionCommandService service = new SingleSessionCommandService( kbase,
+ config,
+ env );
+ int sessionId = service.getSessionId();
+ StartProcessCommand startProcessCommand = new StartProcessCommand();
+ startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
+ ProcessInstance processInstance = service.execute( startProcessCommand );
+ System.out.println( "Started process instance " + processInstance.getId() );
+
+ Thread.sleep( 2000 );
+
+ service = new SingleSessionCommandService( sessionId,
+ kbase,
+ config,
+ env );
+ GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() );
+ processInstance = service.execute( getProcessInstanceCommand );
+ assertNull( processInstance );
+ }
+
+ @SuppressWarnings("unused")
+ 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();
+ ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder );
+ processBuilder.buildProcess( process,
+ null );
+ List<KnowledgePackage> list = new ArrayList<KnowledgePackage>();
+ list.add( new KnowledgePackageImp( packageBuilder.getPackage() ) );
+ return list;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,41 @@
+package org.drools.persistence.session;
+
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
+
+public class TestWorkItemHandler implements WorkItemHandler {
+
+ private static TestWorkItemHandler INSTANCE = new TestWorkItemHandler();
+
+ private WorkItem workItem;
+ private WorkItem aborted;
+
+ private TestWorkItemHandler() {
+ }
+
+ public static TestWorkItemHandler getInstance() {
+ return INSTANCE;
+ }
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ this.workItem = workItem;
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ this.aborted = workItem;
+ }
+
+ public WorkItem getWorkItem() {
+ WorkItem result = workItem;
+ workItem = null;
+ return result;
+ }
+
+ public WorkItem getAbortedWorkItem() {
+ WorkItem result = aborted;
+ aborted = null;
+ return result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariableCheckerTestWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariableCheckerTestWorkItemHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariableCheckerTestWorkItemHandler.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,33 @@
+package org.drools.persistence.session;
+
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
+
+public class VariableCheckerTestWorkItemHandler implements WorkItemHandler {
+
+ private static VariableCheckerTestWorkItemHandler INSTANCE = new VariableCheckerTestWorkItemHandler();
+
+ private WorkItem workItem;
+
+ private VariableCheckerTestWorkItemHandler() {
+ }
+
+ public static VariableCheckerTestWorkItemHandler getInstance() {
+ return INSTANCE;
+ }
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ this.workItem = workItem;
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ }
+
+ public WorkItem getWorkItem() {
+ WorkItem result = workItem;
+ workItem = null;
+ return result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,428 @@
+package org.drools.persistence.session;
+
+import bitronix.tm.TransactionManagerServices;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import junit.framework.TestCase;
+
+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.io.impl.ClassPathResource;
+import org.drools.persistence.jpa.JPAKnowledgeService;
+import org.drools.persistence.processinstance.VariablePersistenceStrategyFactory;
+import org.drools.persistence.processinstance.persisters.JPAVariablePersister;
+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 bitronix.tm.resource.jdbc.PoolingDataSource;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+
+public class VariablePersistenceStrategyTest extends TestCase {
+
+ PoolingDataSource ds1;
+
+ @Override
+ protected void setUp() throws Exception {
+ 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.init();
+ VariablePersistenceStrategyFactory.getVariablePersistenceStrategy()
+ .setPersister("javax.persistence.Entity",
+ "org.drools.persistence.processinstance.persisters.JPAVariablePersister");
+ VariablePersistenceStrategyFactory.getVariablePersistenceStrategy()
+ .setPersister("java.io.Serializable",
+ "org.drools.persistence.processinstance.persisters.SerializableVariablePersister");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ ds1.close();
+ }
+
+ public void testPersistenceVariables() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( new ClassPathResource( "VariablePersistenceStrategyProcess.rf" ), ResourceType.DRF );
+ for (KnowledgeBuilderError error: kbuilder.getErrors()) {
+ System.out.println(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();
+
+ System.out.println("### 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"));
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ ksession.startProcess( "com.sample.ruleflow", parameters );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ List<?> result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+ assertEquals(5, result.size());
+
+ System.out.println("### 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());
+ assertNull(processInstance.getVariable("a"));
+ assertNull(processInstance.getVariable("b"));
+ assertNull(processInstance.getVariable("c"));
+ System.out.println("### Completing first work item ###");
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ System.out.println("### 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()));
+ System.out.println(o);
+ }
+
+ System.out.println("### 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());
+ System.out.println("### 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());
+
+ System.out.println("### 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());
+ System.out.println("### 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()) {
+ System.out.println(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()) {
+ System.out.println(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 );
+ }
+
+ public void testWorkItemWithVariablePersistence() throws Exception{
+ KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+ conf.setProperty("drools.dialect.java.compiler", "JANINO");
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
+ kbuilder.add( new ClassPathResource( "VPSProcessWithWorkItems.rf" ), ResourceType.DRF );
+ for (KnowledgeBuilderError error: kbuilder.getErrors()) {
+ System.out.println(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());
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
+ TransactionManagerServices.getTransactionManager() );
+
+
+ StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+ int id = ksession.getId();
+
+
+ System.out.println("### Starting process ###");
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("x", "SomeString");
+ parameters.put("y", new MyEntity("This is a test Entity"));
+ parameters.put("z", new MyVariableSerializable("This is a test SerializableObject"));
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ ksession.startProcess( "com.sample.ruleflow", parameters );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ List<?> result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+
+ assertEquals(5, result.size());
+
+ System.out.println("### 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", ((MyEntity) processInstance.getVariable("y")).getTest());
+ assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText());
+ assertNull(processInstance.getVariable("a"));
+ assertNull(processInstance.getVariable("b"));
+ assertNull(processInstance.getVariable("c"));
+
+ System.out.println("### Completing first work item ###");
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("zeta", processInstance.getVariable("z"));
+ results.put("equis", processInstance.getVariable("x")+"->modifiedResult");
+
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(), results );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ System.out.println("### Retrieving variable instance infos ###");
+ result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+ //6 Variables from the process and 2 variables from the workitems
+ assertEquals(8, result.size());
+ for (Object o: result) {
+ System.out.println(((VariableInstanceInfo) o));
+ }
+
+ System.out.println("### Retrieving process instance ###");
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+ processInstance = (WorkflowProcessInstance)
+ ksession.getProcessInstance(processInstance.getId());
+ assertNotNull(processInstance);
+ System.out.println("######## Getting the already Persisted Variables #########");
+ assertEquals("SomeString->modifiedResult", processInstance.getVariable("x"));
+ assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest());
+ 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());
+ System.out.println("### Completing second work item ###");
+ results = new HashMap<String, Object>();
+ results.put("zeta", processInstance.getVariable("z"));
+ results.put("equis", processInstance.getVariable("x"));
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(), results );
+
+
+ workItem = handler.getWorkItem();
+ assertNotNull(workItem);
+
+ result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+ assertEquals(8, result.size());
+
+ System.out.println("### Retrieving process instance ###");
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+ processInstance = (WorkflowProcessInstance)
+ ksession.getProcessInstance(processInstance.getId());
+ assertNotNull(processInstance);
+ assertEquals("SomeString->modifiedResult", processInstance.getVariable("x"));
+ assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest());
+ 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());
+ System.out.println("### Completing third work item ###");
+ results = new HashMap<String, Object>();
+ results.put("zeta", processInstance.getVariable("z"));
+ results.put("equis", processInstance.getVariable("x"));
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(), results );
+
+ workItem = handler.getWorkItem();
+ assertNull(workItem);
+
+ result = emf.createEntityManager().createQuery("select i from VariableInstanceInfo i").getResultList();
+
+ assertEquals(0, result.size());
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+ processInstance = (WorkflowProcessInstance)
+ ksession.getProcessInstance(processInstance.getId());
+ assertNull(processInstance);
+ }
+
+ public void testEntityWithSuperClassAnnotationField() throws Exception {
+ MySubEntity subEntity = new MySubEntity();
+ subEntity.setId(3L);
+ assertEquals(3L, JPAVariablePersister.getClassIdValue(subEntity));
+ }
+
+ public void testEntityWithSuperClassAnnotationMethod() throws Exception {
+ MySubEntityMethods subEntity = new MySubEntityMethods();
+ subEntity.setId(3L);
+ assertEquals(3L, JPAVariablePersister.getClassIdValue(subEntity));
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/EventsProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/EventsProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/EventsProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,46 @@
+<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <workItem id="2" name="WorkItem1" >
+ <work name="MyWork" >
+ </work>
+ </workItem>
+ <eventNode id="3" name="Message" >
+ <eventFilters>
+ <eventFilter type="eventType" eventType="MyEvent1" />
+ </eventFilters>
+ </eventNode>
+ <actionNode id="4" name="Action1" >
+ <action type="expression" dialect="java" >System.out.println("Executed action1");</action>
+ </actionNode>
+ <eventNode id="5" name="Message" >
+ <eventFilters>
+ <eventFilter type="eventType" eventType="MyEvent2" />
+ </eventFilters>
+ </eventNode>
+ <actionNode id="6" name="Action2" >
+ <action type="expression" dialect="java" >System.out.println("Executed action2");</action>
+ </actionNode>
+ <join id="7" name="AND" type="1" />
+ <end id="8" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="7" />
+ <connection from="3" to="4" />
+ <connection from="4" to="7" />
+ <connection from="5" to="6" />
+ <connection from="6" to="7" />
+ <connection from="7" to="8" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/MyWorkItemHandlers.conf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/MyWorkItemHandlers.conf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/MyWorkItemHandlers.conf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,12 @@
+// We use MVEL to return a List of work definitions
+// The properties of the work definitions are specified as a Map<String, Object>
+// The allowed properties are name, parameters, displayName, icon and customEditor
+// The returned result should thus be of type List<Map<String, Object>>
+import org.drools.persistence.session.TestWorkItemHandler;
+
+[
+
+ "MyWork" : TestWorkItemHandler.getInstance(),
+ "Human Task" : TestWorkItemHandler.getInstance()
+
+]
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/drools.session.conf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/drools.session.conf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/drools.session.conf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,5 @@
+drools.workItemHandlers = MyWorkItemHandlers.conf
+#drools.commandService = org.drools.persistence.session.SingleSessionCommandService
+#drools.processInstanceManagerFactory = org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory
+#drools.workItemManagerFactory = org.drools.persistence.processinstance.JPAWorkItemManagerFactory
+#drools.processSignalManagerFactory = org.drools.persistence.processinstance.JPASignalManagerFactory
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/orm.xml (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/orm.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
+ version="1.0">
+ <named-query name="ProcessInstancesWaitingForEvent">
+ <query>
+select
+ processInstanceInfo.processInstanceId
+from
+ ProcessInstanceInfo processInstanceInfo
+where
+ :type in elements(processInstanceInfo.eventTypes)
+ </query>
+ </named-query>
+</entity-mappings>
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/META-INF/persistence.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
+ <!--persistence-unit name="ProcessService">
+ <jta-data-source>java:/DefaultDS</jta-data-source>
+ <properties>
+ <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+ </properties>
+ </persistence-unit-->
+ <persistence-unit name="org.drools.persistence.jpa" transaction-type="JTA">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <jta-data-source>jdbc/testDS1</jta-data-source>
+ <class>org.drools.persistence.session.SessionInfo</class>
+ <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
+ <class>org.drools.persistence.session.MyEntity</class>
+ <class>org.drools.persistence.session.MyEntityMethods</class>
+ <class>org.drools.persistence.session.MyEntityOnlyFields</class>
+ <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
+ <class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
+ <class>org.drools.persistence.processinstance.variabletypes.SerializablePersistedVariable</class>
+ <class>org.drools.persistence.processinstance.WorkItemInfo</class>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
+ <property name="hibernate.max_fetch_depth" value="3"/>
+ <property name="hibernate.hbm2ddl.auto" value="update" />
+ <property name="hibernate.show_sql" value="false" />
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
+ </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,24 @@
+<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ <imports>
+ <import name="java.util.List" />
+ </imports>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <ruleSet id="2" name="RuleSet" ruleFlowGroup="group1" />
+ <end id="3" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetRules.drl (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/RuleSetRules.drl 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,10 @@
+package org.drools.test
+
+import java.util.List
+
+rule SimpleRule
+ when
+ l: List()
+ then
+ System.out.println("Found list " + l);
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/StateProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/StateProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/StateProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,28 @@
+<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ <imports>
+ <import name="java.util.List" />
+ </imports>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <state id="2" name="State" >
+ <constraints>
+ <constraint toNodeId="3" name="constraint" priority="1" >List()</constraint>
+ </constraints>
+ </state>
+ <end id="3" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SubProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SubProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SubProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,48 @@
+<?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="SubProcess" id="com.sample.SubProcess" package-name="com.sample" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <humanTask id="6" name="Task2" x="128" y="16" width="80" height="40" >
+ <work name="Human Task" >
+ <parameter name="ActorId" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>admin</value>
+ </parameter>
+ <parameter name="Comment" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>You need to do task 2 !</value>
+ </parameter>
+ <parameter name="Content" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </parameter>
+ <parameter name="Priority" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>0</value>
+ </parameter>
+ <parameter name="Skippable" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>false</value>
+ </parameter>
+ <parameter name="TaskName" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>Task2</value>
+ </parameter>
+ </work>
+ </humanTask>
+ <start id="1" name="Start" x="16" y="16" width="80" height="40" />
+ <end id="3" name="End" x="240" y="16" width="80" height="40" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="6" />
+ <connection from="6" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SuperProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SuperProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/SuperProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,51 @@
+<?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="SuperProcess" id="com.sample.SuperProcess" package-name="com.sample" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <humanTask id="6" name="Task1" x="240" y="16" width="80" height="40" >
+ <work name="Human Task" >
+ <parameter name="ActorId" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>admin</value>
+ </parameter>
+ <parameter name="Comment" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>You need to do task 1 !</value>
+ </parameter>
+ <parameter name="Content" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </parameter>
+ <parameter name="Priority" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>0</value>
+ </parameter>
+ <parameter name="Skippable" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>false</value>
+ </parameter>
+ <parameter name="TaskName" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>Task1</value>
+ </parameter>
+ </work>
+ </humanTask>
+ <start id="1" name="Start" x="16" y="52" width="80" height="40" />
+ <end id="3" name="End" x="576" y="52" width="80" height="40" />
+ <subProcess id="7" name="Flow" x="464" y="52" width="80" height="40" processId="com.sample.SubProcess" >
+ </subProcess>
+ </nodes>
+
+ <connections>
+ <connection from="1" to="6" />
+ <connection from="6" to="7" />
+ <connection from="7" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/TimerProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/TimerProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/TimerProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,30 @@
+<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <humanTask id="2" name="User Task" >
+ <work name="Human Task" >
+ </work>
+ <timers>
+ <timer id="1" delay="1000" >
+ <action type="expression" dialect="java" >System.out.println("Timer triggered");
+((org.drools.process.instance.ProcessInstance) kcontext.getProcessInstance()).setState(org.drools.runtime.process.ProcessInstance.STATE_ABORTED);</action>
+ </timer>
+ </timers>
+ </humanTask>
+ <end id="3" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,161 @@
+<?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="droolsflow" id="com.sample.ruleflow" package-name="com.sample" >
+
+ <header>
+ <imports>
+ <import name="org.drools.persistence.session.MyEntity" />
+ <import name="org.drools.persistence.session.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.persistence.session.MyEntity" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.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.persistence.session.MyEntity" />
+ </variable>
+ <variable name="c" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="16" y="16" width="48" height="48" />
+ <end id="3" name="End" x="957" y="16" 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>
+ <mapping type="in" from="x" to="equis" />
+ <mapping type="in" from="z" to="zeta" />
+ <mapping type="out" from="equis" to="x" />
+ <mapping type="out" from="zeta" to="z" />
+ </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="124" 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>
+ <mapping type="in" from="x" to="equis" />
+ <mapping type="in" from="z" to="zeta" />
+ <mapping type="out" from="equis" to="x" />
+ <mapping type="out" from="zeta" to="z" />
+ </humanTask>
+ <actionNode id="8" name="Action" x="601" 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="713" y="16" 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>
+ <mapping type="in" from="x" to="equis" />
+ <mapping type="in" from="z" to="zeta" />
+ <mapping type="out" from="equis" to="x" />
+ <mapping type="out" from="zeta" to="z" />
+ </humanTask>
+ <actionNode id="10" name="Action" x="845" y="16" 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
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,150 @@
+<?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.persistence.session.MyEntity" />
+ <import name="org.drools.persistence.session.MyVariableSerializable" />
+ </imports>
+ <variables>
+ <variable name="x" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </variable>
+ <variable name="y" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ <variable name="a" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </variable>
+ <variable name="b" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
+ </variable>
+ <variable name="c" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="16" y="16" width="48" height="48" />
+ <end id="3" name="End" x="669" y="16" 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" >
+ <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" >
+ <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
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,125 @@
+<?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.persistence.session.MyEntity" />
+ <import name="org.drools.persistence.session.MyVariableSerializable" />
+ </imports>
+ <variables>
+ <variable name="x" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </variable>
+ <variable name="y" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
+ </variable>
+ <variable name="a" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </variable>
+ <variable name="b" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
+ </variable>
+ <variable name="c" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="16" y="16" width="48" height="48" />
+ <end id="3" name="End" x="669" y="16" width="48" height="48" />
+ <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);
+System.out.println("a = " + a);
+System.out.println("b = " + b);
+System.out.println("c = " + c);
+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("c", new MyEntity("This is a changed test Entity"));
+kcontext.setVariable("b", new MyVariableSerializable("This is a changed test SerializableObject"));</action>
+ </actionNode>
+ <humanTask id="9" 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="10" 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);
+ </action>
+ </actionNode>
+ </nodes>
+
+ <connections>
+ <connection from="8" to="9" />
+ <connection from="9" to="10" />
+ <connection from="10" to="3" />
+ <connection from="1" to="6" />
+ <connection from="6" to="7" />
+ <connection from="7" to="8" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,203 @@
+<?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.persistence.session.MyEntity" />
+ <import name="org.drools.persistence.session.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.persistence.session.MyEntity" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ <variable name="v" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>Default</value>
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="16" y="16" width="48" height="48" />
+ <end id="3" name="End" x="669" y="16" width="48" height="48" />
+ <composite id="4" name="CompositeNode" x="187" y="33" width="326" height="327" >
+ <variables>
+ <variable name="y" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ <variable name="x" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value></value>
+ </variable>
+ <variable name="w" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>New default</value>
+ </variable>
+ </variables>
+ <nodes>
+ <actionNode id="1" name="Action" x="31" y="62" >
+ <action type="expression" dialect="mvel" >kcontext.setVariable("x", "new String");
+kcontext.setVariable("y", new MyEntity("This is a new test Entity"));
+kcontext.setVariable("z", new MyVariableSerializable("This is a new test SerializableObject"));</action>
+ </actionNode>
+ <humanTask id="2" name="Human Task" x="122" y="61" >
+ <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="3" name="Action" x="211" y="61" >
+ <action type="expression" dialect="mvel" >System.out.println("v = " + v);
+System.out.println("w = " + w);
+System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ <composite id="7" name="CompositeNode" x="26" y="136" width="273" height="173" >
+ <variables>
+ <variable name="a" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>Newest Default 1</value>
+ </variable>
+ <variable name="z" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>Newest Default 2</value>
+ </variable>
+ </variables>
+ <nodes>
+ <actionNode id="1" name="Action" x="18" y="55" >
+ <action type="expression" dialect="mvel" >System.out.println("a = " + a);
+System.out.println("v = " + v);
+System.out.println("w = " + w);
+System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ <humanTask id="2" name="Human Task" x="140" y="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="3" name="Action" x="163" y="112" >
+ <action type="expression" dialect="mvel" >System.out.println("a = " + a);
+System.out.println("v = " + v);
+System.out.println("w = " + w);
+System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ </nodes>
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+ <in-ports>
+ <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
+ </in-ports>
+ <out-ports>
+ <out-port type="DROOLS_DEFAULT" nodeId="3" nodeOutType="DROOLS_DEFAULT" />
+ </out-ports>
+ </composite>
+ </nodes>
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ <connection from="3" to="7" />
+ </connections>
+ <in-ports>
+ <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
+ </in-ports>
+ <out-ports>
+ <out-port type="DROOLS_DEFAULT" nodeId="7" nodeOutType="DROOLS_DEFAULT" />
+ </out-ports>
+ </composite>
+ <actionNode id="5" name="Action" x="547" y="50" width="80" height="48" >
+ <action type="expression" dialect="mvel" >System.out.println("v = " + v);
+System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ <humanTask id="6" name="Human Task" >
+ <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="7" name="Action" >
+ <action type="expression" dialect="mvel" >System.out.println("v = " + v);
+System.out.println("x = " + x);
+System.out.println("y = " + y);
+System.out.println("z = " + z);</action>
+ </actionNode>
+ </nodes>
+
+ <connections>
+ <connection from="7" to="3" />
+ <connection from="1" to="4" />
+ <connection from="4" to="5" />
+ <connection from="5" to="6" />
+ <connection from="6" to="7" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablesProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablesProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/VariablesProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,73 @@
+<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ <variables>
+ <variable name="name" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ <value>xxx</value>
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <actionNode id="2" name="Action" >
+ <action type="expression" dialect="java" >System.out.println("Executing for " + name);</action>
+ </actionNode>
+ <workItem id="3" name="WorkItem1" >
+ <work name="MyWork" >
+ </work>
+ <mapping type="in" from="name" to="name" />
+ </workItem>
+ <actionNode id="4" name="Action" >
+ <action type="expression" dialect="java" >System.out.println("Executing for " + name);</action>
+ </actionNode>
+ <composite id="5" name="CompositeNode" >
+ <variables>
+ <variable name="text" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </variable>
+ </variables>
+ <nodes>
+ <actionNode id="1" name="Action" >
+ <action type="expression" dialect="mvel" >kcontext.setVariable("text", name);</action>
+ </actionNode>
+ <workItem id="2" name="Log" x="130" y="46" width="80" height="40" >
+ <work name="MyWork" >
+ <parameter name="Message" >
+ <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
+ </parameter>
+ </work>
+ <mapping type="in" from="text" to="text" />
+ </workItem>
+ <actionNode id="3" name="Action" x="129" y="109" >
+ <action type="expression" dialect="mvel" >System.out.println("Subprocess " + text);</action>
+ </actionNode>
+ </nodes>
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+ <in-ports>
+ <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
+ </in-ports>
+ <out-ports>
+ <out-port type="DROOLS_DEFAULT" nodeId="3" nodeOutType="DROOLS_DEFAULT" />
+ </out-ports>
+ </composite>
+ <end id="6" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ <connection from="3" to="4" />
+ <connection from="4" to="5" />
+ <connection from="5" to="6" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/WorkItemsProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/WorkItemsProcess.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/WorkItemsProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,38 @@
+<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <actionNode id="2" name="Action" >
+ <action type="expression" dialect="java" >System.out.println("Executed action");</action>
+ </actionNode>
+ <workItem id="4" name="WorkItem2" >
+ <work name="MyWork" >
+ </work>
+ </workItem>
+ <end id="6" name="End" />
+ <start id="1" name="Start" />
+ <workItem id="3" name="WorkItem1" >
+ <work name="MyWork" >
+ </work>
+ </workItem>
+ <workItem id="5" name="WorkItem3" >
+ <work name="MyWork" >
+ </work>
+ </workItem>
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="3" to="4" />
+ <connection from="5" to="6" />
+ <connection from="2" to="3" />
+ <connection from="4" to="5" />
+ </connections>
+
+</process>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/jndi.properties
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/jndi.properties (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/jndi.properties 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1 @@
+java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/log4j.xml
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/log4j.xml (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/log4j.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -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="INFO"/>
+ </logger>
+
+ <!-- logger name="org.hibernate">
+ <level value="INFO"/>
+ </logger -->
+ <root>
+ <priority value="INFO"/>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+</log4j:configuration>
Added: labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/testVariables.rf
===================================================================
--- labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/testVariables.rf (rev 0)
+++ labs/jbossrules/trunk/drools-flow-persistence-jpa/src/test/resources/testVariables.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -0,0 +1,79 @@
+<?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="flow" id="testVariables" package-name="org.drools.examples" >
+
+ <header>
+ <variables>
+ <variable name="var1" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
+ </variable>
+ <variable name="var2" >
+ <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
+ </variable>
+ </variables>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="147" y="32" width="80" height="40" />
+
+ <workItem id="2" name="Log1" x="147" y="191" width="80" height="40" >
+ <work name="Log" >
+
+ </work>
+ <mapping type="in" from="var1" to="var1" />
+ <mapping type="in" from="var2" to="var2" />
+ <mapping type="out" from="var1" to="var1" />
+ <mapping type="out" from="var2" to="var2" />
+ </workItem>
+ <actionNode id="3" name="Action1" x="146" y="117" width="80" height="40" >
+ <action type="expression" dialect="mvel" >
+ System.out.println("Variable Value: "+kcontext.getVariable("var1"));
+ System.out.println("Variable Value: "+kcontext.getVariable("var2"));
+ </action>
+ </actionNode>
+ <actionNode id="4" name="Action2" x="147" y="268" width="80" height="40" >
+ <action type="expression" dialect="mvel" >
+ System.out.println("Variable Value: "+kcontext.getVariable("var1"));
+ System.out.println("Variable Value: "+kcontext.getVariable("var2"));
+ </action>
+ </actionNode>
+ <workItem id="5" name="Log2" x="146" y="345" width="80" height="40" >
+ <work name="Log" >
+
+ </work>
+ <mapping type="in" from="var1" to="var1" />
+ <mapping type="in" from="var2" to="var2" />
+ <mapping type="out" from="var1" to="var1" />
+ <mapping type="out" from="var2" to="var2" />
+ </workItem>
+ <actionNode id="6" name="Action3" x="144" y="422" width="80" height="40" >
+ <action type="expression" dialect="mvel" >
+ System.out.println("Variable Value: "+kcontext.getVariable("var1"));
+ System.out.println("Variable Value: "+kcontext.getVariable("var2"));
+ </action>
+ </actionNode>
+ <workItem id="7" name="Log3" x="146" y="345" width="80" height="40" >
+ <work name="Log" >
+
+ </work>
+ <mapping type="in" from="var1" to="var1" />
+ <mapping type="in" from="var2" to="var2" />
+ <mapping type="out" from="var1" to="var1" />
+ <mapping type="out" from="var2" to="var2" />
+ </workItem>
+ <end id="8" name="End" x="145" y="494" width="80" height="40" />
+ </nodes>
+
+ <connections>
+ <connection from="3" to="2" />
+ <connection from="1" to="3" />
+ <connection from="2" to="4" />
+ <connection from="4" to="5" />
+ <connection from="5" to="6" />
+ <connection from="6" to="7" />
+ <connection from="7" to="8" />
+ </connections>
+
+</process>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-local/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-local/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-local/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -55,7 +55,7 @@
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
<scope>test</scope>
<type>jar</type>
</dependency>
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/BaseTaskServiceTest.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1047,15 +1047,12 @@
}
public void registerWorkItemHandler(String workItemName,
- WorkItemHandler handler) {
- }
-
- //@Override
- public void registerWorkItemHandler(String workItemName,
org.drools.runtime.process.WorkItemHandler handler) {
- throw new UnsupportedOperationException( "Not supported yet." );
}
+ public void clear() {
+ }
+
}
}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -63,20 +63,10 @@
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-flow-core</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-flow-compiler</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -9,14 +9,10 @@
import org.drools.command.CommandService;
import org.drools.command.impl.CommandBasedStatefulKnowledgeSession;
import org.drools.persistence.jpa.KnowledgeStoreService;
-import org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory;
-import org.drools.persistence.processinstance.JPASignalManagerFactory;
import org.drools.persistence.processinstance.JPAWorkItemManagerFactory;
import org.drools.persistence.session.JpaJDKTimerService;
import org.drools.persistence.session.SingleSessionCommandService;
-import org.drools.process.instance.ProcessInstanceManagerFactory;
import org.drools.process.instance.WorkItemManagerFactory;
-import org.drools.process.instance.event.SignalManagerFactory;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
@@ -27,10 +23,8 @@
implements
KnowledgeStoreService {
- private Class< ? extends CommandExecutor> commandServiceClass;
- private Class< ? extends ProcessInstanceManagerFactory> processInstanceManagerFactoryClass;
+ private Class< ? extends CommandExecutor> commandServiceClass;
private Class< ? extends WorkItemManagerFactory> workItemManagerFactoryClass;
- private Class< ? extends SignalManagerFactory> processSignalManagerFactoryClass;
private Class< ? extends TimerService> timerServiceClass;
private Properties configProps = new Properties();
@@ -41,9 +35,9 @@
protected void setDefaultImplementations() {
setCommandServiceClass( SingleSessionCommandService.class );
- setProcessInstanceManagerFactoryClass( JPAProcessInstanceManagerFactory.class );
+ setProcessInstanceManagerFactoryClass( "org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory" );
setWorkItemManagerFactoryClass( JPAWorkItemManagerFactory.class );
- setProcessSignalManagerFactoryClass( JPASignalManagerFactory.class );
+ setProcessSignalManagerFactoryClass( "org.drools.persistence.processinstance.JPASignalManagerFactory" );
setTimerServiceClass( JpaJDKTimerService.class );
}
@@ -175,18 +169,11 @@
return timerServiceClass;
}
- public void setProcessInstanceManagerFactoryClass(Class< ? extends ProcessInstanceManagerFactory> processInstanceManagerFactoryClass) {
- if ( processInstanceManagerFactoryClass != null ) {
- this.processInstanceManagerFactoryClass = processInstanceManagerFactoryClass;
- configProps.put( "drools.processInstanceManagerFactory",
- processInstanceManagerFactoryClass.getName() );
- }
+ public void setProcessInstanceManagerFactoryClass(String processInstanceManagerFactoryClass) {
+ configProps.put( "drools.processInstanceManagerFactory",
+ processInstanceManagerFactoryClass );
}
- public Class< ? extends ProcessInstanceManagerFactory> getProcessInstanceManagerFactoryClass() {
- return processInstanceManagerFactoryClass;
- }
-
public void setWorkItemManagerFactoryClass(Class< ? extends WorkItemManagerFactory> workItemManagerFactoryClass) {
if ( workItemManagerFactoryClass != null ) {
this.workItemManagerFactoryClass = workItemManagerFactoryClass;
@@ -199,16 +186,8 @@
return workItemManagerFactoryClass;
}
- public void setProcessSignalManagerFactoryClass(Class< ? extends SignalManagerFactory> processSignalManagerFactoryClass) {
- if ( processSignalManagerFactoryClass != null ) {
- this.processSignalManagerFactoryClass = processSignalManagerFactoryClass;
- configProps.put( "drools.processSignalManagerFactory",
- processSignalManagerFactoryClass.getName() );
- }
+ public void setProcessSignalManagerFactoryClass(String processSignalManagerFactoryClass) {
+ configProps.put( "drools.processSignalManagerFactory",
+ processSignalManagerFactoryClass );
}
-
- public Class< ? extends SignalManagerFactory> getProcessSignalManagerFactoryClass() {
- return processSignalManagerFactoryClass;
- }
-
}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,105 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.persistence.EntityManager;
-
-import org.drools.common.InternalKnowledgeRuntime;
-import org.drools.definition.process.Process;
-import org.drools.process.instance.ProcessInstanceManager;
-import org.drools.process.instance.impl.ProcessInstanceImpl;
-import org.drools.runtime.EnvironmentName;
-import org.drools.runtime.process.ProcessInstance;
-
-public class JPAProcessInstanceManager
- implements
- ProcessInstanceManager {
-
- private InternalKnowledgeRuntime kruntime;
- private transient Map<Long, ProcessInstance> processInstances;
-
- public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
- this.kruntime = kruntime;
- }
-
- public void addProcessInstance(ProcessInstance processInstance) {
- ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.kruntime.getEnvironment() );
- EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
- em.persist( processInstanceInfo );
- //em.refresh( processInstanceInfo );
-// em.flush();
- //em.getTransaction().commit();
- ((org.drools.process.instance.ProcessInstance) processInstance).setId( processInstanceInfo.getId() );
- processInstanceInfo.updateLastReadDate();
- internalAddProcessInstance(processInstance);
- }
-
- public void internalAddProcessInstance(ProcessInstance processInstance) {
- if (this.processInstances == null) {
- this.processInstances = new HashMap<Long, ProcessInstance>();
- }
- processInstances.put(processInstance.getId(), processInstance);
- }
-
- public ProcessInstance getProcessInstance(long id) {
- org.drools.process.instance.ProcessInstance processInstance = null;
- if (this.processInstances != null) {
- processInstance = (org.drools.process.instance.ProcessInstance) this.processInstances.get(id);
- if (processInstance != null) {
- return processInstance;
- }
- }
-
- EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
- ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
- id );
- if ( processInstanceInfo == null ) {
- return null;
- }
- processInstanceInfo.updateLastReadDate();
- processInstance = (org.drools.process.instance.ProcessInstance)
- processInstanceInfo.getProcessInstance(kruntime, this.kruntime.getEnvironment());
- Process process = kruntime.getKnowledgeBase().getProcess( processInstance.getProcessId() );
- if ( process == null ) {
- throw new IllegalArgumentException( "Could not find process " + processInstance.getProcessId() );
- }
- processInstance.setProcess( process );
- if ( processInstance.getKnowledgeRuntime() == null ) {
- processInstance.setKnowledgeRuntime( kruntime );
- ((ProcessInstanceImpl) processInstance).reconnect();
- }
- return processInstance;
- }
-
- public Collection<ProcessInstance> getProcessInstances() {
- return new ArrayList<ProcessInstance>();
- }
-
- public void removeProcessInstance(ProcessInstance processInstance) {
- EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
- ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
- processInstance.getId() );
- if ( processInstanceInfo != null ) {
- em.remove( processInstanceInfo );
- }
- internalRemoveProcessInstance(processInstance);
- }
-
- public void internalRemoveProcessInstance(ProcessInstance processInstance) {
- if (this.processInstances != null) {
- processInstances.remove( processInstance.getId() );
- }
- }
-
- public void clearProcessInstances() {
- if (processInstances != null) {
- for (ProcessInstance processInstance: new ArrayList<ProcessInstance>(processInstances.values())) {
- ((ProcessInstanceImpl) processInstance).disconnect();
- }
- }
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,15 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import org.drools.common.InternalKnowledgeRuntime;
-import org.drools.process.instance.ProcessInstanceManager;
-import org.drools.process.instance.ProcessInstanceManagerFactory;
-
-public class JPAProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
-
- public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
- JPAProcessInstanceManager result = new JPAProcessInstanceManager();
- result.setKnowledgeRuntime(kruntime);
- return result;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,40 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.FlushModeType;
-import javax.persistence.Query;
-
-import org.drools.common.InternalKnowledgeRuntime;
-import org.drools.process.instance.event.DefaultSignalManager;
-import org.drools.runtime.EnvironmentName;
-
-public class JPASignalManager extends DefaultSignalManager {
-
- public JPASignalManager(InternalKnowledgeRuntime kruntime) {
- super(kruntime);
- }
-
- public void signalEvent(String type,
- Object event) {
- for ( long id : getProcessInstancesForEvent( type ) ) {
- getKnowledgeRuntime().getProcessInstance( id );
- }
- super.signalEvent( type,
- event );
- }
-
- @SuppressWarnings("unchecked")
- private List<Long> getProcessInstancesForEvent(String type) {
- EntityManager em = (EntityManager) getKnowledgeRuntime().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
-
- Query processInstancesForEvent = em.createNamedQuery( "ProcessInstancesWaitingForEvent" );
- processInstancesForEvent.setFlushMode(FlushModeType.COMMIT);
- processInstancesForEvent.setParameter( "type",
- type );
- List<Long> list = (List<Long>) processInstancesForEvent.getResultList();
- return list;
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,13 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import org.drools.common.InternalKnowledgeRuntime;
-import org.drools.process.instance.event.SignalManager;
-import org.drools.process.instance.event.SignalManagerFactory;
-
-public class JPASignalManagerFactory implements SignalManagerFactory {
-
- public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
- return new JPASignalManager(kruntime);
- }
-
-}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -168,4 +168,8 @@
workItems.clear();
}
}
+
+ public void clear() {
+ clearWorkItems();
+ }
}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceEventInfo.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,51 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Version;
-
- at Entity
-public class ProcessInstanceEventInfo {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private long id;
-
- @Version
- @Column(name = "OPTLOCK")
- private int version;
-
- private String eventType;
- private long processInstanceId;
-
- protected ProcessInstanceEventInfo() {
- }
-
- public long getId() {
- return this.id;
- }
-
- public int getVersion() {
- return this.version;
- }
-
- public ProcessInstanceEventInfo(long processInstanceId,
- String eventType) {
- this.processInstanceId = processInstanceId;
- this.eventType = eventType;
- }
-
- public long getProcessInstanceId() {
- return processInstanceId;
- }
-
- public String getEventType() {
- return eventType;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,426 +0,0 @@
-package org.drools.persistence.processinstance;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.Lob;
-import javax.persistence.MapKey;
-import javax.persistence.OneToMany;
-import javax.persistence.PreUpdate;
-import javax.persistence.Transient;
-import javax.persistence.Version;
-
-import org.drools.common.InternalKnowledgeRuntime;
-import org.drools.common.InternalRuleBase;
-import org.drools.impl.InternalKnowledgeBase;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.marshalling.impl.MarshallerReaderContext;
-import org.drools.marshalling.impl.MarshallerWriteContext;
-import org.drools.marshalling.impl.ProcessInstanceMarshaller;
-import org.drools.marshalling.impl.ProcessMarshallerRegistry;
-import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
-import org.drools.process.core.context.variable.VariableScope;
-import org.drools.process.instance.ContextInstance;
-import org.drools.process.instance.ContextInstanceContainer;
-import org.drools.process.instance.ContextableInstance;
-import org.drools.process.instance.context.variable.VariableScopeInstance;
-import org.drools.process.instance.impl.ProcessInstanceImpl;
-import org.drools.runtime.Environment;
-import org.drools.runtime.process.NodeInstance;
-import org.drools.runtime.process.NodeInstanceContainer;
-import org.drools.runtime.process.ProcessInstance;
-import org.drools.runtime.process.WorkflowProcessInstance;
-import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
-import org.hibernate.annotations.CollectionOfElements;
-
- at Entity
-public class ProcessInstanceInfo {
-
- private static final String VARIABLE_SEPARATOR = ":";
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column(name = "InstanceId")
- private Long processInstanceId;
-
- @Version
- @Column(name = "OPTLOCK")
- private int version;
-
- private String processId;
- private Date startDate;
- private Date lastReadDate;
- private Date lastModificationDate;
- private int state;
- // TODO How do I mark a process instance info as dirty when the process
- // instance has changed (so that byte array is regenerated and saved) ?
- private @Lob
- byte[] processInstanceByteArray;
-
-// @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
-// @JoinColumn(name = "processInstanceId")
-// private Set<EventType> eventTypes = new HashSet<EventType>();
- private @CollectionOfElements
-
- @JoinTable(name = "EventTypes", joinColumns = @JoinColumn(name = "InstanceId"))
- Set<String> eventTypes = new HashSet<String>();
- private @Transient
- ProcessInstance processInstance;
- private @Transient
- Environment env;
- @OneToMany(cascade = CascadeType.ALL)
- @JoinColumn(name = "processInstanceId")
- @MapKey(name = "name")
- private Map<String, VariableInstanceInfo> variables = new HashMap<String, VariableInstanceInfo>();
- private boolean externalVariables = false;
-
- protected ProcessInstanceInfo() {
- }
-
- public ProcessInstanceInfo(ProcessInstance processInstance) {
- this.processInstance = processInstance;
- this.processId = processInstance.getProcessId();
- startDate = new Date();
- }
-
- public ProcessInstanceInfo(ProcessInstance processInstance,
- Environment env) {
- this.processInstance = processInstance;
- this.processId = processInstance.getProcessId();
- startDate = new Date();
- this.env = env;
- }
-
- public long getId() {
- return processInstanceId;
- }
-
- public String getProcessId() {
- return processId;
- }
-
- public Date getStartDate() {
- return startDate;
- }
-
- public Date getLastModificationDate() {
- return lastModificationDate;
- }
-
- public Date getLastReadDate() {
- return lastReadDate;
- }
-
- public void updateLastReadDate() {
- lastReadDate = new Date();
- }
-
- public int getState() {
- return state;
- }
-
- public ProcessInstance getProcessInstance(InternalKnowledgeRuntime kruntime,
- Environment env) {
- this.env = env;
- if ( processInstance == null ) {
- try {
- ByteArrayInputStream bais = new ByteArrayInputStream( processInstanceByteArray );
- MarshallerReaderContext context = new MarshallerReaderContext( bais,
- (InternalRuleBase) ((InternalKnowledgeBase) kruntime.getKnowledgeBase()).getRuleBase(),
- null,
- null );
- ProcessInstanceMarshaller marshaller = getMarshallerFromContext( context );
- context.wm = ((StatefulKnowledgeSessionImpl) kruntime).getInternalWorkingMemory();
- processInstance = marshaller.readProcessInstance( context,
- !externalVariables );
- if ( externalVariables ) {
- restoreVariables();
- }
- context.close();
- } catch ( IOException e ) {
- e.printStackTrace();
- throw new IllegalArgumentException( "IOException while loading process instance: " + e.getMessage(),
- e );
- }
- }
- return processInstance;
- }
-
- private void restoreVariables() {
- for ( Map.Entry<String, VariableInstanceInfo> entry : variables.entrySet() ) {
- String[] variableHierarchy = entry.getKey().split( VARIABLE_SEPARATOR );
- // last one is variable name
- String variableName = variableHierarchy[variableHierarchy.length - 1];
- // other ones are parent ids
- List<Long> parentIds = new ArrayList<Long>();
- for ( int i = 0; i < variableHierarchy.length - 1; i++ ) {
- parentIds.add( Long.valueOf( variableHierarchy[i] ) );
- }
- restoreVariable( entry.getValue(),
- parentIds,
- variableName,
- (WorkflowProcessInstance) processInstance );
- }
- }
-
- private void restoreVariable(VariableInstanceInfo variableInfo,
- List<Long> parentIds,
- String variableName,
- NodeInstanceContainer nodeInstanceContainer) throws NumberFormatException {
- if ( parentIds.size() == 0 ) {
- if ( !(nodeInstanceContainer instanceof ContextableInstance) ) {
- throw new IllegalArgumentException( "Parent node instance is not a contextable instance: " + nodeInstanceContainer );
- }
- VariableScopeInstance variableScopeInstance = (VariableScopeInstance) ((ContextableInstance) nodeInstanceContainer).getContextInstance( VariableScope.VARIABLE_SCOPE );
- VariablePersistenceStrategy persistenceStrategy = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy();
- Object value = persistenceStrategy.getVariable( variableInfo,
- this.env );
- System.out.println( ">>>>> Restoring variable " + variableName + " = " + value );
- variableScopeInstance.setVariable( variableName,
- value );
- } else {
- Long nodeInstanceId = parentIds.get( 0 );
- // find the node and get the variableScopeInstance and insert the
- // variable..
- Collection<NodeInstance> nodeInstances = nodeInstanceContainer.getNodeInstances();
- for ( NodeInstance nodeInstance : nodeInstances ) {
- if ( nodeInstance.getId() == nodeInstanceId ) {
- parentIds.remove( 0 );
- if ( !(nodeInstance instanceof NodeInstanceContainer) ) {
- throw new IllegalArgumentException( "Restoring variable " + variableName + " but node found is not a node instance container:" + nodeInstance );
- }
- restoreVariable( variableInfo,
- parentIds,
- variableName,
- (NodeInstanceContainer) nodeInstance );
- }
- return;
- }
- throw new IllegalArgumentException( "Could not find node instance " + nodeInstanceId + " in " + nodeInstanceContainer );
- }
- }
-
- private ProcessInstanceMarshaller getMarshallerFromContext(MarshallerReaderContext context) throws IOException {
- ObjectInputStream stream = context.stream;
- String processInstanceType = stream.readUTF();
- return ProcessMarshallerRegistry.INSTANCE.getMarshaller( processInstanceType );
- }
-
- private void saveProcessInstanceType(MarshallerWriteContext context,
- ProcessInstance processInstance,
- String processInstanceType) throws IOException {
- ObjectOutputStream stream = context.stream;
- // saves the processInstance type first
- stream.writeUTF( processInstanceType );
- }
-
- @PreUpdate
- public void update() {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- boolean variablesChanged = false;
- try {
- MarshallerWriteContext context = new MarshallerWriteContext( baos,
- null,
- null,
- null,
- null );
- String processType = ((ProcessInstanceImpl) processInstance).getProcess().getType();
- saveProcessInstanceType( context,
- processInstance,
- processType );
- ProcessInstanceMarshaller marshaller = ProcessMarshallerRegistry.INSTANCE.getMarshaller( processType );
- externalVariables = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy().isEnabled();
- marshaller.writeProcessInstance( context,
- processInstance,
- !externalVariables );
- if ( externalVariables ) {
- variablesChanged = persistVariables();
- }
- context.close();
- } catch ( IOException e ) {
- throw new IllegalArgumentException( "IOException while storing process instance " + processInstance.getId() + ": " + e.getMessage() );
- }
- byte[] newByteArray = baos.toByteArray();
- if ( variablesChanged || !Arrays.equals( newByteArray,
- processInstanceByteArray ) ) {
- this.state = processInstance.getState();
- this.lastModificationDate = new Date();
- this.processInstanceByteArray = newByteArray;
- this.eventTypes.clear();
- for ( String type : processInstance.getEventTypes() ) {
- eventTypes.add( type );
- }
- }
- }
-
- private boolean persistVariables() {
- // Get Process Variables
- VariableScopeInstance variableScopeInstance = (VariableScopeInstance) ((WorkflowProcessInstanceImpl) this.processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE );
- Map<String, Object> processVariables = variableScopeInstance.getVariables();
- Map<String, VariableInstanceInfo> newVariables = new HashMap<String, VariableInstanceInfo>();
- // persist process variables
- persist( processVariables,
- "",
- newVariables );
- // persist variables in nested variable scopes
- Collection<NodeInstance> nodeInstances = ((WorkflowProcessInstanceImpl) this.processInstance).getNodeInstances();
- if ( nodeInstances.size() > 0 ) {
- persistNodeVariables( nodeInstances,
- "",
- newVariables );
- }
- if ( newVariables.size() > 0 || this.variables.size() > 0 ) {
- // clear variables so unnecessary values are removed
- this.variables.clear();
- this.variables.putAll( newVariables );
- // TODO: how can I know that no variables were changed?
- return true;
- } else {
- return false;
- }
- }
-
- private void persist(Map<String, Object> variables,
- String prefix,
- Map<String, VariableInstanceInfo> newVariables) {
- VariablePersistenceStrategy persistenceStrategy = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy();
- for ( Map.Entry<String, Object> entries : variables.entrySet() ) {
- String variableName = prefix + entries.getKey();
- Object value = entries.getValue();
- VariableInstanceInfo oldValue = this.variables.get( variableName );
- VariableInstanceInfo variable = persistenceStrategy.persistVariable( variableName,
- value,
- oldValue,
- this.env );
-
- if ( variable != null ) {
- System.out.println( "<<<<< Persisting variable " + variableName + " = " + value );
- newVariables.put( variableName,
- variable );
- } else {
- System.out.println( "<<<<< Variable " + variableName + " not persisted (value null)" );
- }
- }
- }
-
- private void persistNodeVariables(Collection<NodeInstance> nodeInstances,
- String parentPrefix,
- Map<String, VariableInstanceInfo> newVariables) {
- for ( NodeInstance nodeInstance : nodeInstances ) {
- String prefix = parentPrefix + nodeInstance.getId() + VARIABLE_SEPARATOR;
- if ( nodeInstance instanceof ContextInstanceContainer ) {
- List<ContextInstance> variableScopeInstances = ((ContextInstanceContainer) nodeInstance).getContextInstances( VariableScope.VARIABLE_SCOPE );
- if ( variableScopeInstances != null ) {
- for ( ContextInstance contextInstance : variableScopeInstances ) {
- VariableScopeInstance variableScopeInstance = (VariableScopeInstance) contextInstance;
- persist( variableScopeInstance.getVariables(),
- prefix,
- newVariables );
- }
- }
- }
- if ( nodeInstance instanceof NodeInstanceContainer ) {
- Collection<NodeInstance> nodeInstancesInsideTheContainer = ((NodeInstanceContainer) nodeInstance).getNodeInstances();
- persistNodeVariables( nodeInstancesInsideTheContainer,
- prefix,
- newVariables );
- }
- }
- }
-
- public Map<String, VariableInstanceInfo> getVariables() {
- return variables;
- }
-
- public void setVariables(Map<String, VariableInstanceInfo> variables) {
- this.variables = variables;
- }
-
- @Override
- public boolean equals(Object obj) {
- if ( obj == null ) {
- return false;
- }
- if ( getClass() != obj.getClass() ) {
- return false;
- }
- final ProcessInstanceInfo other = (ProcessInstanceInfo) obj;
- if ( this.processInstanceId != other.processInstanceId && (this.processInstanceId == null || !this.processInstanceId.equals( other.processInstanceId )) ) {
- return false;
- }
- if ( this.version != other.version ) {
- return false;
- }
- if ( (this.processId == null) ? (other.processId != null) : !this.processId.equals( other.processId ) ) {
- return false;
- }
- if ( this.startDate != other.startDate && (this.startDate == null || !this.startDate.equals( other.startDate )) ) {
- return false;
- }
- if ( this.lastReadDate != other.lastReadDate && (this.lastReadDate == null || !this.lastReadDate.equals( other.lastReadDate )) ) {
- return false;
- }
- if ( this.lastModificationDate != other.lastModificationDate && (this.lastModificationDate == null || !this.lastModificationDate.equals( other.lastModificationDate )) ) {
- return false;
- }
- if ( this.state != other.state ) {
- return false;
- }
- if ( !Arrays.equals( this.processInstanceByteArray,
- other.processInstanceByteArray ) ) {
- return false;
- }
- if ( this.eventTypes != other.eventTypes && (this.eventTypes == null || !this.eventTypes.equals( other.eventTypes )) ) {
- return false;
- }
- if ( this.processInstance != other.processInstance && (this.processInstance == null || !this.processInstance.equals( other.processInstance )) ) {
- return false;
- }
- if ( this.env != other.env && (this.env == null || !this.env.equals( other.env )) ) {
- return false;
- }
- if ( this.variables != other.variables && (this.variables == null || !this.variables.equals( other.variables )) ) {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 61 * hash + (this.processInstanceId != null ? this.processInstanceId.hashCode() : 0);
- hash = 61 * hash + this.version;
- hash = 61 * hash + (this.processId != null ? this.processId.hashCode() : 0);
- hash = 61 * hash + (this.startDate != null ? this.startDate.hashCode() : 0);
- hash = 61 * hash + (this.lastReadDate != null ? this.lastReadDate.hashCode() : 0);
- hash = 61 * hash + (this.lastModificationDate != null ? this.lastModificationDate.hashCode() : 0);
- hash = 61 * hash + this.state;
- hash = 61 * hash + Arrays.hashCode( this.processInstanceByteArray );
- hash = 61 * hash + (this.eventTypes != null ? this.eventTypes.hashCode() : 0);
- hash = 61 * hash + (this.processInstance != null ? this.processInstance.hashCode() : 0);
- hash = 61 * hash + (this.env != null ? this.env.hashCode() : 0);
- hash = 61 * hash + (this.variables != null ? this.variables.hashCode() : 0);
- return hash;
- }
-
-}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/WorkItemInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/WorkItemInfo.java 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/WorkItemInfo.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -23,9 +23,10 @@
import javax.persistence.Transient;
import javax.persistence.Version;
+import org.drools.marshalling.impl.InputMarshaller;
import org.drools.marshalling.impl.MarshallerReaderContext;
import org.drools.marshalling.impl.MarshallerWriteContext;
-import org.drools.marshalling.impl.ProcessMarshallerImpl;
+import org.drools.marshalling.impl.OutputMarshaller;
import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
import org.drools.process.instance.WorkItem;
import org.drools.runtime.Environment;
@@ -106,7 +107,7 @@
null,
null,
null );
- workItem = ProcessMarshallerImpl.readWorkItem( context, !externalVariables );
+ workItem = InputMarshaller.readWorkItem( context, !externalVariables );
if ( externalVariables ) {
restoreVariables();
}
@@ -164,7 +165,7 @@
null,
null );
externalVariables = VariablePersistenceStrategyFactory.getVariablePersistenceStrategy().isEnabled();
- ProcessMarshallerImpl.writeWorkItem( context,
+ OutputMarshaller.writeWorkItem( context,
workItem, !externalVariables );
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-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2010-09-17 13:54:59 UTC (rev 35178)
@@ -18,9 +18,7 @@
import org.drools.common.EndOperationListener;
import org.drools.common.InternalKnowledgeRuntime;
import org.drools.impl.KnowledgeBaseImpl;
-import org.drools.persistence.processinstance.JPAProcessInstanceManager;
import org.drools.persistence.processinstance.JPAWorkItemManager;
-import org.drools.process.instance.InternalProcessRuntime;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.KnowledgeSessionConfiguration;
@@ -337,7 +335,7 @@
StatefulKnowledgeSession ksession = this.service.ksession;
// clean up cached process and work item instances
if ( ksession != null ) {
- ((JPAProcessInstanceManager) ((InternalProcessRuntime) ((InternalKnowledgeRuntime) ksession).getProcessRuntime()).getProcessInstanceManager()).clearProcessInstances();
+ ((InternalKnowledgeRuntime) ksession).getProcessRuntime().clearProcessInstances();
((JPAWorkItemManager) ksession.getWorkItemManager()).clearWorkItems();
}
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,46 +0,0 @@
-<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- </header>
-
- <nodes>
- <start id="1" name="Start" />
- <workItem id="2" name="WorkItem1" >
- <work name="MyWork" >
- </work>
- </workItem>
- <eventNode id="3" name="Message" >
- <eventFilters>
- <eventFilter type="eventType" eventType="MyEvent1" />
- </eventFilters>
- </eventNode>
- <actionNode id="4" name="Action1" >
- <action type="expression" dialect="java" >System.out.println("Executed action1");</action>
- </actionNode>
- <eventNode id="5" name="Message" >
- <eventFilters>
- <eventFilter type="eventType" eventType="MyEvent2" />
- </eventFilters>
- </eventNode>
- <actionNode id="6" name="Action2" >
- <action type="expression" dialect="java" >System.out.println("Executed action2");</action>
- </actionNode>
- <join id="7" name="AND" type="1" />
- <end id="8" name="End" />
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="7" />
- <connection from="3" to="4" />
- <connection from="4" to="7" />
- <connection from="5" to="6" />
- <connection from="6" to="7" />
- <connection from="7" to="8" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,24 +0,0 @@
-<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- <imports>
- <import name="java.util.List" />
- </imports>
- </header>
-
- <nodes>
- <start id="1" name="Start" />
- <ruleSet id="2" name="RuleSet" ruleFlowGroup="group1" />
- <end id="3" name="End" />
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetRules.drl 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/RuleSetRules.drl 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,10 +0,0 @@
-package org.drools.test
-
-import java.util.List
-
-rule SimpleRule
- when
- l: List()
- then
- System.out.println("Found list " + l);
-end
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/StateProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/StateProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/StateProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,28 +0,0 @@
-<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- <imports>
- <import name="java.util.List" />
- </imports>
- </header>
-
- <nodes>
- <start id="1" name="Start" />
- <state id="2" name="State" >
- <constraints>
- <constraint toNodeId="3" name="constraint" priority="1" >List()</constraint>
- </constraints>
- </state>
- <end id="3" name="End" />
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SubProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SubProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SubProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,48 +0,0 @@
-<?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="SubProcess" id="com.sample.SubProcess" package-name="com.sample" >
-
- <header>
- </header>
-
- <nodes>
- <humanTask id="6" name="Task2" x="128" y="16" width="80" height="40" >
- <work name="Human Task" >
- <parameter name="ActorId" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>admin</value>
- </parameter>
- <parameter name="Comment" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>You need to do task 2 !</value>
- </parameter>
- <parameter name="Content" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </parameter>
- <parameter name="Priority" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>0</value>
- </parameter>
- <parameter name="Skippable" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>false</value>
- </parameter>
- <parameter name="TaskName" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>Task2</value>
- </parameter>
- </work>
- </humanTask>
- <start id="1" name="Start" x="16" y="16" width="80" height="40" />
- <end id="3" name="End" x="240" y="16" width="80" height="40" />
- </nodes>
-
- <connections>
- <connection from="1" to="6" />
- <connection from="6" to="3" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SuperProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SuperProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/SuperProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,51 +0,0 @@
-<?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="SuperProcess" id="com.sample.SuperProcess" package-name="com.sample" >
-
- <header>
- </header>
-
- <nodes>
- <humanTask id="6" name="Task1" x="240" y="16" width="80" height="40" >
- <work name="Human Task" >
- <parameter name="ActorId" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>admin</value>
- </parameter>
- <parameter name="Comment" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>You need to do task 1 !</value>
- </parameter>
- <parameter name="Content" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </parameter>
- <parameter name="Priority" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>0</value>
- </parameter>
- <parameter name="Skippable" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>false</value>
- </parameter>
- <parameter name="TaskName" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>Task1</value>
- </parameter>
- </work>
- </humanTask>
- <start id="1" name="Start" x="16" y="52" width="80" height="40" />
- <end id="3" name="End" x="576" y="52" width="80" height="40" />
- <subProcess id="7" name="Flow" x="464" y="52" width="80" height="40" processId="com.sample.SubProcess" >
- </subProcess>
- </nodes>
-
- <connections>
- <connection from="1" to="6" />
- <connection from="6" to="7" />
- <connection from="7" to="3" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/TimerProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/TimerProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/TimerProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,30 +0,0 @@
-<?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="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- </header>
-
- <nodes>
- <start id="1" name="Start" />
- <humanTask id="2" name="User Task" >
- <work name="Human Task" >
- </work>
- <timers>
- <timer id="1" delay="1000" >
- <action type="expression" dialect="java" >System.out.println("Timer triggered");
-((org.drools.process.instance.ProcessInstance) kcontext.getProcessInstance()).setState(org.drools.runtime.process.ProcessInstance.STATE_ABORTED);</action>
- </timer>
- </timers>
- </humanTask>
- <end id="3" name="End" />
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VPSProcessWithWorkItems.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,161 +0,0 @@
-<?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="droolsflow" id="com.sample.ruleflow" package-name="com.sample" >
-
- <header>
- <imports>
- <import name="org.drools.persistence.session.MyEntity" />
- <import name="org.drools.persistence.session.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.persistence.session.MyEntity" />
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.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.persistence.session.MyEntity" />
- </variable>
- <variable name="c" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" x="16" y="16" width="48" height="48" />
- <end id="3" name="End" x="957" y="16" 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>
- <mapping type="in" from="x" to="equis" />
- <mapping type="in" from="z" to="zeta" />
- <mapping type="out" from="equis" to="x" />
- <mapping type="out" from="zeta" to="z" />
- </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="124" 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>
- <mapping type="in" from="x" to="equis" />
- <mapping type="in" from="z" to="zeta" />
- <mapping type="out" from="equis" to="x" />
- <mapping type="out" from="zeta" to="z" />
- </humanTask>
- <actionNode id="8" name="Action" x="601" 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="713" y="16" 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>
- <mapping type="in" from="x" to="equis" />
- <mapping type="in" from="z" to="zeta" />
- <mapping type="out" from="equis" to="x" />
- <mapping type="out" from="zeta" to="z" />
- </humanTask>
- <actionNode id="10" name="Action" x="845" y="16" 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
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,150 +0,0 @@
-<?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.persistence.session.MyEntity" />
- <import name="org.drools.persistence.session.MyVariableSerializable" />
- </imports>
- <variables>
- <variable name="x" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </variable>
- <variable name="y" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- <variable name="a" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </variable>
- <variable name="b" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
- </variable>
- <variable name="c" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" x="16" y="16" width="48" height="48" />
- <end id="3" name="End" x="669" y="16" 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" >
- <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" >
- <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
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategyProcessTypeChange.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,125 +0,0 @@
-<?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.persistence.session.MyEntity" />
- <import name="org.drools.persistence.session.MyVariableSerializable" />
- </imports>
- <variables>
- <variable name="x" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </variable>
- <variable name="y" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
- </variable>
- <variable name="a" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </variable>
- <variable name="b" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
- </variable>
- <variable name="c" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.lang.Object" />
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" x="16" y="16" width="48" height="48" />
- <end id="3" name="End" x="669" y="16" width="48" height="48" />
- <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);
-System.out.println("a = " + a);
-System.out.println("b = " + b);
-System.out.println("c = " + c);
-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("c", new MyEntity("This is a changed test Entity"));
-kcontext.setVariable("b", new MyVariableSerializable("This is a changed test SerializableObject"));</action>
- </actionNode>
- <humanTask id="9" 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="10" 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);
- </action>
- </actionNode>
- </nodes>
-
- <connections>
- <connection from="8" to="9" />
- <connection from="9" to="10" />
- <connection from="10" to="3" />
- <connection from="1" to="6" />
- <connection from="6" to="7" />
- <connection from="7" to="8" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablePersistenceStrategySubProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,203 +0,0 @@
-<?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.persistence.session.MyEntity" />
- <import name="org.drools.persistence.session.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.persistence.session.MyEntity" />
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- <variable name="v" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>Default</value>
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" x="16" y="16" width="48" height="48" />
- <end id="3" name="End" x="669" y="16" width="48" height="48" />
- <composite id="4" name="CompositeNode" x="187" y="33" width="326" height="327" >
- <variables>
- <variable name="y" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- <variable name="x" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value></value>
- </variable>
- <variable name="w" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>New default</value>
- </variable>
- </variables>
- <nodes>
- <actionNode id="1" name="Action" x="31" y="62" >
- <action type="expression" dialect="mvel" >kcontext.setVariable("x", "new String");
-kcontext.setVariable("y", new MyEntity("This is a new test Entity"));
-kcontext.setVariable("z", new MyVariableSerializable("This is a new test SerializableObject"));</action>
- </actionNode>
- <humanTask id="2" name="Human Task" x="122" y="61" >
- <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="3" name="Action" x="211" y="61" >
- <action type="expression" dialect="mvel" >System.out.println("v = " + v);
-System.out.println("w = " + w);
-System.out.println("x = " + x);
-System.out.println("y = " + y);
-System.out.println("z = " + z);</action>
- </actionNode>
- <composite id="7" name="CompositeNode" x="26" y="136" width="273" height="173" >
- <variables>
- <variable name="a" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>Newest Default 1</value>
- </variable>
- <variable name="z" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>Newest Default 2</value>
- </variable>
- </variables>
- <nodes>
- <actionNode id="1" name="Action" x="18" y="55" >
- <action type="expression" dialect="mvel" >System.out.println("a = " + a);
-System.out.println("v = " + v);
-System.out.println("w = " + w);
-System.out.println("x = " + x);
-System.out.println("y = " + y);
-System.out.println("z = " + z);</action>
- </actionNode>
- <humanTask id="2" name="Human Task" x="140" y="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="3" name="Action" x="163" y="112" >
- <action type="expression" dialect="mvel" >System.out.println("a = " + a);
-System.out.println("v = " + v);
-System.out.println("w = " + w);
-System.out.println("x = " + x);
-System.out.println("y = " + y);
-System.out.println("z = " + z);</action>
- </actionNode>
- </nodes>
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- </connections>
- <in-ports>
- <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
- </in-ports>
- <out-ports>
- <out-port type="DROOLS_DEFAULT" nodeId="3" nodeOutType="DROOLS_DEFAULT" />
- </out-ports>
- </composite>
- </nodes>
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- <connection from="3" to="7" />
- </connections>
- <in-ports>
- <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
- </in-ports>
- <out-ports>
- <out-port type="DROOLS_DEFAULT" nodeId="7" nodeOutType="DROOLS_DEFAULT" />
- </out-ports>
- </composite>
- <actionNode id="5" name="Action" x="547" y="50" width="80" height="48" >
- <action type="expression" dialect="mvel" >System.out.println("v = " + v);
-System.out.println("x = " + x);
-System.out.println("y = " + y);
-System.out.println("z = " + z);</action>
- </actionNode>
- <humanTask id="6" name="Human Task" >
- <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="7" name="Action" >
- <action type="expression" dialect="mvel" >System.out.println("v = " + v);
-System.out.println("x = " + x);
-System.out.println("y = " + y);
-System.out.println("z = " + z);</action>
- </actionNode>
- </nodes>
-
- <connections>
- <connection from="7" to="3" />
- <connection from="1" to="4" />
- <connection from="4" to="5" />
- <connection from="5" to="6" />
- <connection from="6" to="7" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablesProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablesProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/VariablesProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,73 +0,0 @@
-<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- <variables>
- <variable name="name" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- <value>xxx</value>
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" />
- <actionNode id="2" name="Action" >
- <action type="expression" dialect="java" >System.out.println("Executing for " + name);</action>
- </actionNode>
- <workItem id="3" name="WorkItem1" >
- <work name="MyWork" >
- </work>
- <mapping type="in" from="name" to="name" />
- </workItem>
- <actionNode id="4" name="Action" >
- <action type="expression" dialect="java" >System.out.println("Executing for " + name);</action>
- </actionNode>
- <composite id="5" name="CompositeNode" >
- <variables>
- <variable name="text" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- </variable>
- </variables>
- <nodes>
- <actionNode id="1" name="Action" >
- <action type="expression" dialect="mvel" >kcontext.setVariable("text", name);</action>
- </actionNode>
- <workItem id="2" name="Log" x="130" y="46" width="80" height="40" >
- <work name="MyWork" >
- <parameter name="Message" >
- <type name="org.drools.process.core.datatype.impl.type.StringDataType" />
- </parameter>
- </work>
- <mapping type="in" from="text" to="text" />
- </workItem>
- <actionNode id="3" name="Action" x="129" y="109" >
- <action type="expression" dialect="mvel" >System.out.println("Subprocess " + text);</action>
- </actionNode>
- </nodes>
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- </connections>
- <in-ports>
- <in-port type="DROOLS_DEFAULT" nodeId="1" nodeInType="DROOLS_DEFAULT" />
- </in-ports>
- <out-ports>
- <out-port type="DROOLS_DEFAULT" nodeId="3" nodeOutType="DROOLS_DEFAULT" />
- </out-ports>
- </composite>
- <end id="6" name="End" />
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="2" to="3" />
- <connection from="3" to="4" />
- <connection from="4" to="5" />
- <connection from="5" to="6" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/WorkItemsProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/WorkItemsProcess.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/WorkItemsProcess.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,38 +0,0 @@
-<?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="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
-
- <header>
- </header>
-
- <nodes>
- <actionNode id="2" name="Action" >
- <action type="expression" dialect="java" >System.out.println("Executed action");</action>
- </actionNode>
- <workItem id="4" name="WorkItem2" >
- <work name="MyWork" >
- </work>
- </workItem>
- <end id="6" name="End" />
- <start id="1" name="Start" />
- <workItem id="3" name="WorkItem1" >
- <work name="MyWork" >
- </work>
- </workItem>
- <workItem id="5" name="WorkItem3" >
- <work name="MyWork" >
- </work>
- </workItem>
- </nodes>
-
- <connections>
- <connection from="1" to="2" />
- <connection from="3" to="4" />
- <connection from="5" to="6" />
- <connection from="2" to="3" />
- <connection from="4" to="5" />
- </connections>
-
-</process>
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/jndi.properties
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/jndi.properties 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/jndi.properties 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1 +0,0 @@
-java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/log4j.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,22 +0,0 @@
-<?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="INFO"/>
- </logger>
-
- <!-- logger name="org.hibernate">
- <level value="INFO"/>
- </logger -->
- <root>
- <priority value="INFO"/>
- <appender-ref ref="CONSOLE"/>
- </root>
-</log4j:configuration>
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/testVariables.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/testVariables.rf 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/testVariables.rf 2010-09-17 13:54:59 UTC (rev 35178)
@@ -1,79 +0,0 @@
-<?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="flow" id="testVariables" package-name="org.drools.examples" >
-
- <header>
- <variables>
- <variable name="var1" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyEntity" />
- </variable>
- <variable name="var2" >
- <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="org.drools.persistence.session.MyVariableSerializable" />
- </variable>
- </variables>
- </header>
-
- <nodes>
- <start id="1" name="Start" x="147" y="32" width="80" height="40" />
-
- <workItem id="2" name="Log1" x="147" y="191" width="80" height="40" >
- <work name="Log" >
-
- </work>
- <mapping type="in" from="var1" to="var1" />
- <mapping type="in" from="var2" to="var2" />
- <mapping type="out" from="var1" to="var1" />
- <mapping type="out" from="var2" to="var2" />
- </workItem>
- <actionNode id="3" name="Action1" x="146" y="117" width="80" height="40" >
- <action type="expression" dialect="mvel" >
- System.out.println("Variable Value: "+kcontext.getVariable("var1"));
- System.out.println("Variable Value: "+kcontext.getVariable("var2"));
- </action>
- </actionNode>
- <actionNode id="4" name="Action2" x="147" y="268" width="80" height="40" >
- <action type="expression" dialect="mvel" >
- System.out.println("Variable Value: "+kcontext.getVariable("var1"));
- System.out.println("Variable Value: "+kcontext.getVariable("var2"));
- </action>
- </actionNode>
- <workItem id="5" name="Log2" x="146" y="345" width="80" height="40" >
- <work name="Log" >
-
- </work>
- <mapping type="in" from="var1" to="var1" />
- <mapping type="in" from="var2" to="var2" />
- <mapping type="out" from="var1" to="var1" />
- <mapping type="out" from="var2" to="var2" />
- </workItem>
- <actionNode id="6" name="Action3" x="144" y="422" width="80" height="40" >
- <action type="expression" dialect="mvel" >
- System.out.println("Variable Value: "+kcontext.getVariable("var1"));
- System.out.println("Variable Value: "+kcontext.getVariable("var2"));
- </action>
- </actionNode>
- <workItem id="7" name="Log3" x="146" y="345" width="80" height="40" >
- <work name="Log" >
-
- </work>
- <mapping type="in" from="var1" to="var1" />
- <mapping type="in" from="var2" to="var2" />
- <mapping type="out" from="var1" to="var1" />
- <mapping type="out" from="var2" to="var2" />
- </workItem>
- <end id="8" name="End" x="145" y="494" width="80" height="40" />
- </nodes>
-
- <connections>
- <connection from="3" to="2" />
- <connection from="1" to="3" />
- <connection from="2" to="4" />
- <connection from="4" to="5" />
- <connection from="5" to="6" />
- <connection from="6" to="7" />
- <connection from="7" to="8" />
- </connections>
-
-</process>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-bam/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-process/drools-bam/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -32,7 +32,7 @@
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
<scope>test</scope>
</dependency>
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -68,7 +68,7 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
<scope>test</scope>
</dependency>
<!-- External dependencies -->
Modified: labs/jbossrules/trunk/drools-process/drools-gwt-server-war/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-server-war/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-server-war/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -36,7 +36,7 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
</dependency>
<dependency>
<groupId>javassist</groupId>
Modified: labs/jbossrules/trunk/pom.xml
===================================================================
--- labs/jbossrules/trunk/pom.xml 2010-09-17 12:20:52 UTC (rev 35177)
+++ labs/jbossrules/trunk/pom.xml 2010-09-17 13:54:59 UTC (rev 35178)
@@ -272,6 +272,7 @@
<module>drools-ide-common</module>
<module>drools-jsr94</module>
<module>drools-persistence-jpa</module>
+ <module>drools-flow-persistence-jpa</module>
<module>drools-process</module>
<module>drools-repository</module>
<module>drools-server</module>
@@ -1033,6 +1034,11 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
+ <artifactId>drools-flow-persistence-jpa</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
<artifactId>drools-workitems</artifactId>
<version>${project.version}</version>
</dependency>
More information about the jboss-svn-commits
mailing list