[jbpm-commits] JBoss JBPM SVN: r1935 - in jbossbpm/spec/trunk/modules: dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model and 13 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Aug 19 15:15:15 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-08-19 15:15:14 -0400 (Tue, 19 Aug 2008)
New Revision: 1935

Added:
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataMarshallerTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataMarshallerTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java
Removed:
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/
   jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/
Modified:
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml
   jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml
   jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml
Log:
Use Assignment instead of ExecutionHandler

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -474,7 +474,7 @@
     JAXBAssignment jaxbAss = new JAXBAssignment();
     jaxbAss.setAssignTime(ass.getAssignTime());
     jaxbAss.setFrom(getJAXBExpression(ass.getFrom()));
-    jaxbAss.setTo(getJaxbProperty(ass.getTo()));
+    jaxbAss.setTo(ass.getTo().getName());
     return jaxbAss;
   }
   

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -129,8 +129,8 @@
     for (JAXBAssignment jaxbAss : jaxbProc.getAssignments())
     {
       JAXBExpression jaxbFrom = jaxbAss.getFrom();
-      JAXBProperty jaxbTo = jaxbAss.getTo();
-      procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo.getName());
+      String jaxbTo = jaxbAss.getTo();
+      procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
     }
 
     // Process FlowObjects
@@ -157,8 +157,8 @@
       for (JAXBAssignment jaxbAss : jaxbFlowObject.getAssignments())
       {
         JAXBExpression jaxbFrom = jaxbAss.getFrom();
-        JAXBProperty jaxbTo = jaxbAss.getTo();
-        procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo.getName());
+        String jaxbTo = jaxbAss.getTo();
+        procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
       }
     }
 

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -40,17 +40,17 @@
 @XmlType(name = "Assignment")
 public class JAXBAssignment
 {
-  JAXBProperty to;
+  String to;
   JAXBExpression from;
   AssignTime assignTime;
 
-  public JAXBProperty getTo()
+  public String getTo()
   {
     return to;
   }
 
   @XmlElement
-  public void setTo(JAXBProperty to)
+  public void setTo(String to)
   {
     this.to = to;
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -24,7 +24,6 @@
 // $Id$
 
 import java.io.IOException;
-import java.util.Collection;
 
 import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.Message;
@@ -32,12 +31,9 @@
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Property;
 import org.jboss.bpm.model.TaskBuilder;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.Attachments.Key;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -52,7 +48,6 @@
  */
 public class ActivityPropertyTest extends DefaultEngineTestCase
 {
-  @SuppressWarnings("unchecked")
   public void testActivityPropertyRead() throws Exception
   {
     Process proc = getProcess();
@@ -62,37 +57,19 @@
     Message endMessage = getMessages().get(0);
     assertNotNull("EndMessage expected", endMessage);
     assertEquals("bar", endMessage.getPropertyValue("foo"));
-    
-    Property prop = endMessage.getProperty("attKeys");
-    Collection<Key> attKeys = prop.getValue(Collection.class);
-    assertEquals(1, attKeys.size());
-    Key key = attKeys.iterator().next();
-    assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
   }
 
   protected Process getProcess() throws IOException
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
-    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
-    msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true).addProperty("attKeys", null, true);
-    TaskBuilder taskBuilder = procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class);
+    TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
     taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "foo");
     procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
     Process proc = procBuilder.getProcess();
     return proc;
   }
-  
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      Object attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
-      Collection<Key> attKeys = exContext.getAttachmentKeys();
-      exContext.addAttachment("foo", attValue);
-      exContext.addAttachment("attKeys", attKeys);
-    }
-  }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -30,14 +30,16 @@
 import org.jboss.bpm.model.EventBuilder;
 import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.Gateway;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
 import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.model.Signal.SignalType;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -67,7 +69,9 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValue"));
   }
 
   public void testGateB() throws Exception
@@ -87,7 +91,9 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskB", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("TaskB", endMessage.getPropertyValue("taskValue"));
   }
 
   public void testInvalidToken() throws Exception
@@ -127,7 +133,9 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValue"));
   }
 
   public Process getProcess() throws IOException
@@ -135,13 +143,18 @@
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
-    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+    TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValue");
+    taskBuilder.addSequenceFlow("Merge");
     eventBuilder = procBuilder.addStartEvent("StartB");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
-    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", Gateway.GatewayType.Exclusive).addSequenceFlow("TaskC");
-    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
+    taskBuilder = procBuilder.addTask("TaskB");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValue");
+    taskBuilder.addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", Gateway.GatewayType.Exclusive).addSequenceFlow("End");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValue", null, true);
     Process proc = procBuilder.getProcess();
     return proc;
   }
@@ -170,36 +183,4 @@
       }
     }
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskValue", "TaskA");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskB implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskValue", "TaskB");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskC implements ExecutionHandler
-  {
-    public static Object taskValue;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      taskValue = exContext.getAttachment("taskValue");
-    }
-  }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -30,14 +30,16 @@
 import org.jboss.bpm.model.EventBuilder;
 import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.Gateway;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
 import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.model.Signal.SignalType;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -58,7 +60,7 @@
     // Add a signal listener that sends the other start trigger signal
     SignalManager signalManager = SignalManager.locateSignalManager();
     Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
-    signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -67,7 +69,9 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA:TaskB", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValueA"));
+    assertEquals("TaskB", endMessage.getPropertyValue("taskValueB"));
   }
 
   public void testMergeTimeout() throws Exception
@@ -77,7 +81,7 @@
 
     // Send start trigger signal
     SignalManager signalManager = SignalManager.locateSignalManager();
-    signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+    signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
 
     // Wait for the process to end
     try
@@ -99,7 +103,7 @@
     // Add a signal listener that sends the other start trigger signal
     SignalManager signalManager = SignalManager.locateSignalManager();
     Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
-    signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -119,7 +123,7 @@
     
     // Add a signal listener that sends the other start trigger signal
     startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
-    signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -128,7 +132,9 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA:TaskB", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValueA"));
+    assertEquals("TaskB", endMessage.getPropertyValue("taskValueB"));
   }
 
   public Process getProcess() throws IOException
@@ -136,13 +142,18 @@
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
-    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+    TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
+    taskBuilder.addSequenceFlow("Merge");
     eventBuilder = procBuilder.addStartEvent("StartB");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
-    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("TaskC");
-    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
+    taskBuilder = procBuilder.addTask("TaskB");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
+    taskBuilder.addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
     Process proc = procBuilder.getProcess();
     return proc;
   }
@@ -171,36 +182,4 @@
       }
     }
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskA", "TaskA");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskB implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskB", "TaskB");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskC implements ExecutionHandler
-  {
-    public static Object taskValue;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      taskValue = exContext.getAttachment("taskA") + ":" + exContext.getAttachment("taskB");
-    }
-  }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -24,15 +24,15 @@
 // $Id$
 
 import java.io.IOException;
-import java.util.Collection;
 
+import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.Attachments.Key;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -55,34 +55,21 @@
     proc.startProcess();
     proc.waitForEnd();
 
-    assertEquals("bar", TaskA.attValue);
-
-    assertEquals(1, TaskA.attKeys.size());
-    Key key = TaskA.attKeys.iterator().next();
-    assertEquals("ProcessProperties.foo", key.getNamePart());
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("bar", endMessage.getPropertyValue("foo"));
   }
 
   protected Process getProcess() throws IOException
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     procBuilder.addProcess("ProcessProperties").addStartEvent("Start").addSequenceFlow("TaskA");
-    procBuilder.addProperty("foo", "bar").addTask("TaskA").addExecutionHandler(TaskA.class);
-    procBuilder.addSequenceFlow("End").addEndEvent("End");
+    procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ProcessProperties_foo", "foo");
+    procBuilder.addProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
     Process proc = procBuilder.getProcess();
     return proc;
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    static Object attValue;
-    static Collection<Key> attKeys;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      attValue = exContext.getAttachment("ProcessProperties.foo");
-      attKeys = exContext.getAttachmentKeys();
-    }
-  }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -50,10 +50,10 @@
     proc.startProcess();
     proc.waitForEnd();
     
-    assertEquals(TaskA.procProp, "kermit");
-    assertEquals(TaskA.taskProp, "piggy");
-    assertEquals(TaskA.procAssign, Boolean.TRUE);
-    assertEquals(TaskA.taskAssign, Boolean.TRUE);
+    assertEquals(TaskExecutionHandler.procProp, "kermit");
+    assertEquals(TaskExecutionHandler.taskProp, "piggy");
+    assertEquals(TaskExecutionHandler.procAssign, Boolean.TRUE);
+    assertEquals(TaskExecutionHandler.taskAssign, Boolean.TRUE);
   }
 
   protected Process getProcess() throws IOException
@@ -63,14 +63,14 @@
     procBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
     procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
     TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
-    taskBuilder.addProperty("taskProp", "piggy").addExecutionHandler(TaskA.class).addSequenceFlow("End");
+    taskBuilder.addProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
     taskBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
     procBuilder.addEndEvent("End");
     return procBuilder.getProcess();
   }
 
   @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
+  public static class TaskExecutionHandler implements ExecutionHandler
   {
     static String procProp;
     static String taskProp;

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -30,14 +30,16 @@
 import org.jboss.bpm.model.EventBuilder;
 import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.Gateway;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
 import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.model.Signal.SignalType;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -50,7 +52,7 @@
  */
 public class SynchronizationTest extends DefaultEngineTestCase
 {
-  public void testSynchronization() throws Exception
+  public void testParallelMerge() throws Exception
   {
     Process proc = getProcess();
     proc.startProcess();
@@ -58,7 +60,7 @@
     // Add a signal listener that sends the other start trigger signal
     SignalManager signalManager = SignalManager.locateSignalManager();
     Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
-    signalManager.addSignalListener(null, new MergeListener(proc.getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -67,10 +69,12 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA:TaskB", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValueA"));
+    assertEquals("TaskB", endMessage.getPropertyValue("taskValueB"));
   }
 
-  public void testSynchronizationTimeout() throws Exception
+  public void testMergeTimeout() throws Exception
   {
     Process proc = getProcess();
     proc.startProcess();
@@ -91,7 +95,7 @@
     }
   }
 
-  public void testSynchronizationInvalidToken() throws Exception
+  public void testInvalidToken() throws Exception
   {
     Process proc = getProcess();
     proc.startProcess();
@@ -99,7 +103,7 @@
     // Add a signal listener that sends the other start trigger signal
     SignalManager signalManager = SignalManager.locateSignalManager();
     Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
-    signalManager.addSignalListener(null, new MergeListener(proc.getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -119,7 +123,7 @@
     
     // Add a signal listener that sends the other start trigger signal
     startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
-    signalManager.addSignalListener(null, new MergeListener(proc.getName(), startTrigger));
+    signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
 
     // Send start trigger signal
     signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -128,21 +132,28 @@
     proc.waitForEnd();
 
     // Verify the result
-    assertEquals("TaskA:TaskB", TaskC.taskValue);
+    Message endMessage = getMessages().get(0);
+    assertEquals("TaskA", endMessage.getPropertyValue("taskValueA"));
+    assertEquals("TaskB", endMessage.getPropertyValue("taskValueB"));
   }
 
   public Process getProcess() throws IOException
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+    EventBuilder eventBuilder = procBuilder.addProcess("Synchronization").addStartEvent("StartA");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
-    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+    TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
+    taskBuilder.addSequenceFlow("Merge");
     eventBuilder = procBuilder.addStartEvent("StartB");
     eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
-    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("TaskC");
-    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
+    taskBuilder = procBuilder.addTask("TaskB");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
+    taskBuilder.addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
     Process proc = procBuilder.getProcess();
     return proc;
   }
@@ -171,36 +182,4 @@
       }
     }
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskA", "TaskA");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskB implements ExecutionHandler
-  {
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      exContext.addAttachment("taskB", "TaskB");
-    }
-  }
-
-  @SuppressWarnings("serial")
-  public static class TaskC implements ExecutionHandler
-  {
-    public static Object taskValue;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      taskValue = exContext.getAttachment("taskA") + ":" + exContext.getAttachment("taskB");
-    }
-  }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -25,15 +25,9 @@
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.Collection;
 
 import org.jboss.bpm.client.ProcessManager;
 import org.jboss.bpm.model.Process;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.Attachments.Key;
-import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
  * Data elements are supported which are specific to a process instance or case. They can be accessed by all components
@@ -44,21 +38,8 @@
  * @author thomas.diesler at jboss.com
  * @since 15-Aug-2008
  */
-public class CaseDataAPITest extends DefaultEngineTestCase
+public class CaseDataAPITest extends CaseDataTest
 {
-  public void testCaseProperties() throws Exception
-  {
-    Process proc = getProcess();
-    proc.startProcess();
-    proc.waitForEnd();
-
-    assertEquals("bar", TaskA.attValue);
-
-    assertEquals(1, TaskA.attKeys.size());
-    Key key = TaskA.attKeys.iterator().next();
-    assertEquals("ProcessProperties.foo", key.getNamePart());
-  }
-
   protected Process getProcess() throws IOException
   {
     URL jpdlURL = getResourceURL("pattern/data/casedata/pattern-data-case-data-api10.xml");
@@ -66,18 +47,4 @@
     Process proc = pm.createProcess(jpdlURL);
     return proc;
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    static Object attValue;
-    static Collection<Key> attKeys;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      attValue = exContext.getAttachment("ProcessProperties.foo");
-      attKeys = exContext.getAttachmentKeys();
-    }
-  }
 }

Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataMarshallerTest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataMarshallerTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -0,0 +1,52 @@
+/*
+ * 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.jboss.bpm.pattern.data.casedata;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Data elements are supported which are specific to a process instance or case. They can be accessed by all components
+ * of the process during the execution of the case. 
+ * 
+ * https://jira.jboss.org/jira/browse/JBPM-1519
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 15-Aug-2008
+ */
+public class CaseDataMarshallerTest extends CaseDataTest
+{
+  protected Process getProcess() throws IOException
+  {
+    // Marshall the process to a string
+    Process proc = super.getProcess();
+    String procXML = marshallProcess(proc);
+    
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    return procManager.createProcess(procXML);
+  }
+}


Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataMarshallerTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -0,0 +1,72 @@
+/*
+ * 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.jboss.bpm.pattern.data.casedata;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Data elements are supported which are specific to a process instance or case. They can be accessed by all components
+ * of the process during the execution of the case. 
+ * 
+ * https://jira.jboss.org/jira/browse/JBPM-1519
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 15-Aug-2008
+ */
+public class CaseDataTest extends DefaultEngineTestCase
+{
+  public void testCaseProperties() throws Exception
+  {
+    Process proc = getProcess();
+    proc.startProcess();
+    proc.waitForEnd();
+
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("bar", endMessage.getPropertyValue("foo"));
+  }
+
+  protected Process getProcess() throws IOException
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    procBuilder.addProcess("CaseData").addStartEvent("Start").addSequenceFlow("TaskA");
+    procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "CaseData_foo", "foo");
+    procBuilder.addProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
+}
\ No newline at end of file


Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -25,15 +25,9 @@
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.Collection;
 
 import org.jboss.bpm.client.ProcessManager;
 import org.jboss.bpm.model.Process;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.Attachments.Key;
-import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
  * Data elements can be defined by tasks which are accessible only within the context of individual execution instances
@@ -44,21 +38,8 @@
  * @author thomas.diesler at jboss.com
  * @since 15-Aug-2008
  */
-public class TaskDataAPITest extends DefaultEngineTestCase
+public class TaskDataAPITest extends TaskDataTest
 {
-  public void testTaskProperties() throws Exception
-  {
-    Process proc = getProcess();
-    proc.startProcess();
-    proc.waitForEnd();
-
-    assertEquals("bar", TaskA.attValue);
-
-    assertEquals(1, TaskA.attKeys.size());
-    Key key = TaskA.attKeys.iterator().next();
-    assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
-  }
-
   protected Process getProcess() throws IOException
   {
     URL jpdlURL = getResourceURL("pattern/data/taskdata/pattern-data-task-data-api10.xml");
@@ -66,18 +47,4 @@
     Process proc = pm.createProcess(jpdlURL);
     return proc;
   }
-
-  @SuppressWarnings("serial")
-  public static class TaskA implements ExecutionHandler
-  {
-    static Object attValue;
-    static Collection<Key> attKeys;
-
-    public void execute(Token token)
-    {
-      ExecutionContext exContext = token.getExecutionContext();
-      attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
-      attKeys = exContext.getAttachmentKeys();
-    }
-  }
-}
+}
\ No newline at end of file

Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataMarshallerTest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataMarshallerTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -0,0 +1,52 @@
+/*
+ * 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.jboss.bpm.pattern.data.taskdata;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Data elements can be defined by tasks which are accessible only within the context of individual execution instances
+ * of that task. 
+ * 
+ * https://jira.jboss.org/jira/browse/JBPM-1515
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 15-Aug-2008
+ */
+public class TaskDataMarshallerTest extends TaskDataTest
+{
+  protected Process getProcess() throws IOException
+  {
+    // Marshall the process to a string
+    Process proc = super.getProcess();
+    String procXML = marshallProcess(proc);
+    
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    return procManager.createProcess(procXML);
+  }
+}
\ No newline at end of file


Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataMarshallerTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java	2008-08-19 19:15:14 UTC (rev 1935)
@@ -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.jboss.bpm.pattern.data.taskdata;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Data elements can be defined by tasks which are accessible only within the context of individual execution instances
+ * of that task. 
+ * 
+ * https://jira.jboss.org/jira/browse/JBPM-1515
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 15-Aug-2008
+ */
+public class TaskDataTest extends DefaultEngineTestCase
+{
+  public void testTaskDataRead() throws Exception
+  {
+    Process proc = getProcess();
+    proc.startProcess();
+    proc.waitForEnd();
+    
+    Message endMessage = getMessages().get(0);
+    assertNotNull("EndMessage expected", endMessage);
+    assertEquals("bar", endMessage.getPropertyValue("foo"));
+  }
+
+  protected Process getProcess() throws IOException
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    procBuilder.addProcess("TaskData").addStartEvent("Start").addSequenceFlow("TaskA");
+    TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+    taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+    taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskData_TaskA_foo", "foo");
+    procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
+    MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+    msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
+}


Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml	2008-08-19 19:15:14 UTC (rev 1935)
@@ -1,4 +1,4 @@
-<ns2:process name="pattern-control-synchronization" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+<ns2:process name="Synchronization" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
   <start name="StartA">
     <seqflow to="TaskA" />
     <signal-trigger>
@@ -8,8 +8,11 @@
     </signal-trigger>
   </start>
   <task taskType="None" name="TaskA">
+    <assignment time="Start">
+      <from lang="MVEL">'TaskA'</from>
+      <to>taskValueA</to>
+    </assignment>
     <seqflow to="Merge" />
-    <execution-handler class="org.jboss.bpm.pattern.control.synchronization.SynchronizationTest$TaskA" />
   </task>
   <start name="StartB">
     <seqflow to="TaskB" />
@@ -20,15 +23,27 @@
     </signal-trigger>
   </start>
   <task taskType="None" name="TaskB">
+    <assignment time="Start">
+      <from lang="MVEL">'TaskB'</from>
+      <to>taskValueB</to>
+    </assignment>
     <seqflow to="Merge" />
-    <execution-handler class="org.jboss.bpm.pattern.control.synchronization.SynchronizationTest$TaskB" />
   </task>
   <parallel-gateway name="Merge">
-    <seqflow to="TaskC" />
+    <seqflow to="End" />
   </parallel-gateway>
-  <task taskType="None" name="TaskC">
-    <seqflow to="End" />
-    <execution-handler class="org.jboss.bpm.pattern.control.synchronization.SynchronizationTest$TaskC" />
-  </task>
-  <end name="End" />
+  <end name="End">
+    <message-result>
+      <messageRef nameRef="EndMessage" />
+    </message-result>
+  </end>
+  <message name="EndMessage">
+    <to>jboss.bpm:msgListener=SynchronizationAPITest</to>
+    <property correlation="true">
+      <name>taskValueA</name>
+    </property>
+    <property correlation="true">
+      <name>taskValueB</name>
+    </property>
+  </message>
 </ns2:process>
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml	2008-08-19 19:15:14 UTC (rev 1935)
@@ -1,12 +1,25 @@
-<ns2:process name="ProcessProperties" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+<ns2:process name="CaseData" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
   <start name="Start">
+    <assignment time="Start">
+      <from lang="MVEL">CaseData_foo</from>
+      <to>foo</to>
+    </assignment>
     <seqflow to="TaskA" />
   </start>
   <task taskType="None" name="TaskA">
     <seqflow to="End" />
-    <execution-handler class="org.jboss.bpm.pattern.data.casedata.CaseDataAPITest$TaskA" />
   </task>
-  <end name="End" />
+  <end name="End">
+    <message-result>
+      <messageRef nameRef="EndMessage" />
+    </message-result>
+  </end>
+  <message name="EndMessage">
+    <to>jboss.bpm:msgListener=CaseDataAPITest</to>
+    <property correlation="true">
+      <name>foo</name>
+    </property>
+  </message>
   <property>
     <name>foo</name>
     <value>bar</value>

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml	2008-08-19 15:56:55 UTC (rev 1934)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml	2008-08-19 19:15:14 UTC (rev 1935)
@@ -1,14 +1,27 @@
-<ns2:process name="ActivityProperties" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+<ns2:process name="TaskData" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
   <start name="Start">
     <seqflow to="TaskA" />
   </start>
   <task taskType="None" name="TaskA">
+    <assignment time="Start">
+      <from lang="MVEL">TaskData_TaskA_foo</from>
+      <to>foo</to>
+    </assignment>
     <property>
       <name>foo</name>
       <value>bar</value>
     </property>
     <seqflow to="End" />
-    <execution-handler class="org.jboss.bpm.pattern.data.taskdata.TaskDataAPITest$TaskA" />
   </task>
-  <end name="End" />
+  <end name="End">
+    <message-result>
+      <messageRef nameRef="EndMessage" />
+    </message-result>
+  </end>
+  <message name="EndMessage">
+    <to>jboss.bpm:msgListener=TaskDataAPITest</to>
+    <property correlation="true">
+      <name>foo</name>
+    </property>
+  </message>
 </ns2:process>
\ No newline at end of file




More information about the jbpm-commits mailing list