[jboss-svn-commits] JBL Code SVN: r19905 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: process/command and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 8 08:06:33 EDT 2008


Author: KrisVerlaenen
Date: 2008-05-08 08:06:33 -0400 (Thu, 08 May 2008)
New Revision: 19905

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CommandService.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/AsynchronousCommandService.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneContextInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionHandlerInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionScopeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ContextInstanceFactoryRegistry.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/WorkItemImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceFactoryRegistry.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
Log:
JBRULES-1549: Workflow Context
 - swimlanes and exception scope as context
JBRULES-1550: Workflow timer
 - timer node
JBRULES-1465: RuleFlow work items should allow plugging in custom editors
 - Work items palette customizable by user

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,9 @@
+package org.drools.process.command;
+
+import org.drools.WorkingMemory;
+
+public interface Command {
+	
+	Object execute(WorkingMemory workingMemory);
+	
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CommandService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CommandService.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,7 @@
+package org.drools.process.command;
+
+public interface CommandService {
+	
+	Object execute(Command command);
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,51 @@
+package org.drools.process.command;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.WorkingMemory;
+import org.drools.process.instance.ProcessInstance;
+
+public class StartProcessCommand implements Command {
+	
+	private String processId;
+	private Map<String, Object> parameters = new HashMap<String, Object>();
+	private List<Object> data = null;
+	
+	public String getProcessId() {
+		return processId;
+	}
+	
+	public void setProcessId(String processId) {
+		this.processId = processId;
+	}
+	
+	public Map<String, Object> getParameters() {
+		return parameters;
+	}
+	
+	public void setParameters(Map<String, Object> parameters) {
+		this.parameters = parameters;
+	}
+	
+	public List<Object> getData() {
+		return data;
+	}
+	
+	public void setData(List<Object> data) {
+		this.data = data;
+	}
+
+	public Object execute(WorkingMemory workingMemory) {
+		if (data != null) {
+			for (Object o: data) {
+				workingMemory.insert(o);
+			}
+		}
+		ProcessInstance processInstance = workingMemory.startProcess(processId, parameters);
+		workingMemory.fireAllRules();
+		return processInstance;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/AsynchronousCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/AsynchronousCommandService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/AsynchronousCommandService.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,24 @@
+package org.drools.process.command.impl;
+
+import org.drools.WorkingMemory;
+import org.drools.process.command.Command;
+import org.drools.process.command.CommandService;
+
+public class AsynchronousCommandService implements CommandService {
+
+	private WorkingMemory workingMemory;
+	
+	public AsynchronousCommandService(WorkingMemory workingMemory) {
+		this.workingMemory = workingMemory;
+	}
+	
+	public Object execute(final Command command) {
+		new Thread(new Runnable() {
+			public void run() {
+				command.execute(workingMemory);	
+			}
+		}).start();
+		return null;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,19 @@
+package org.drools.process.command.impl;
+
+import org.drools.WorkingMemory;
+import org.drools.process.command.Command;
+import org.drools.process.command.CommandService;
+
+public class DefaultCommandService implements CommandService {
+
+	private WorkingMemory workingMemory;
+	
+	public DefaultCommandService(WorkingMemory workingMemory) {
+		this.workingMemory = workingMemory;
+	}
+	
+	public Object execute(Command command) {
+		return command.execute(workingMemory);
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,28 @@
+package org.drools.process.core.context.swimlane;
+
+import java.io.Serializable;
+
+public class Swimlane implements Serializable {
+
+	private static final long serialVersionUID = 400L;
+	
+	private String name;
+	private String actorId;
+	
+	public Swimlane(String name) {
+		this.name = name;
+	}
+	
+	public String getName() {
+		return this.name;
+	}
+	
+	public void setActorId(String actorId) {
+		this.actorId = actorId;
+	}
+	
+	public String getActorId() {
+		return this.actorId;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,41 @@
+package org.drools.process.core.context.swimlane;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.process.core.Context;
+import org.drools.process.core.context.AbstractContext;
+
+public class SwimlaneContext extends AbstractContext {
+	
+    private static final long serialVersionUID = 400L;
+
+    public static final String SWIMLANE_SCOPE = "SwimlaneScope";
+    
+	private Map<String, Swimlane> swimlanes = new HashMap();
+
+	public String getType() {
+		return SWIMLANE_SCOPE;
+	}
+
+    public void addSwimlane(Swimlane swimlane) {
+        this.swimlanes.put(swimlane.getName(), swimlane);
+    }
+    
+    public Swimlane getSwimlane(String name) {
+        return this.swimlanes.get(name);
+    }
+
+    public void removeSwimlane(String name) {
+        this.swimlanes.remove(name);
+    }
+
+	public Context resolveContext(Object param) {
+		if (param instanceof String) {
+            return getSwimlane((String) param) == null ? null : this;
+        }
+        throw new IllegalArgumentException(
+            "ExceptionScopes can only resolve exception names: " + param);
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionHandlerInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionHandlerInstance.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionHandlerInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -1,7 +1,11 @@
 package org.drools.process.instance.context.exception;
 
+import org.drools.process.core.context.exception.ExceptionHandler;
+
 public interface ExceptionHandlerInstance {
-
+	
     void handleException(String exception, Object param);
     
+    void setExceptionHandler(ExceptionHandler exceptionHandler);
+    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionScopeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionScopeInstance.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exception/ExceptionScopeInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -16,20 +16,15 @@
         return (ExceptionScope) getContext();
     }
     
-    protected abstract ExceptionHandlerInstance getExceptionHandlerInstance(ExceptionHandler exceptionHandler);
-
     public void handleException(String exception, Object params) {
         ExceptionHandler handler = getExceptionScope().getExceptionHandler(exception);
         if (handler == null) {
             throw new IllegalArgumentException(
                 "Could not find ExceptionHandler for " + exception);
         }
-        ExceptionHandlerInstance handlerInstance = getExceptionHandlerInstance(handler);
-        if (handlerInstance == null) {
-            throw new IllegalArgumentException(
-                "Could not find ExceptionHandler instance for " + exception);
-        }
-        handlerInstance.handleException(exception, params);
+        handleException(handler, exception, params);
     }
+    
+    public abstract void handleException(ExceptionHandler handler, String exception, Object params);
 
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneContextInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneContextInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneContextInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,18 @@
+package org.drools.process.instance.context.swimlane;
+
+import org.drools.process.core.context.swimlane.SwimlaneContext;
+import org.drools.process.instance.context.AbstractContextInstance;
+
+public abstract class SwimlaneContextInstance extends AbstractContextInstance {
+
+    private static final long serialVersionUID = 400L;
+
+    public String getContextType() {
+        return SwimlaneContext.SWIMLANE_SCOPE;
+    }
+    
+    public SwimlaneContext getSwimlaneContext() {
+        return (SwimlaneContext) getContext();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/swimlane/SwimlaneInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,15 @@
+package org.drools.process.instance.context.swimlane;
+
+public class SwimlaneInstance {
+
+	private String actorId;
+
+	public void setActorId(String actorId) {
+		this.actorId = actorId;
+	}
+	
+	public String getActorId() {
+		return this.actorId;
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ContextInstanceFactoryRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ContextInstanceFactoryRegistry.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ContextInstanceFactoryRegistry.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -4,7 +4,11 @@
 import java.util.Map;
 
 import org.drools.process.core.Context;
+import org.drools.process.core.context.exception.ExceptionScope;
+import org.drools.process.core.context.swimlane.SwimlaneContext;
 import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.process.instance.context.swimlane.SwimlaneContextInstance;
 import org.drools.process.instance.context.variable.VariableScopeInstance;
 import org.drools.process.instance.impl.factory.ReuseContextInstanceFactory;
 
@@ -21,6 +25,10 @@
         // hard wired contexts:
         register(VariableScope.class, new ReuseContextInstanceFactory(
                  VariableScopeInstance.class));
+        register(ExceptionScope.class, new ReuseContextInstanceFactory(
+                 ExceptionScopeInstance.class));
+        register(SwimlaneContext.class, new ReuseContextInstanceFactory(
+                 SwimlaneContextInstance.class));
     }
 
     public void register(Class<? extends Context> cls,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/WorkItemImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/WorkItemImpl.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/WorkItemImpl.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -47,10 +47,7 @@
     }
     
     public void setParameters(Map<String, Object> parameters) {
-        for (Iterator<Map.Entry<String, Object>> iterator = parameters.entrySet().iterator(); iterator.hasNext(); ) {
-            Map.Entry<String, Object> entry = iterator.next();
-            setParameter(entry.getKey(), entry.getValue());
-        }
+    	this.parameters = parameters;
     }
     
     public void setParameter(String name, Object value) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -37,6 +37,13 @@
     }
 
     public void addNode(Node node) {
+    	long id = 0;
+        for (Node n: nodeContainer.getNodes()) {
+            if (n.getId() > id) {
+                id = n.getId();
+            }
+        }
+        node.setId(++id);
         nodeContainer.addNode(node);
         node.setNodeContainer(this);
     }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,41 @@
+package org.drools.workflow.core.node;
+
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/**
+ * Default implementation of a fault node.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class FaultNode extends SequenceNode {
+
+	private static final long serialVersionUID = 400L;
+	
+	private String faultName;
+	private String faultData;
+
+    public String getFaultName() {
+		return faultName;
+	}
+
+	public void setFaultName(String faultName) {
+		this.faultName = faultName;
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceFactoryRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceFactoryRegistry.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceFactoryRegistry.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -6,6 +6,7 @@
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.node.ActionNode;
 import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.FaultNode;
 import org.drools.workflow.core.node.Join;
 import org.drools.workflow.core.node.MilestoneNode;
 import org.drools.workflow.core.node.RuleSetNode;
@@ -18,6 +19,7 @@
 import org.drools.workflow.instance.impl.factory.ReuseNodeFactory;
 import org.drools.workflow.instance.node.ActionNodeInstance;
 import org.drools.workflow.instance.node.EndNodeInstance;
+import org.drools.workflow.instance.node.FaultNodeInstance;
 import org.drools.workflow.instance.node.JoinInstance;
 import org.drools.workflow.instance.node.MilestoneNodeInstance;
 import org.drools.workflow.instance.node.RuleSetNodeInstance;
@@ -56,6 +58,8 @@
                   new CreateNewNodeFactory( WorkItemNodeInstance.class ) );
         register( TimerNode.class,
                   new CreateNewNodeFactory( TimerNodeInstance.class ) );
+        register( FaultNode.class,
+                  new CreateNewNodeFactory( FaultNodeInstance.class ) );
     }
 
     public void register(Class< ? extends Node> cls,

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -0,0 +1,55 @@
+package org.drools.workflow.instance.node;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.process.core.context.exception.ExceptionScope;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.FaultNode;
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.impl.NodeInstanceImpl;
+
+/**
+ * Runtime counterpart of a fault node.
+ * 
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class FaultNodeInstance extends NodeInstanceImpl {
+
+    private static final long serialVersionUID = 400L;
+    
+    protected FaultNode getFaultNode() {
+        return (FaultNode) getNode();
+    }
+    
+    public void internalTrigger(final NodeInstance from, String type) {
+        if (!Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
+            throw new IllegalArgumentException(
+                "A FaultNode only accepts default incoming connections!");
+        }
+        FaultNode faultNode = getFaultNode();
+        ExceptionScopeInstance exceptionScopeInstance = (ExceptionScopeInstance)
+            resolveContextInstance(ExceptionScope.EXCEPTION_SCOPE, faultNode.getFaultName());
+        if (exceptionScopeInstance != null) {
+            exceptionScopeInstance.handleException(faultNode.getFaultName(), null);
+        } else {
+        	getProcessInstance().setState(ProcessInstance.STATE_ABORTED);
+        }
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2008-05-08 12:06:21 UTC (rev 19904)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2008-05-08 12:06:33 UTC (rev 19905)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -58,7 +59,7 @@
 		workItem = new WorkItemImpl();
 		workItem.setName(work.getName());
 		workItem.setProcessInstanceId(getProcessInstance().getId());
-		workItem.setParameters(work.getParameters());
+		workItem.setParameters(new HashMap<String, Object>(work.getParameters()));
 		for (Iterator<Map.Entry<String, String>> iterator = workItemNode.getInMappings().entrySet().iterator(); iterator.hasNext(); ) {
             Map.Entry<String, String> mapping = iterator.next();
             VariableScopeInstance variableScopeInstance = (VariableScopeInstance)




More information about the jboss-svn-commits mailing list