[jbpm-commits] JBoss JBPM SVN: r2455 - in projects/spec/trunk/modules: cts and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Sep 30 17:15:37 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-09-30 17:15:37 -0400 (Tue, 30 Sep 2008)
New Revision: 2455
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java
projects/spec/trunk/modules/cts/pom.xml
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
Log:
SendTaskTest - pass
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,49 @@
+/*
+ * 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.api.runtime;
+
+import org.jbpm.api.model.Node;
+
+/**
+ * A handler that is associated with a node
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 30-Sep-2008
+ */
+public abstract class BasicNodeHandler implements NodeHandler
+{
+ private static final long serialVersionUID = 1L;
+
+ private Node node;
+
+ @Override
+ public Node getNode()
+ {
+ return node;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ this.node = node;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -21,10 +21,9 @@
*/
package org.jbpm.api.runtime;
-import java.io.Serializable;
-
//$Id$
+import org.jbpm.api.model.Node;
/**
* The ProcessEngine invokes the ExecutionHandler on a
@@ -33,7 +32,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface ExecutionHandler extends Serializable
+public interface ExecutionHandler extends NodeHandler
{
/**
* Execute the associated business logic.
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,8 +23,6 @@
// $Id$
-import java.io.Serializable;
-
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
@@ -35,7 +33,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface FlowHandler extends Serializable
+public interface FlowHandler extends NodeHandler
{
/**
* Execute the FlowHandler.
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,47 @@
+/*
+ * 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.api.runtime;
+
+import java.io.Serializable;
+
+//$Id$
+
+import org.jbpm.api.model.Node;
+
+/**
+ * A handler that is associated with a node
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 30-Sep-2008
+ */
+public interface NodeHandler extends Serializable
+{
+ /**
+ * Get the associated node.
+ */
+ Node getNode();
+
+ /**
+ * Set the associated node.
+ */
+ void setNode(Node node);
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,8 +23,6 @@
// $Id$
-import java.io.Serializable;
-
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Signal;
@@ -36,7 +34,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface SignalHandler extends Serializable
+public interface SignalHandler extends NodeHandler
{
/**
* Get signal for enter
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 21:15:37 UTC (rev 2455)
@@ -79,8 +79,6 @@
<exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/task/ReceiveTaskTest.java</exclude>
- <exclude>org/jbpm/test/cts/task/SendTaskTest.java</exclude>
- <exclude>org/jbpm/test/cts/task/TaskExecutionHandlerTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java</exclude>
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -25,10 +25,13 @@
import java.io.IOException;
+import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.runtime.BasicNodeHandler;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.Token;
@@ -58,17 +61,17 @@
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskExecutionHandlerTest").addProcessProperty("procProp", "kermit");
- //procBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
+ procBuilder.addProcessAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProcessProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
- //taskBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
+ taskBuilder.addNodeProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
+ taskBuilder.addNodeAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
procBuilder.addEndEvent("End");
return procBuilder.getProcess();
}
@SuppressWarnings("serial")
- public static class TaskExecutionHandler implements ExecutionHandler
+ public static class TaskExecutionHandler extends BasicNodeHandler implements ExecutionHandler
{
static String procProp;
static String taskProp;
@@ -82,6 +85,7 @@
* - Activity properties
* - The result of start time activity assignments
*/
+ @Override
public void execute(Token token)
{
ExecutionContext exContext = token.getExecutionContext();
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -31,6 +31,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
@@ -110,6 +111,7 @@
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -132,12 +134,24 @@
EndSignalCallback callback = exContext.removeAttachment(EndSignalCallback.class);
callback.destroyToken(token);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@Override
protected FlowHandler getDefaultFlowHandler()
{
+ final Node thisNode = this;
return new FlowHandler()
{
private static final long serialVersionUID = 1L;
@@ -148,6 +162,17 @@
ExecutionContext exContext = token.getExecutionContext();
exContext.addAttachment(EndSignalCallback.class, new EndSignalCallback(tokenExecutor));
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -131,12 +131,24 @@
messageSender.sendMessage(token);
}
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -154,6 +166,17 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_EVENT_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -51,6 +51,7 @@
import org.jbpm.api.model.StartEvent;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
+import org.jbpm.api.runtime.NodeHandler;
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
@@ -231,6 +232,7 @@
protected ExecutionHandler getDefaultExecutionHandler()
{
+ final Node thisNode = this;
return new ExecutionHandler()
{
private static final long serialVersionUID = 1L;
@@ -239,6 +241,17 @@
{
// nothing to do
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@@ -285,11 +298,22 @@
throw new IllegalStateException("Cannot use default flow handler on " + thisNode + " with: " + getOutFlows());
}
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@SuppressWarnings("unchecked")
- private <T> T loadHandlerInstance(Class<T> clazz, String className)
+ private <T extends NodeHandler> T loadHandlerInstance(Class<T> clazz, String className)
{
T handler = null;
if (className != null)
@@ -298,6 +322,7 @@
{
ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
handler = (T)ctxLoader.loadClass(className).newInstance();
+ handler.setNode(this);
}
catch (Exception ex)
{
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,56 @@
+/*
+ * 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.ri.model;
+
+//$Id$
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.runtime.BasicNodeHandler;
+import org.jbpm.api.runtime.ExecutionHandler;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.ri.runtime.MessageSender;
+
+/**
+ * An ExecutionHandler that sends a Message
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 30-Sep-2008
+ */
+public class SendTaskExecutionHandler extends BasicNodeHandler implements ExecutionHandler
+{
+ private static final long serialVersionUID = 1L;
+
+ public SendTaskExecutionHandler(TaskImpl taskImpl)
+ {
+ setNode(taskImpl);
+ }
+
+ @Override
+ public void execute(Token token)
+ {
+ TaskImpl taskImpl = (TaskImpl)getNode();
+ Message messageRef = taskImpl.getMessageRef();
+ MessageSender messageSender = new MessageSender(taskImpl, messageRef);
+ messageSender.sendMessage(token);
+ }
+
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -31,6 +31,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.client.SignalListener;
+import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
@@ -112,6 +113,7 @@
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -130,6 +132,17 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_START_EVENT_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -32,10 +32,14 @@
import org.jbpm.api.Constants;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Task;
import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.service.SignalService;
@@ -60,9 +64,13 @@
@Enumerated(EnumType.STRING)
private TaskType taskType = TaskType.None;
- public TaskImpl(String name)
+ @Transient
+ private MessageImpl messageRef;
+
+ public TaskImpl(String name, TaskType taskType)
{
super(name);
+ this.taskType = taskType;
}
// Persistence ctor
@@ -113,9 +121,39 @@
outFlows.add(outFlow);
}
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(MessageImpl message)
+ {
+ this.messageRef = message;
+ }
+
@Override
+ protected ExecutionHandler getDefaultExecutionHandler()
+ {
+ ExecutionHandler execHandler;
+ if (taskType == TaskType.Send)
+ {
+ execHandler = new SendTaskExecutionHandler(this);
+ }
+ else if (taskType == TaskType.Receive)
+ {
+ execHandler = super.getDefaultExecutionHandler();
+ }
+ else
+ {
+ execHandler = super.getDefaultExecutionHandler();
+ }
+ return execHandler;
+ }
+
+ @Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -133,9 +171,40 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_TASK_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
+ @Override
+ protected void create(Process proc)
+ {
+ super.create(proc);
+
+ if ((taskType == TaskType.Send || taskType == TaskType.Receive) && messageRef == null)
+ throw new InvalidProcessException("A message for the message ref attribute MUST be entered");
+ if (messageRef != null && taskType != TaskType.Send && taskType != TaskType.Receive)
+ throw new InvalidProcessException("A task with a message ref must be of type 'Send' or 'Receive'");
+
+ if (messageRef != null)
+ {
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
+
+ if (messageRef.getToRef() == null)
+ throw new IllegalArgumentException("Message target cannot be null for: " + this);
+ }
+ }
+
public String toString()
{
return "Task[" + getTaskType() + "," + getName() + "]";
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -59,7 +59,7 @@
private EventImpl getEvent()
{
- if (node instanceof Event == false)
+ if (node instanceof EventImpl == false)
throw new IllegalStateException("Last added flow object is not an Event: " + node);
return (EventImpl)node;
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -150,7 +150,7 @@
{
if (type == TaskType.None || type == null)
{
- node = new TaskImpl(name);
+ node = new TaskImpl(name, TaskType.None);
}
else if (type == TaskType.Service)
{
@@ -158,11 +158,11 @@
}
else if (type == TaskType.Receive)
{
- throw new NotImplementedException();
+ node = new TaskImpl(name, TaskType.Receive);
}
else if (type == TaskType.Send)
{
- throw new NotImplementedException();
+ node = new TaskImpl(name, TaskType.Send);
}
else if (type == TaskType.User)
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,9 +23,10 @@
//$Id$
-import org.jbpm.api.NotImplementedException;
import org.jbpm.api.model.Task;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.TaskImpl;
/**
* The TaskBuilder can be used to dynamically build {@link Task}.
@@ -42,7 +43,15 @@
public TaskBuilder addMessageRef(String msgName)
{
- throw new NotImplementedException();
+ TaskImpl taskImpl = getTask();
+ taskImpl.setMessageRef(new MessageImpl(msgName));
+ return this;
}
+ private TaskImpl getTask()
+ {
+ if (node instanceof TaskImpl == false)
+ throw new IllegalStateException("Last added node is not an Task: " + node);
+ return (TaskImpl)node;
+ }
}
\ No newline at end of file
More information about the jbpm-commits
mailing list