[jbpm-commits] JBoss JBPM SVN: r1731 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/model/internal and 1 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Jul 25 09:51:28 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-07-25 09:51:28 -0400 (Fri, 25 Jul 2008)
New Revision: 1731
Added:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
Log:
Add SendTaskImpl
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -50,6 +50,11 @@
Property getProperty(String name);
/**
+ * Get the list of property names
+ */
+ List<String> getPropertyNames();
+
+ /**
* This defines the source of the Message.
*/
Participant getFromRef();
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -39,12 +39,12 @@
/**
* Add a message property
*/
- MessageBuilder addMessageProperty(String name, String value);
+ MessageBuilder addProperty(String name, String value);
/**
* Add a message property
*/
- MessageBuilder addMessageProperty(String name, String value, boolean isCorrelation);
+ MessageBuilder addProperty(String name, String value, boolean isCorrelation);
/**
* Get the Message
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -87,7 +87,7 @@
/**
* Add an {@link ExclusiveGateway} with a given name
*/
- ProcessBuilder addGateway(String name, GatewayType type);
+ GatewayBuilder addGateway(String name, GatewayType type);
/**
* Add an {@link ExecutionHandler} with a given Class
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -44,14 +44,14 @@
return this;
}
- public MessageBuilder addMessageProperty(String name, String value)
+ public MessageBuilder addProperty(String name, String value)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value));
message.addProperty(prop);
return this;
}
- public MessageBuilder addMessageProperty(String name, String value, boolean isCorrelation)
+ public MessageBuilder addProperty(String name, String value, boolean isCorrelation)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value), isCorrelation);
message.addProperty(prop);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -80,6 +80,19 @@
}
/**
+ * Get the list of property names
+ */
+ public List<String> getPropertyNames()
+ {
+ List<String> names = new ArrayList<String>();
+ for (Property prop : props)
+ {
+ names.add(prop.getName());
+ }
+ return names;
+ }
+
+ /**
* Add a property
*/
public void addProperty(Property prop)
@@ -102,4 +115,13 @@
{
throw new NotImplementedException();
}
+
+ public String toString()
+ {
+ StringBuilder str = new StringBuilder("Message[name=" + name + ",props=");
+ str.append(getPropertyNames());
+ str.append("]");
+ return str.toString();
+ }
}
+
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -152,6 +152,10 @@
{
flowObject = new ReceiveTaskImpl(name);
}
+ else if (type == TaskType.Send)
+ {
+ flowObject = new SendTaskImpl(name);
+ }
else
{
throw new NotImplementedException("Task type: " + type);
@@ -160,7 +164,7 @@
return new TaskBuilderImpl(proc, flowObject);
}
- public ProcessBuilder addGateway(String name, GatewayType type)
+ public GatewayBuilder addGateway(String name, GatewayType type)
{
if (GatewayType.Exclusive == type)
{
@@ -179,7 +183,7 @@
flowObject = new ComplexGatewayImpl(name);
}
addFlowObject();
- return this;
+ return new GatewayBuilderImpl(proc, flowObject);
}
public ProcessBuilder addExecutionHandler(Class<?> clazz)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -34,6 +34,7 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.ReceiveTask;
+import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.MessageReceiver;
@@ -112,7 +113,7 @@
@Override
public ExecutionHandler getExecutionHandler()
{
- final ReceiveTask task = this;
+ final Task task = this;
ExecutionHandler handler = executionHandler;
if (handler == null)
{
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -0,0 +1,129 @@
+/*
+ * 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.model.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Property;
+import org.jboss.bpm.model.SendTask;
+import org.jboss.bpm.model.Task;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
+
+//$Id$
+
+/**
+ * Task that corresponds to the TaskType.None
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public class SendTaskImpl extends TaskImpl implements SendTask
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(SendTaskImpl.class);
+
+ // A Web service is the default technology
+ private Implementation implementation = Implementation.WebService;
+ private Message messageRef;
+
+ public SendTaskImpl(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ public TaskType getTaskType()
+ {
+ return TaskType.Receive;
+ }
+
+ public Implementation getImplementation()
+ {
+ return implementation;
+ }
+
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(Message message)
+ {
+ this.messageRef = message;
+ }
+
+ @Override
+ public ExecutionHandler getExecutionHandler()
+ {
+ final Task task = this;
+ ExecutionHandler handler = executionHandler;
+ if (handler == null)
+ {
+ handler = new ExecutionHandler()
+ {
+ public void execute(Token token)
+ {
+ MessageBuilderFactory factory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = factory.newMessageBuilder();
+ msgBuilder.newMessage(messageRef.getName());
+
+ // Copy the properties from the execution context
+ // to the send message
+ ExecutionContext exContext = token.getExecutionContext();
+ for (Property prop : messageRef.getProperties())
+ {
+ String key = prop.getName();
+ Object att = exContext.getAttachment(key);
+ if (att == null)
+ throw new IllegalStateException("Cannot obtain expression: " + key);
+ if (att instanceof Expression == false)
+ throw new IllegalStateException("Value is not an expression: " + att);
+
+ Expression value = (Expression)att;
+ msgBuilder.addProperty(key, value.getExpressionBody());
+ }
+
+ Message msg = msgBuilder.getMessage();
+ System.out.println(msg);
+ }
+ };
+ }
+ return handler;
+ }
+
+ @Override
+ protected void initialize(Process proc)
+ {
+ super.initialize(proc);
+
+ if (messageRef == null)
+ throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -49,6 +49,10 @@
{
((ReceiveTaskImpl)flowObject).setMessageRef(message);
}
+ else if (flowObject instanceof SendTaskImpl)
+ {
+ ((SendTaskImpl)flowObject).setMessageRef(message);
+ }
else
{
throw new IllegalStateException("Cannot add message to: " + flowObject);
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-07-25 13:40:54 UTC (rev 1730)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-07-25 13:51:28 UTC (rev 1731)
@@ -28,6 +28,7 @@
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.MessageBuilderFactory;
@@ -36,6 +37,7 @@
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Task.TaskType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -84,18 +86,38 @@
// Create a Process through the ProcessBuilder
ProcessBuilder procBuilder = procFactory.newProcessBuilder();
- procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReq");
+ procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
- TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReq", TaskType.Receive);
+ // Build the ReceiveReq Task
+ TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
taskBuilder.addMessageRef("ReqDataMsg").
addMessageProperty("Name", null, true).
addMessageProperty("From", null, true).
addMessageProperty("To", null, true).
addMessageProperty("Date", null, true).
addMessageProperty("Seats", null, true).
- addSequenceFlow("End");
+ addSequenceFlow("ValidateGateway");
- Process proc = procBuilder.addGateway("Validate", null).addEndEvent("End").getProcess();
+ // Build the Validate Gateway
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
+ gatewayBuilder.addGate("CheckAvailabilityTask").addGate("SendInvalidTask");
+
+ // Build the CheckAvailability Task
+ taskBuilder = procBuilder.addTask("CheckAvailabilityTask", TaskType.None);
+ taskBuilder.addSequenceFlow("End");
+
+ // Build the SendInvalid Task
+ taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
+ taskBuilder.addMessageRef("InvalidDataMsg").
+ addMessageProperty("Name", null, true).
+ addMessageProperty("From", null, true).
+ addMessageProperty("To", null, true).
+ addMessageProperty("Date", null, true).
+ addMessageProperty("Seats", null, true).
+ addSequenceFlow("ReceiveReqTask");
+
+ // Add the EndEvent get the Process
+ Process proc = procBuilder.addEndEvent("End").getProcess();
// Register the Process with the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
@@ -105,14 +127,14 @@
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
Message msg = msgBuilder.newMessage("ReqDataMsg").
- addMessageProperty("Name", "Kermit").
- addMessageProperty("From", "MUC").
- addMessageProperty("To", "NYC").
- addMessageProperty("Date", "25-Jul-2008").
- addMessageProperty("Seats", "1").
+ addProperty("Name", "Kermit").
+ addProperty("From", "MUC").
+ addProperty("To", "NYC").
+ addProperty("Date", "25-Jul-2008").
+ addProperty("Seats", "1").
getMessage();
- proc.sendMessage("ReceiveReq", msg);
+ proc.sendMessage("ReceiveReqTask", msg);
proc.waitForEnd();
}
More information about the jbpm-commits
mailing list