[jboss-svn-commits] JBL Code SVN: r24904 - labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jan 23 14:48:12 EST 2009
Author: salaboy21
Date: 2009-01-23 14:48:12 -0500 (Fri, 23 Jan 2009)
New Revision: 24904
Modified:
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
Log:
adding the variables to the ProcessInstanceInfo
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2009-01-23 19:46:52 UTC (rev 24903)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2009-01-23 19:48:12 UTC (rev 24904)
@@ -3,16 +3,25 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Transient;
@@ -20,6 +29,8 @@
import org.drools.marshalling.MarshallerReaderContext;
import org.drools.marshalling.MarshallerWriteContext;
import org.drools.marshalling.OutputMarshaller;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
import org.drools.runtime.process.ProcessInstance;
import org.hibernate.annotations.CollectionOfElements;
@@ -39,7 +50,12 @@
@CollectionOfElements
private Set<String> eventTypes = new HashSet<String>();
private @Transient ProcessInstance processInstance;
-
+
+ @OneToMany(cascade=CascadeType.ALL)
+ @JoinColumn(name="process_instance")
+ private List<PersistedVariable> variables = new ArrayList<PersistedVariable>();
+
+
ProcessInstanceInfo() {
}
@@ -47,6 +63,25 @@
this.processInstance = processInstance;
this.processId = processInstance.getProcessId();
startDate = new Date();
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance) ((RuleFlowProcessInstance)processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE );
+ Map<String, Object> processVariables = variableScopeInstance.getVariables();
+
+ List<String> keys = new ArrayList<String>( processVariables.keySet() );
+ Collections.sort( keys,
+ new Comparator<String>() {
+ public int compare(String o1,
+ String o2) {
+ return o1.compareTo( o2 );
+ }
+ } );
+ VariablePersistenceStrategy persistenceStrategy = VariablePersistenceStrategyFactory.getVariablePersistenceStrategyFactory();
+ clearVariables();
+ for ( String key : keys ) {
+ PersistedVariable variable = persistenceStrategy.persistVariable(key, processVariables.get( key ));
+
+ addVariables(variable);
+ }
+
}
public long getId() {
@@ -92,18 +127,18 @@
}
return processInstance;
}
-
+
@PreUpdate
public void update() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
MarshallerWriteContext context = new MarshallerWriteContext(baos, null, null, null, null);
- OutputMarshaller.writeProcessInstance(context, (RuleFlowProcessInstance) processInstance);
+ OutputMarshaller.writeProcessInstance(context, (RuleFlowProcessInstance) processInstance, false);
context.close();
} catch (IOException e) {
throw new IllegalArgumentException(
"IOException while storing process instance " + processInstance.getId() + ": " + e.getMessage());
- }
+ }
byte[] newByteArray = baos.toByteArray();
if (!Arrays.equals(newByteArray, processInstanceByteArray)) {
this.state = processInstance.getState();
@@ -115,5 +150,27 @@
}
}
}
+
+ /**
+ * @return the variables
+ */
+ public List<PersistedVariable> getVariables() {
+ return variables;
+ }
+
+ /**
+ * @param variables the variables to set
+ */
+ public void setVariables(List<PersistedVariable> variables) {
+ this.variables = variables;
+ }
+
+ public void addVariables(PersistedVariable variable){
+ this.getVariables().add(variable);
+ }
+ public void clearVariables(){
+ this.getVariables().clear();
+ }
+
}
More information about the jboss-svn-commits
mailing list