[jbpm-commits] JBoss JBPM SVN: r5741 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 5 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Oct 14 06:33:09 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-10-14 06:33:08 -0400 (Wed, 14 Oct 2009)
New Revision: 5741

Added:
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughBinding.java
Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/jpdl/src/main/resources/jbpm.jpdl.bindings.xml
   jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/test/update/ProcessUpdateTest.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
Log:
JBPM-2578 adding ability to update a deployment resource for tweaking process behaviour for testing purposes

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/RepositoryService.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -91,7 +91,4 @@
   /** the coordinates for the activity on 
    * {@link ProcessDefinition#getImageResourceName() the process image}. */
   ActivityCoordinates getActivityCoordinates(String processDefinitionId, String activityName);
-
-  /** update an existing deployment resource */
-  void updateDeploymentResource(String deploymentId, String string, InputStream inputStream);
 }

Added: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignActivity.java	                        (rev 0)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignActivity.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.jpdl.internal.activity;
+
+import org.jbpm.api.model.OpenExecution;
+import org.jbpm.pvm.internal.script.ScriptManager;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class AssignActivity extends JpdlAutomaticActivity {
+
+  private static final long serialVersionUID = 1L;
+
+  protected String expression;
+  protected String language;
+  protected String variableName;
+  protected Descriptor valueDescriptor;
+
+  void perform(OpenExecution execution) throws Exception {
+    Object value = null;
+    
+    if (expression!=null) {
+      ScriptManager scriptManager = ScriptManager.getScriptManager();
+      value = scriptManager.evaluateExpression(expression, language);
+      
+    } else if (valueDescriptor!=null) {
+      value = WireContext.create(valueDescriptor);
+    }
+    
+    execution.setVariable(variableName, value);
+  }
+
+  public void setExpression(String expression) {
+    this.expression = expression;
+  }
+  public void setLanguage(String language) {
+    this.language = language;
+  }
+  public void setVariableName(String variableName) {
+    this.variableName = variableName;
+  }
+  public void setValueDescriptor(Descriptor valueDescriptor) {
+    this.valueDescriptor = valueDescriptor;
+  }
+}


Property changes on: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignActivity.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignBinding.java	                        (rev 0)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignBinding.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.jpdl.internal.activity;
+
+import java.util.List;
+import java.util.Set;
+
+import org.jbpm.jpdl.internal.xml.JpdlParser;
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.xml.WireParser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class AssignBinding extends JpdlBinding {
+
+  public AssignBinding() {
+    super("assign");
+  }
+
+  public Object parseJpdl(Element element, Parse parse, JpdlParser parser) {
+    AssignActivity assignActivity = new AssignActivity();
+
+    String variableName = XmlUtil.attribute(element, "var", true, parse);
+    assignActivity.setVariableName(variableName);
+
+    String expression = XmlUtil.attribute(element, "expr");
+    if (expression!=null) {
+      assignActivity.setExpression(expression);
+      assignActivity.setLanguage(XmlUtil.attribute(element, "lang"));
+
+    } else {
+      
+      Set<String> descriptorTagNames = JpdlParser.wireParser.getBindings().getTagNames(WireParser.CATEGORY_DESCRIPTOR);
+      Descriptor valueDescriptor = null;
+      List<Element> assignContentElements = XmlUtil.elements(element);
+      
+      for (int i=0; ((i<assignContentElements.size()) && (valueDescriptor==null)); i++) {
+        Element assignContentElement = assignContentElements.get(i);
+        String assignContentElementTagName = XmlUtil.getTagLocalName(assignContentElement);
+        if (descriptorTagNames.contains(assignContentElementTagName)) {
+          valueDescriptor = parser.parseDescriptor(element, parse);
+        }
+      }
+      
+      assignActivity.setValueDescriptor(valueDescriptor);
+    }
+    
+    return assignActivity;
+  }
+}


Property changes on: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/AssignBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -32,7 +32,6 @@
 import org.jbpm.pvm.internal.model.TransitionImpl;
 import org.jbpm.pvm.internal.util.TagBinding;
 import org.jbpm.pvm.internal.util.XmlUtil;
-import org.jbpm.pvm.internal.wire.xml.WireParser;
 import org.jbpm.pvm.internal.xml.Parse;
 import org.jbpm.pvm.internal.xml.Parser;
 import org.w3c.dom.Element;
@@ -43,8 +42,6 @@
  */
 public abstract class JpdlBinding extends TagBinding {
   
-  protected static final WireParser wireParser = JpdlParser.wireParser;
-
   public JpdlBinding(String tagName) {
     super(tagName, null, null);
   }

Added: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughActivity.java	                        (rev 0)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughActivity.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.jpdl.internal.activity;
+
+import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.api.activity.ActivityExecution;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class PassthroughActivity implements ActivityBehaviour {
+
+  private static final long serialVersionUID = 1L;
+
+  public void execute(ActivityExecution execution) throws Exception {
+  }
+}


Property changes on: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughActivity.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughBinding.java	                        (rev 0)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughBinding.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.jpdl.internal.activity;
+
+import org.jbpm.jpdl.internal.xml.JpdlParser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class PassthroughBinding extends JpdlBinding {
+
+  public PassthroughBinding() {
+    super("passthrough");
+  }
+
+  public Object parseJpdl(Element element, Parse parse, JpdlParser parser) {
+    return new PassthroughActivity();
+  }
+
+}


Property changes on: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/PassthroughBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -104,7 +104,7 @@
       processElement.appendChild(clonedDescriptionElement);
     }
     
-    updateActivities(processDocument, processElement, processUpdateDescriptionElement);
+    updateActivities(processDocument, processElement, processUpdateElement);
     
     try {
       Transformer transformer = TransformerFactory.newInstance().newTransformer();
@@ -130,61 +130,71 @@
     Map<String, Element> updateActivityMap = getActivityMap(updateContainerElement, activityNames);
     
     for (String activityName: updateActivityMap.keySet()) {
+      Element updateActivity = updateActivityMap.get(activityName);
       Element processActivity = processActivityMap.get(activityName);
-      Element updateActivity = updateActivityMap.get(activityName);
-      String updateTagName = XmlUtil.getTagLocalName(updateActivity);
-
-      activityContainerElement.removeChild(processActivity);
-      Element mergedActivityElement = processDocument.createElement(updateTagName);
       
-      mergeAttributes(mergedActivityElement, processActivity.getAttributes());
-      mergeAttributes(mergedActivityElement, updateActivity.getAttributes());
+      if (processActivity==null) {
+        throw new JbpmException("unmatching update activity "+activityName);
+      }
       
-      Map<String, List<Element>> processActivityContents = getElementsByTagName(processActivity);
-      Map<String, List<Element>> updateActivityContents = getElementsByTagName(updateActivity);
+      Node clonedUpdateActivity = updateActivity.cloneNode(true);
+      processDocument.adoptNode(clonedUpdateActivity);
+      activityContainerElement.insertBefore(clonedUpdateActivity, processActivity);
+      activityContainerElement.removeChild(processActivity);
       
-      Set<String> allTagNames = new HashSet<String>(processActivityContents.keySet());
-      allTagNames.addAll(updateActivityContents.keySet());
-      
-      for (String tagName: allTagNames) {
-        List<Element> contentElements = processActivityContents.get(tagName);
-        if (contentElements==null) {
-          contentElements = new ArrayList<Element>();
-        }
-        List<Element> updateElements = updateActivityContents.get(tagName);
-        for (int i=0; i<contentElements.size(); i++) {
-          Element contentElement = contentElements.get(i);
-          Element updateElement = (updateElements!=null && updateElements.size()>i ? updateElements.get(i) : null);
-          if (updateElement!=null) {
-            mergeAttributes(contentElement, updateElement.getAttributes());
-          }
-        }
-      }
+//      String updateTagName = XmlUtil.getTagLocalName(updateActivity);
+//
+//      activityContainerElement.removeChild(processActivity);
+//      Element mergedActivityElement = processDocument.createElement(updateTagName);
+//      
+//      mergeAttributes(mergedActivityElement, processActivity.getAttributes());
+//      mergeAttributes(mergedActivityElement, updateActivity.getAttributes());
+//      
+//      Map<String, List<Element>> processActivityContents = getElementsByTagName(processActivity);
+//      Map<String, List<Element>> updateActivityContents = getElementsByTagName(updateActivity);
+//      
+//      Set<String> allTagNames = new HashSet<String>(processActivityContents.keySet());
+//      allTagNames.addAll(updateActivityContents.keySet());
+//      
+//      for (String tagName: allTagNames) {
+//        List<Element> contentElements = processActivityContents.get(tagName);
+//        if (contentElements==null) {
+//          contentElements = new ArrayList<Element>();
+//        }
+//        List<Element> updateElements = updateActivityContents.get(tagName);
+//        for (int i=0; i<contentElements.size(); i++) {
+//          Element contentElement = contentElements.get(i);
+//          Element updateElement = (updateElements!=null && updateElements.size()>i ? updateElements.get(i) : null);
+//          if (updateElement!=null) {
+//            mergeAttributes(contentElement, updateElement.getAttributes());
+//          }
+//        }
+//      }
     }
   }
 
-  public Map<String, List<Element>> getElementsByTagName(Element element) {
-    Map<String, List<Element>> elementsByTagName = new HashMap<String, List<Element>>();
-    for (Element contentElement: XmlUtil.elements(element)) {
-      String tagName = XmlUtil.getTagLocalName(contentElement);
-      List<Element> tagElements = elementsByTagName.get(tagName);
-      if (tagElements==null) {
-        tagElements = new ArrayList<Element>();
-        elementsByTagName.put(tagName, tagElements);
-      }
-      tagElements.add(contentElement);
-    }
-    return elementsByTagName;
-  }
+//  public Map<String, List<Element>> getElementsByTagName(Element element) {
+//    Map<String, List<Element>> elementsByTagName = new HashMap<String, List<Element>>();
+//    for (Element contentElement: XmlUtil.elements(element)) {
+//      String tagName = XmlUtil.getTagLocalName(contentElement);
+//      List<Element> tagElements = elementsByTagName.get(tagName);
+//      if (tagElements==null) {
+//        tagElements = new ArrayList<Element>();
+//        elementsByTagName.put(tagName, tagElements);
+//      }
+//      tagElements.add(contentElement);
+//    }
+//    return elementsByTagName;
+//  }
 
-  private void mergeAttributes(Element element, NamedNodeMap attributes) {
-    for (int i=0; i<attributes.getLength(); i++) {
-      Node attribute = attributes.item(i);
-      String attributeName = attribute.getNodeName();
-      String attributeValue = attribute.getNodeValue();
-      element.setAttribute(attributeName, attributeValue);
-    }
-  }
+//  private void mergeAttributes(Element element, NamedNodeMap attributes) {
+//    for (int i=0; i<attributes.getLength(); i++) {
+//      Node attribute = attributes.item(i);
+//      String attributeName = attribute.getNodeName();
+//      String attributeValue = attribute.getNodeValue();
+//      element.setAttribute(attributeName, attributeValue);
+//    }
+//  }
 
   protected Map<String, Element> getActivityMap(Element containerElement, Set<String> activityNames) {
     Map<String, Element> activityMap = new HashMap<String, Element>();

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -588,39 +588,6 @@
     return taskDefinition;
   }
 
-  public ObjectDescriptor parseObjectDescriptor(Element element, Parse parse) {
-    ObjectDescriptor objectDescriptor = new ObjectDescriptor();
-  
-    String className = XmlUtil.attribute(element, "class");
-    if (className!=null) {
-      objectDescriptor.setClassName(className);
-  
-      // read the operations elements
-      List<Operation> operations = null;
-      List<Element> elements = XmlUtil.elements(element);
-      
-      Set<String> operationTagNames = wireParser.getBindings().getTagNames(WireParser.CATEGORY_OPERATION);
-      for (Element childElement: elements) {
-        if (operationTagNames.contains(childElement.getTagName())) {
-          Operation operation = (Operation) wireParser.parseElement(childElement, parse, WireParser.CATEGORY_OPERATION);
-          if (operations==null) {
-            operations = new ArrayList<Operation>();
-          }
-          operations.add(operation);
-        }
-      }
-      objectDescriptor.setOperations(operations);
-  
-      // autowiring
-      Boolean isAutoWireEnabled = XmlUtil.attributeBoolean(element, "auto-wire", false, parse);
-      if (isAutoWireEnabled!=null) {
-        objectDescriptor.setAutoWireEnabled(isAutoWireEnabled.booleanValue());
-      }
-    }
-    return objectDescriptor;
-  }
-  
-
   public List<VariableDefinitionImpl> parseVariableDefinitions(Element element, Parse parse, boolean initRequired) {
     List<VariableDefinitionImpl> variableDefinitions = new ArrayList<VariableDefinitionImpl>();
     
@@ -754,7 +721,7 @@
   public UserCodeReference parseUserCodeReference(Element element, Parse parse) {
     UserCodeReference userCodeReference = new UserCodeReference();
 
-    ObjectDescriptor objectDescriptor = (ObjectDescriptor) objectBinding.parse(element, parse, wireParser);
+    ObjectDescriptor objectDescriptor = parseObjectDescriptor(element, parse);
     userCodeReference.setDescriptor(objectDescriptor);
     
     if (objectDescriptor.getExpr()!=null) {
@@ -769,7 +736,15 @@
 
     return userCodeReference;
   }
-  
+
+  public ObjectDescriptor parseObjectDescriptor(Element element, Parse parse) {
+    return (ObjectDescriptor) objectBinding.parse(element, parse, wireParser);
+  }
+
+  public Descriptor parseDescriptor(Element element, Parse parse) {
+    return (Descriptor) wireParser.parseElement(element, parse);
+  }
+
   public Set<String> getActivityTagNames() {
     return getBindings().getTagNames(CATEGORY_ACTIVITY);
   }

Modified: jbpm4/trunk/modules/jpdl/src/main/resources/jbpm.jpdl.bindings.xml
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/resources/jbpm.jpdl.bindings.xml	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/jpdl/src/main/resources/jbpm.jpdl.bindings.xml	2009-10-14 10:33:08 UTC (rev 5741)
@@ -17,6 +17,8 @@
   <activity binding="org.jbpm.jpdl.internal.activity.MailBinding" />
   <activity binding="org.jbpm.jpdl.internal.activity.GroupBinding" />
   <activity binding="org.jbpm.jpdl.internal.activity.CustomBinding" />
+  <activity binding="org.jbpm.jpdl.internal.activity.AssignBinding" />
+  <activity binding="org.jbpm.jpdl.internal.activity.PassthroughBinding" />
 
   <eventlistener binding="org.jbpm.jpdl.internal.activity.EventListenerBinding" />
   <eventlistener binding="org.jbpm.jpdl.internal.activity.JavaBinding" />
@@ -24,5 +26,6 @@
   <eventlistener binding="org.jbpm.jpdl.internal.activity.SqlBinding" />
   <eventlistener binding="org.jbpm.jpdl.internal.activity.ScriptBinding" />
   <eventlistener binding="org.jbpm.jpdl.internal.activity.MailBinding" />
+  <eventlistener binding="org.jbpm.jpdl.internal.activity.AssignBinding" />
 
 </bindings>

Modified: jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/test/update/ProcessUpdateTest.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/test/update/ProcessUpdateTest.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/test/update/ProcessUpdateTest.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -25,6 +25,7 @@
 import java.io.InputStream;
 
 import org.jbpm.api.ProcessInstance;
+import org.jbpm.pvm.internal.repository.RepositoryServiceImpl;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.xml.Parser;
 import org.jbpm.test.JbpmTestCase;
@@ -92,18 +93,21 @@
     updateJpdlXmlString( 
       deploymentId, 
       "<process-update>" +
-      "  <java name='getDataFromDb' expr='#{541}' />" +
+      "  <assign name='getDataFromDb' expr='#{541}' var='nbrOfOrders'>" +
+      "    <transition to='wait' />" +
+      "  </assign>" +
       "</process-update>"
     );
 
     ProcessInstance processInstance = executionService.startProcessInstanceByKey("ReplaceActivity");
     processInstance.isActive("wait");
     
-    assertEquals(541, executionService.getVariable(processInstance.getId(), "nbrOfOrders"));
+    assertEquals(541L, executionService.getVariable(processInstance.getId(), "nbrOfOrders"));
   }
 
   public void updateJpdlXmlString(String deploymentId, String xmlString) {
     InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes());
-    repositoryService.updateDeploymentResource(deploymentId, "xmlstring.jpdl.xml", inputStream);
+    RepositoryServiceImpl repositoryServiceImpl = (RepositoryServiceImpl) repositoryService;
+    repositoryServiceImpl.updateDeploymentResource(deploymentId, "xmlstring.jpdl.xml", inputStream);
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-10-14 06:58:29 UTC (rev 5740)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-10-14 10:33:08 UTC (rev 5741)
@@ -151,6 +151,10 @@
   }
 
   public void setVariable(String key, Object value) {
+    if (key==null) {
+      throw new JbpmException("variableName is null");
+    }
+
     Variable variable = getVariableObject(key);
     // if there is already a variable instance and it doesn't support the current type...
     if ( (variable!=null) 



More information about the jbpm-commits mailing list