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

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Jun 27 09:52:38 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-06-27 09:52:38 -0400 (Sat, 27 Jun 2009)
New Revision: 5139

Modified:
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionHandlerActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/AssignableDefinitionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
   jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch06-Jpdl.xml
Log:
JBPM-2323 instantiate user code objects referenced by class during parsing time

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -26,10 +26,6 @@
 import org.jbpm.api.activity.ActivityBehaviour;
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.api.activity.ExternalActivityBehaviour;
-import org.jbpm.api.listener.EventListener;
-import org.jbpm.api.listener.EventListenerExecution;
-import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.pvm.internal.wire.WireContext;
 
 
 /**
@@ -39,23 +35,21 @@
 
   private static final long serialVersionUID = 1L;
 
-  protected Descriptor descriptor;
+  protected ActivityBehaviour customBehaviour;
 
   public void signal(ActivityExecution execution, String signalName, Map<String, ? > parameters) throws Exception {
-    ExternalActivityBehaviour activityBehaviour = (ExternalActivityBehaviour) WireContext.create(descriptor);
-    activityBehaviour.signal(execution, signalName, parameters);
+    ExternalActivityBehaviour externalActivityBehaviour = (ExternalActivityBehaviour)customBehaviour;
+    externalActivityBehaviour.signal(execution, signalName, parameters);
   }
 
   public void execute(ActivityExecution execution) throws Exception {
-    ActivityBehaviour activityBehaviour = (ActivityBehaviour) WireContext.create(descriptor);
-    activityBehaviour.execute(execution);
+    customBehaviour.execute(execution);
   }
-
   
-  public Descriptor getDescriptor() {
-    return descriptor;
+  public ActivityBehaviour getCustomBehaviour() {
+    return customBehaviour;
   }
-  public void setDescriptor(Descriptor descriptor) {
-    this.descriptor = descriptor;
+  public void setCustomBehaviour(ActivityBehaviour customBehaviour) {
+    this.customBehaviour = customBehaviour;
   }
 }

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -21,6 +21,8 @@
  */
 package org.jbpm.jpdl.internal.activity;
 
+import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.pvm.internal.wire.WireContext;
 import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
 import org.jbpm.pvm.internal.xml.Parse;
@@ -43,7 +45,8 @@
     CustomActivity customActivity = new CustomActivity();
     ObjectDescriptor descriptor = (ObjectDescriptor) 
         objectBinding.parse(element, parse, wireParser);
-    customActivity.setDescriptor(descriptor);
+    ActivityBehaviour customActivityBehaviour = (ActivityBehaviour) WireContext.create(descriptor);
+    customActivity.setCustomBehaviour(customActivityBehaviour);
     return customActivity;
   }
 }

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -23,9 +23,11 @@
 
 import java.util.List;
 
+import org.jbpm.api.jpdl.DecisionHandler;
 import org.jbpm.pvm.internal.model.ActivityImpl;
 import org.jbpm.pvm.internal.model.TransitionImpl;
 import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.WireContext;
 import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
 import org.jbpm.pvm.internal.wire.descriptor.ExpressionEvaluatorDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
@@ -68,7 +70,8 @@
       DecisionHandlerActivity decisionHandlerActivity = new DecisionHandlerActivity();
       ObjectDescriptor decisionHandlerDescriptor = (ObjectDescriptor) 
           objectBinding.parse(handlerElement, parse, wireParser);
-      decisionHandlerActivity.setDecisionHandlerDescriptor(decisionHandlerDescriptor);
+      DecisionHandler decisionHandler = (DecisionHandler) WireContext.create(decisionHandlerDescriptor);
+      decisionHandlerActivity.setDecisionHandler(decisionHandler);
       return decisionHandlerActivity;
     }
     

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionHandlerActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionHandlerActivity.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionHandlerActivity.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -39,7 +39,7 @@
   private static final long serialVersionUID = 1L;
   
   protected String decisionHandlerName;
-  protected Descriptor decisionHandlerDescriptor;
+  protected DecisionHandler decisionHandler;
 
   public void execute(ActivityExecution execution) {
     execute((ExecutionImpl) execution); 
@@ -47,24 +47,28 @@
   
   public void execute(ExecutionImpl execution) {
     Activity activity = execution.getActivity();
+    
     String transitionName = null;
 
-    Object object = null; 
-    if (decisionHandlerDescriptor!=null) {
-      object = WireContext.create(decisionHandlerDescriptor);
+    DecisionHandler usedDecisionHandler = null;
+    if (decisionHandler!=null) {
+      usedDecisionHandler = decisionHandler;
+      
     } else if (decisionHandlerName!=null) {
       Environment environment = Environment.getCurrent();
-      object = environment.get(decisionHandlerName);
+      Object object = environment.get(decisionHandlerName);
+      if (object==null) {
+        throw new JbpmException("decision handler for "+activity+" is null");
+      }
+      if (! (object instanceof DecisionHandler)) {
+        throw new JbpmException("handler for decision is not a "+DecisionHandler.class.getName()+": "+object.getClass().getName());
+      }
+      usedDecisionHandler = (DecisionHandler) object;
+    } else {
+      throw new JbpmException("no decision handler specified");
     }
     
-    if (object==null) {
-      throw new JbpmException("decision handler for "+activity+" is null");
-    }
-    if (! (object instanceof DecisionHandler)) {
-      throw new JbpmException("handler for decision is not a "+DecisionHandler.class.getName()+": "+object.getClass().getName());
-    }
-    DecisionHandler decisionHandler = (DecisionHandler) object;
-    transitionName = decisionHandler.decide(execution);
+    transitionName = usedDecisionHandler.decide(execution);
 
     Transition transition = activity.getOutgoingTransition(transitionName);
     if (transition==null) {
@@ -79,7 +83,7 @@
   public void setDecisionHandlerName(String decisionHandlerName) {
     this.decisionHandlerName = decisionHandlerName;
   }
-  public void setDecisionHandlerDescriptor(Descriptor decisionHandlerDescriptor) {
-    this.decisionHandlerDescriptor = decisionHandlerDescriptor;
+  public void setDecisionHandler(DecisionHandler decisionHandler) {
+    this.decisionHandler = decisionHandler;
   }
 }

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaActivity.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaActivity.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -48,7 +48,7 @@
   
   protected String targetExpression;
   protected String targetLanguage;
-  protected Descriptor targetDescriptor;
+  protected Object target;
 
   protected String methodName;
   protected String variableName;
@@ -56,16 +56,16 @@
   
   public void perform(OpenExecution execution) throws Exception {
     
-    Object target = null;
+    Object invocationTarget = null;
 
     WireContext wireContext = new WireContext();
 
-    if (targetDescriptor!=null) {
-      target = wireContext.create(targetDescriptor, false);
+    if (target!=null) {
+      invocationTarget = target;
 
     } else if (targetExpression!=null) {
       ScriptManager scriptManager = EnvironmentDefaults.getScriptManager();
-      target = scriptManager.evaluateExpression(targetExpression, targetLanguage);
+      invocationTarget = scriptManager.evaluateExpression(targetExpression, targetLanguage);
     
     } else {
       throw new JbpmException("no target specified");
@@ -79,13 +79,13 @@
         args = ObjectDescriptor.getArgs(wireContext, argDescriptors);
       }
       
-      Class<?> clazz = target.getClass();
+      Class<?> clazz = invocationTarget.getClass();
       Method method = ReflectUtil.findMethod(clazz, methodName, argDescriptors, args);
       if (method==null) {
         throw new WireException("method "+ReflectUtil.getSignature(methodName, argDescriptors, args)+" unavailable");
       }
 
-      Object returnValue = ReflectUtil.invoke(method, target, args);
+      Object returnValue = ReflectUtil.invoke(method, invocationTarget, args);
       
       if (variableName!=null) {
         execution.setVariable(variableName, returnValue);
@@ -98,8 +98,8 @@
     }
   }
 
-  public void setTargetDescriptor(Descriptor descriptor) {
-    this.targetDescriptor = descriptor;
+  public void setTarget(Object target) {
+    this.target = target;
   }
   public void setMethodName(String methodName) {
     this.methodName = methodName;

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaBinding.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JavaBinding.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -25,6 +25,7 @@
 
 import org.jbpm.jpdl.internal.xml.JpdlParser;
 import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.WireContext;
 import org.jbpm.pvm.internal.wire.descriptor.ArgDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
 import org.jbpm.pvm.internal.wire.operation.InvokeOperation;
@@ -63,7 +64,8 @@
 
     if (element.hasAttribute("class")) {
       ObjectDescriptor objectDescriptor = JpdlParser.parseObjectDescriptor(element, parse);
-      javaActivity.setTargetDescriptor(objectDescriptor);
+      Object target = WireContext.create(objectDescriptor);
+      javaActivity.setTarget(target);
 
     } else if (element.hasAttribute("expr")) {
       String expression = element.getAttribute("expr");

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-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -31,11 +31,10 @@
 import java.util.Set;
 import java.util.StringTokenizer;
 
-import org.w3c.dom.Element;
-
 import org.jbpm.api.activity.ActivityBehaviour;
 import org.jbpm.api.listener.EventListener;
 import org.jbpm.api.model.Event;
+import org.jbpm.api.task.AssignmentHandler;
 import org.jbpm.internal.log.Log;
 import org.jbpm.jpdl.internal.activity.JpdlBinding;
 import org.jbpm.jpdl.internal.activity.MailListener;
@@ -62,11 +61,11 @@
 import org.jbpm.pvm.internal.task.AssignableDefinitionImpl;
 import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
 import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
+import org.jbpm.pvm.internal.task.TaskHandler;
 import org.jbpm.pvm.internal.util.ReflectUtil;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.Descriptor;
 import org.jbpm.pvm.internal.wire.WireContext;
-import org.jbpm.pvm.internal.wire.WireDefinition;
 import org.jbpm.pvm.internal.wire.binding.MailTemplateBinding;
 import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
@@ -76,6 +75,7 @@
 import org.jbpm.pvm.internal.xml.Parse;
 import org.jbpm.pvm.internal.xml.Parser;
 import org.jbpm.pvm.internal.xml.ProblemImpl;
+import org.w3c.dom.Element;
 
 /**
  * @author Tom Baeyens
@@ -428,7 +428,8 @@
     Element assignmentHandlerElement = XmlUtil.element(element, "assignment-handler");
     if (assignmentHandlerElement!=null) {
       ObjectDescriptor objectDescriptor = parseObjectDescriptor(assignmentHandlerElement, parse);
-      assignableDefinition.setAssignmentHandlerDescriptor(objectDescriptor);
+      AssignmentHandler assignmentHandler = (AssignmentHandler) WireContext.create(objectDescriptor);
+      assignableDefinition.setAssignmentHandler(assignmentHandler);
     }
   
     String assigneeExpression = XmlUtil.attribute(element, "assignee");
@@ -480,7 +481,8 @@
     Element taskHandlerElement = XmlUtil.element(element, "task-handler");
     if (taskHandlerElement!=null) {
       ObjectDescriptor objectDescriptor = parseObjectDescriptor(taskHandlerElement, parse);
-      taskDefinition.setTaskHandlerDescriptor(objectDescriptor);
+      TaskHandler taskHandler = (TaskHandler) WireContext.create(objectDescriptor);
+      taskDefinition.setTaskHandler(taskHandler);
     }
   
     JpdlParser.parseAssignmentAttributes(element, taskDefinition, parse);
@@ -613,14 +615,12 @@
     eventListener.setMailProducer(mailProducer);
   }
 
-  public static MailProducer parseMailProducer(Element element, Parse parse,
-      String defaultTemplateName) {
+  public static MailProducer parseMailProducer(Element element, Parse parse, String defaultTemplateName) {
     // check whether the element is a generic object descriptor
     if (ObjectBinding.isObjectDescriptor(element)) {
       // TODO test custom mail producer
       ObjectDescriptor objectDescriptor = parseObjectDescriptor(element, parse);
-      WireDefinition wireDefinition = parse.findObject(WireDefinition.class);
-      return (MailProducer) objectDescriptor.construct(new WireContext(wireDefinition));
+      return (MailProducer) WireContext.create(objectDescriptor);
     }
 
     // parse the default producer

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -784,13 +784,12 @@
       }
     }
     
-    Descriptor assignmentHandlerDescriptor = assignableDefinition.getAssignmentHandlerDescriptor();
-    if (assignmentHandlerDescriptor!=null) {
-      AssignmentHandler assignmentHandler = (AssignmentHandler) WireContext.create(assignmentHandlerDescriptor);
+    AssignmentHandler assignmentHandler = assignableDefinition.getAssignmentHandler();
+    if (assignmentHandler!=null) {
       try {
         assignmentHandler.assign(assignable, this);
       } catch (Exception e) {
-        throw new JbpmException("assignment handler threw exception: "+e, e);
+        throw new JbpmException("assignment handler threw exception: " + e, e);
       }
     }
   }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/AssignableDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/AssignableDefinitionImpl.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/AssignableDefinitionImpl.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -21,9 +21,9 @@
  */
 package org.jbpm.pvm.internal.task;
 
+import org.jbpm.api.task.AssignmentHandler;
 import org.jbpm.pvm.internal.model.ProcessElementImpl;
 import org.jbpm.pvm.internal.util.EqualsUtil;
-import org.jbpm.pvm.internal.wire.Descriptor;
 
 /**
  * @author Tom Baeyens
@@ -41,7 +41,7 @@
   protected String candidateUsersExpressionLanguage;
   protected String candidateGroupsExpression;
   protected String candidateGroupsExpressionLanguage;
-  protected Descriptor assignmentHandlerDescriptor;
+  protected AssignmentHandler assignmentHandler;
 
   // equals ///////////////////////////////////////////////////////////////////
   // hack to support comparing hibernate proxies against the real objects
@@ -70,11 +70,11 @@
   public void setAssigneeExpression(String assigneeExpression) {
     this.assigneeExpression = assigneeExpression;
   }
-  public Descriptor getAssignmentHandlerDescriptor() {
-    return assignmentHandlerDescriptor;
+  public AssignmentHandler getAssignmentHandler() {
+    return assignmentHandler;
   }
-  public void setAssignmentHandlerDescriptor(Descriptor assignmentHandlerDescriptor) {
-    this.assignmentHandlerDescriptor = assignmentHandlerDescriptor;
+  public void setAssignmentHandler(AssignmentHandler assignmentHandler) {
+    this.assignmentHandler = assignmentHandler;
   }
   public String getAssigneeExpressionLanguage() {
     return assigneeExpressionLanguage;

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -26,7 +26,6 @@
 import java.util.List;
 
 import org.jbpm.pvm.internal.util.Priority;
-import org.jbpm.pvm.internal.wire.Descriptor;
 
 /**
  * defines a task and how the actor(s) must be calculated at runtime.
@@ -40,7 +39,7 @@
   protected List<TaskDefinitionImpl> subTaskDefinitions = new ArrayList<TaskDefinitionImpl>();
   protected int priority = Priority.NORMAL;
   protected SwimlaneDefinitionImpl swimlaneDefinition;
-  protected Descriptor taskHandlerDescriptor;
+  protected TaskHandler taskHandler;
 
   public int getPriority() {
     return priority;
@@ -72,10 +71,10 @@
   public void setFormResourceName(String form) {
     this.formResourceName = form;
   }
-  public Descriptor getTaskHandlerDescriptor() {
-    return taskHandlerDescriptor;
+  public TaskHandler getTaskHandler() {
+    return taskHandler;
   }
-  public void setTaskHandlerDescriptor(Descriptor taskHandlerDescriptor) {
-    this.taskHandlerDescriptor = taskHandlerDescriptor;
+  public void setTaskHandler(TaskHandler taskHandler) {
+    this.taskHandler = taskHandler;
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-06-27 13:52:38 UTC (rev 5139)
@@ -347,11 +347,11 @@
   }
 
   public TaskHandler getTaskHandler() {
-    if ((getTaskDefinition() == null) || (taskDefinition.getTaskHandlerDescriptor() == null)) {
+    if ((getTaskDefinition() == null) || (taskDefinition.getTaskHandler() == null)) {
       return DEFAULT_TASK_HANDLER;
     }
 
-    TaskHandler taskHandler = (TaskHandler) WireContext.create(taskDefinition.getTaskHandlerDescriptor());
+    TaskHandler taskHandler = taskDefinition.getTaskHandler();
     return taskHandler;
   }
 

Modified: jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch06-Jpdl.xml
===================================================================
--- jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch06-Jpdl.xml	2009-06-27 13:10:22 UTC (rev 5138)
+++ jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch06-Jpdl.xml	2009-06-27 13:52:38 UTC (rev 5139)
@@ -3028,10 +3028,22 @@
   <section id="usercode">
     <title>User code</title>
     <para>Various elements in the jPDL process language refer to a an 
-    object on which an interface method will be invoked.  See for example
-    <xref linkend="taskassignmenthandler" />.  This section describes the 
-    attributes and sub elements of those type of user code objects. 
+    object on which an interface method will be invoked.
+    </para>  
+    <itemizedlist>
+      <listitem><literal>event-listener</literal></listitem>
+      <listitem><literal>custom</literal></listitem>
+      <listitem><literal>java</literal></listitem>
+      <listitem><literal>assignment-handler</literal> in task</listitem>
+      <listitem><literal>handler</literal> in decision</listitem>
+    </itemizedlist>
+    <para>For all objects that are referenced by a class name, will be  
+    instantiated during parsing time.  Which implies that the objects have to be 
+    threadsafe.  This is typically OK since those objects are typically immutable. 
     </para>
+    <para>Objects that are referenced by an expression are calculated 
+    dynamically.
+    </para>
     <table><title>attributes:</title>
       <tgroup cols="5" rowsep="1" colsep="1">
         <thead>
@@ -3056,7 +3068,7 @@
             <entry>expression</entry>
             <entry></entry>
             <entry>one of {class|expr} is required</entry>
-            <entry>The fully qualified classname.</entry>
+            <entry>Expression for which the resulting value will be taken as the target object.</entry>
           </row>
         </tbody>
       </tgroup>




More information about the jbpm-commits mailing list