[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