[jboss-svn-commits] JBL Code SVN: r26400 - in labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools: marshalling/impl and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 6 13:16:05 EDT 2009


Author: salaboy21
Date: 2009-05-06 13:16:05 -0400 (Wed, 06 May 2009)
New Revision: 26400

Modified:
   labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
   labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
   labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
   labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/ProcessInstanceMarshaller.java
Log:
changes in drools core, some methods overloaded, and in the AbstractWorkingMemory move the addProcessInstance after the variables load.

Modified: labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2009-05-06 16:13:21 UTC (rev 26399)
+++ labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2009-05-06 17:16:05 UTC (rev 26400)
@@ -1629,7 +1629,7 @@
         ProcessInstance processInstance = (ProcessInstance) getProcessInstance( process );
         processInstance.setWorkingMemory( this );
         processInstance.setProcess( process );
-        processInstanceManager.addProcessInstance( processInstance );
+        
         // set variable default values
         // TODO: should be part of processInstanceImpl?
         VariableScope variableScope = (VariableScope) ((ContextContainer) process).getDefaultContext( VariableScope.VARIABLE_SCOPE );
@@ -1645,6 +1645,7 @@
                 throw new IllegalArgumentException( "This process does not support parameters!" );
             }
         }
+        processInstanceManager.addProcessInstance( processInstance );
         // start
         getRuleFlowEventSupport().fireBeforeRuleFlowProcessStarted( processInstance,
                                                                     this );

Modified: labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
===================================================================
--- labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2009-05-06 16:13:21 UTC (rev 26399)
+++ labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2009-05-06 17:16:05 UTC (rev 26400)
@@ -46,9 +46,13 @@
 		ProcessInstanceMarshaller {
 
 	// Output methods
+    public void writeProcessInstance(MarshallerWriteContext context,
+			ProcessInstance processInstance) throws IOException{
+        writeProcessInstance(context,processInstance, true);
+    }
 
 	public void writeProcessInstance(MarshallerWriteContext context,
-			ProcessInstance processInstance) throws IOException {
+			ProcessInstance processInstance,  boolean includeVariables) throws IOException {
 
 		WorkflowProcessInstanceImpl workFlow = (WorkflowProcessInstanceImpl) processInstance;
 		ObjectOutputStream stream = context.stream;
@@ -56,21 +60,22 @@
 		stream.writeUTF(workFlow.getProcessId());
 		stream.writeInt(workFlow.getState());
 		stream.writeLong(workFlow.getNodeInstanceCounter());
-		
-		VariableScopeInstance variableScopeInstance = (VariableScopeInstance) workFlow.getContextInstance( VariableScope.VARIABLE_SCOPE );
-        Map<String, Object> variables = variableScopeInstance.getVariables();
-        List<String> keys = new ArrayList<String>( variables.keySet() );
-        Collections.sort( keys,
-                          new Comparator<String>() {
-                              public int compare(String o1,
-                                                 String o2) {
-                                  return o1.compareTo( o2 );
-                              }
-                          } );
-        stream.writeInt( keys.size() );
-        for ( String key : keys ) {
-            stream.writeUTF( key );
-            stream.writeObject( variables.get( key ) );
+		if(includeVariables){
+            VariableScopeInstance variableScopeInstance = (VariableScopeInstance) workFlow.getContextInstance( VariableScope.VARIABLE_SCOPE );
+            Map<String, Object> variables = variableScopeInstance.getVariables();
+            List<String> keys = new ArrayList<String>( variables.keySet() );
+            Collections.sort( keys,
+                              new Comparator<String>() {
+                                  public int compare(String o1,
+                                                     String o2) {
+                                      return o1.compareTo( o2 );
+                                  }
+                              } );
+            stream.writeInt( keys.size() );
+            for ( String key : keys ) {
+                stream.writeUTF( key );
+                stream.writeObject( variables.get( key ) );
+            }
         }
 
         SwimlaneContextInstance swimlaneContextInstance = (SwimlaneContextInstance) workFlow.getContextInstance( SwimlaneContext.SWIMLANE_SCOPE );
@@ -101,6 +106,7 @@
         }
         stream.writeShort( PersisterEnums.END );
 	}
+    
 
 	public void writeNodeInstance(MarshallerWriteContext context,
 			NodeInstance nodeInstance) throws IOException {
@@ -212,8 +218,11 @@
 	}
 
 	// Input methods
+    public ProcessInstance readProcessInstance(MarshallerReaderContext context)	throws IOException {
+        return readProcessInstance(context,true);
+    }
 
-	public ProcessInstance readProcessInstance(MarshallerReaderContext context)	throws IOException {
+	public ProcessInstance readProcessInstance(MarshallerReaderContext context,boolean includeVariables) throws IOException {
 		ObjectInputStream stream = context.stream;
 		InternalRuleBase ruleBase = context.ruleBase;
 		InternalWorkingMemory wm = context.wm;
@@ -229,25 +238,26 @@
 		processInstance.setState(stream.readInt());
 		long nodeInstanceCounter = stream.readLong();
 		processInstance.setWorkingMemory(wm);
+        if(includeVariables){
+            int nbVariables = stream.readInt();
+            if (nbVariables > 0) {
+                Context variableScope = process
+                        .getDefaultContext(VariableScope.VARIABLE_SCOPE);
+                VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+                    processInstance.getContextInstance(variableScope);
+                for (int i = 0; i < nbVariables; i++) {
+                    String name = stream.readUTF();
+                    try {
+                        Object value = stream.readObject();
+                        variableScopeInstance.setVariable(name, value);
+                    } catch (ClassNotFoundException e) {
+                        throw new IllegalArgumentException(
+                            "Could not reload variable " + name);
+                    }
+                }
+            }
+        }
 
-		int nbVariables = stream.readInt();
-		if (nbVariables > 0) {
-			Context variableScope = process
-					.getDefaultContext(VariableScope.VARIABLE_SCOPE);
-			VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
-				processInstance.getContextInstance(variableScope);
-			for (int i = 0; i < nbVariables; i++) {
-				String name = stream.readUTF();
-				try {
-					Object value = stream.readObject();
-					variableScopeInstance.setVariable(name, value);
-				} catch (ClassNotFoundException e) {
-					throw new IllegalArgumentException(
-						"Could not reload variable " + name);
-				}
-			}
-		}
-
 		int nbSwimlanes = stream.readInt();
 		if (nbSwimlanes > 0) {
 			Context swimlaneContext = process.getDefaultContext(SwimlaneContext.SWIMLANE_SCOPE);

Modified: labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2009-05-06 16:13:21 UTC (rev 26399)
+++ labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2009-05-06 17:16:05 UTC (rev 26400)
@@ -792,12 +792,15 @@
         context.propagationContexts.put( propagationNumber,
                                          pc );
     }
+    public static void readProcessInstances(MarshallerReaderContext context) throws IOException {
+        readProcessInstances(context, true);
+    }
 
-    public static void readProcessInstances(MarshallerReaderContext context) throws IOException {
+    public static void readProcessInstances(MarshallerReaderContext context, boolean includeVariables) throws IOException {
         ObjectInputStream stream = context.stream;
         while ( stream.readShort() == PersisterEnums.PROCESS_INSTANCE ) {
         	String processType = stream.readUTF();
-        	ProcessMarshallerRegistry.INSTANCE.getMarshaller(processType).readProcessInstance(context);
+        	ProcessMarshallerRegistry.INSTANCE.getMarshaller(processType).readProcessInstance(context,includeVariables);
         }
     }
 

Modified: labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
===================================================================
--- labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java	2009-05-06 16:13:21 UTC (rev 26399)
+++ labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java	2009-05-06 17:16:05 UTC (rev 26400)
@@ -732,8 +732,10 @@
 
         stream.writeUTF( pc.getEntryPoint().getEntryPointId() );
     }
-
-    public static void writeProcessInstances(MarshallerWriteContext context) throws IOException {
+     public static void writeProcessInstances(MarshallerWriteContext context) throws IOException {
+        writeProcessInstances(context,true);
+     }
+    public static void writeProcessInstances(MarshallerWriteContext context, boolean includeVariables) throws IOException {
         ObjectOutputStream stream = context.stream;
         List<org.drools.runtime.process.ProcessInstance> processInstances = new ArrayList<org.drools.runtime.process.ProcessInstance>( context.wm.getProcessInstances() );
         Collections.sort( processInstances,
@@ -748,7 +750,7 @@
             String processType = ((ProcessInstanceImpl) processInstance).getProcess().getType();
             stream.writeUTF(processType);
             ProcessMarshallerRegistry.INSTANCE.getMarshaller(processType)
-            	.writeProcessInstance(context, processInstance);
+            	.writeProcessInstance(context, processInstance,includeVariables);
         }
         stream.writeShort( PersisterEnums.END );
     }

Modified: labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/ProcessInstanceMarshaller.java
===================================================================
--- labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/ProcessInstanceMarshaller.java	2009-05-06 16:13:21 UTC (rev 26399)
+++ labs/jbossrules/branches/salaboy_RelationalVariablePersistence/drools-core/src/main/java/org/drools/marshalling/impl/ProcessInstanceMarshaller.java	2009-05-06 17:16:05 UTC (rev 26400)
@@ -26,12 +26,16 @@
 
 	public void writeProcessInstance(MarshallerWriteContext context,
 			ProcessInstance processInstance) throws IOException;
+    public void writeProcessInstance(MarshallerWriteContext context,
+			ProcessInstance processInstance, boolean includeVariables) throws IOException;
 
 	public void writeNodeInstance(MarshallerWriteContext context,
 			NodeInstance nodeInstance) throws IOException;
 
 	public ProcessInstance readProcessInstance(MarshallerReaderContext context)
 			throws IOException;
+    public ProcessInstance readProcessInstance(MarshallerReaderContext context,
+            boolean includeVariables) throws IOException;
 
 	public NodeInstance readNodeInstance(MarshallerReaderContext context,
 			NodeInstanceContainer nodeInstanceContainer,




More information about the jboss-svn-commits mailing list