[jbpm-commits] JBoss JBPM SVN: r1750 - jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Jul 29 11:00:31 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-07-29 11:00:31 -0400 (Tue, 29 Jul 2008)
New Revision: 1750

Added:
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
Modified:
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
Log:
Externalize process builder

Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-07-29 15:00:31 UTC (rev 1750)
@@ -0,0 +1,194 @@
+/*
+ * 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.samples.airticket;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.GatewayBuilder;
+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.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Task.TaskType;
+
+/**
+ * Test the Airticket sample application
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketProcessBuilder
+{
+  private ObjectName messageListenerID;
+  
+  public AirticketProcessBuilder(ObjectName listenerID)
+  {
+    this.messageListenerID = listenerID;
+  }
+
+  public Process buildProcess()
+  {
+    // Create a Process through the ProcessBuilder
+    ProcessBuilderFactory procFactory = ProcessBuilderFactory.newInstance();
+    ProcessBuilder procBuilder = procFactory.newProcessBuilder();
+    procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
+
+    // Build the ReceiveReqTask
+    TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
+    taskBuilder.addMessageRef("ReqDataMsg", null).
+    addMessageProperty("Name", null, true).
+    addMessageProperty("From", null, true).
+    addMessageProperty("To", null, true).
+    addMessageProperty("Date", null, true).
+    addMessageProperty("Seats", null, true).
+    addSequenceFlow("ValidateTask");
+
+    // Build the ValidateTask
+    taskBuilder = procBuilder.addTask("ValidateTask", TaskType.None);
+    taskBuilder.addInputSet().
+    addPropertyInput("Name", null).
+    addPropertyInput("From", null).
+    addPropertyInput("To", null).
+    addPropertyInput("Date", null).
+    addPropertyInput("Seats", null).
+    addOutputSet().
+    addPropertyOutput("isReqDataValid", null).
+    addIORule("Name != null && From != null && To != null && Date != null && Seats > 0", ExpressionLanguage.MVEL).
+    addSequenceFlow("ValidateGateway");
+
+    // Build the ValidateGateway
+    GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
+    gatewayBuilder.addConditionalGate("CheckAvailabilityTask", ExpressionLanguage.MVEL, "isReqDataValid == true").
+    addDefaultGate("SendInvalidTask");
+
+    // Build the CheckAvailabilityTask
+    taskBuilder = procBuilder.addTask("CheckAvailabilityTask", TaskType.None);
+    taskBuilder.addExecutionHandler(AvailabilityHandler.class).
+    addInputSet().
+    addPropertyInput("From", null).
+    addPropertyInput("To", null).
+    addPropertyInput("Date", null).
+    addPropertyInput("Seats", null).
+    addOutputSet().
+    addPropertyOutput("isAvailable", null).
+    addPropertyOutput("Price", null).
+    addSequenceFlow("AvailabilityGateway");
+
+    // Build the SendInvalidTask
+    taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
+    taskBuilder.addMessageRef("InvalidDataMsg", messageListenerID).
+    addMessageProperty("Name", null, true).
+    addMessageProperty("From", null, true).
+    addMessageProperty("To", null, true).
+    addMessageProperty("Date", null, true).
+    addMessageProperty("Seats", null, true).
+    addSequenceFlow("ReceiveReqTask");
+
+    // Build the AvailabilityGateway
+    gatewayBuilder = procBuilder.addGateway("AvailabilityGateway", GatewayType.Exclusive);
+    gatewayBuilder.addConditionalGate("SendOfferTask", ExpressionLanguage.MVEL, "isAvailable == true").
+    addDefaultGate("SendNotAvailableTask");
+    
+    // Build the SendOfferTask
+    taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
+    taskBuilder.addMessageRef("OfferMsg", messageListenerID).
+    addMessageProperty("Name", null, true).
+    addMessageProperty("From", null, true).
+    addMessageProperty("To", null, true).
+    addMessageProperty("Date", null, true).
+    addMessageProperty("Seats", null, true).
+    addMessageProperty("Price", null, true).
+    addSequenceFlow("ReceiveOrderTask");
+
+    // Build the SendNotAvailableTask
+    taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
+    taskBuilder.addMessageRef("NotAvailableMsg", messageListenerID).
+    addMessageProperty("Name", null, true).
+    addMessageProperty("From", null, true).
+    addMessageProperty("To", null, true).
+    addMessageProperty("Date", null, true).
+    addMessageProperty("Seats", null, true).
+    addSequenceFlow("ReceiveReqTask");
+
+    // Build the ReceiveReqTask
+    taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
+    taskBuilder.addMessageRef("AcceptOfferMsg", null).
+    addMessageProperty("CreditCard", null, true).
+    addMessageProperty("Expire", null, true).
+    addMessageProperty("isOfferAccepted", null, true).
+    addSequenceFlow("AcceptOfferGateway");
+    
+    // Build the AcceptOfferGateway
+    gatewayBuilder = procBuilder.addGateway("AcceptOfferGateway", GatewayType.Exclusive);
+    gatewayBuilder.addConditionalGate("ParallelSplitGateway", ExpressionLanguage.MVEL, "isOfferAccepted == true").
+    addDefaultGate("ReceiveReqTask");
+    
+    // Build the AcceptOfferGateway
+    gatewayBuilder = procBuilder.addGateway("ParallelSplitGateway", GatewayType.Parallel);
+    gatewayBuilder.addGate("CreditCardTask").
+    addGate("BookingTask");
+    
+    // Build the CreditCardTask
+    taskBuilder = procBuilder.addTask("CreditCardTask", TaskType.None);
+    taskBuilder.addInputSet().
+    addPropertyInput("CreditCard", null).
+    addPropertyInput("Expire", null).
+    addPropertyInput("Price", null).
+    addSequenceFlow("SynchronizedJoinGateway");
+    
+    // Build the BookingTask
+    taskBuilder = procBuilder.addTask("BookingTask", TaskType.None);
+    taskBuilder.addInputSet().
+    addPropertyInput("Name", null).
+    addPropertyInput("From", null).
+    addPropertyInput("To", null).
+    addPropertyInput("Date", null).
+    addPropertyInput("Seats", null).
+    addSequenceFlow("SynchronizedJoinGateway");
+    
+    // Build the SynchronizedJoinGateway
+    gatewayBuilder = procBuilder.addGateway("SynchronizedJoinGateway", GatewayType.Parallel);
+    gatewayBuilder.addGate("SendConfirmTask");
+    
+    // Build the SendConfirmTask
+    taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
+    taskBuilder.addMessageRef("ConfirmMsg", messageListenerID).
+    addMessageProperty("Name", null, true).
+    addMessageProperty("From", null, true).
+    addMessageProperty("To", null, true).
+    addMessageProperty("Date", null, true).
+    addMessageProperty("Seats", null, true).
+    addMessageProperty("Price", null, true).
+    addSequenceFlow("End");
+    
+    // Add the EndEvent
+    Process proc = procBuilder.addEndEvent("End").getProcess();
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    pm.registerProcess(proc);
+    return proc;
+  }
+}
\ No newline at end of file


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

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-29 14:55:18 UTC (rev 1749)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java	2008-07-29 15:00:31 UTC (rev 1750)
@@ -32,18 +32,11 @@
 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;
 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.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Task.TaskType;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -120,7 +113,8 @@
 
   public void testValidRequest() throws Exception
   {
-    final Process proc = buildDynamicProcess();
+    AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+    Process proc = builder.buildProcess();
     proc.startProcess();
 
     ObjectName listenerID = getMessageListenerID();
@@ -139,7 +133,8 @@
 
   public void testInvalidRequest() throws Exception
   {
-    final Process proc = buildDynamicProcess();
+    AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+    Process proc = builder.buildProcess();
     proc.startProcess();
 
     ObjectName listenerID = getMessageListenerID();
@@ -156,148 +151,6 @@
     assertEquals("222", price);
   }
 
-  private Process buildDynamicProcess()
-  {
-    // Create a Process through the ProcessBuilder
-    ProcessBuilderFactory procFactory = ProcessBuilderFactory.newInstance();
-    ProcessBuilder procBuilder = procFactory.newProcessBuilder();
-    procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
-
-    // Build the ReceiveReqTask
-    TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
-    taskBuilder.addMessageRef("ReqDataMsg", null).
-    addMessageProperty("Name", null, true).
-    addMessageProperty("From", null, true).
-    addMessageProperty("To", null, true).
-    addMessageProperty("Date", null, true).
-    addMessageProperty("Seats", null, true).
-    addSequenceFlow("ValidateTask");
-
-    // Build the ValidateTask
-    taskBuilder = procBuilder.addTask("ValidateTask", TaskType.None);
-    taskBuilder.addInputSet().
-    addPropertyInput("Name", null).
-    addPropertyInput("From", null).
-    addPropertyInput("To", null).
-    addPropertyInput("Date", null).
-    addPropertyInput("Seats", null).
-    addOutputSet().
-    addPropertyOutput("isReqDataValid", null).
-    addIORule("Name != null && From != null && To != null && Date != null && Seats > 0", ExpressionLanguage.MVEL).
-    addSequenceFlow("ValidateGateway");
-
-    // Build the ValidateGateway
-    GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
-    gatewayBuilder.addConditionalGate("CheckAvailabilityTask", ExpressionLanguage.MVEL, "isReqDataValid == true").
-    addDefaultGate("SendInvalidTask");
-
-    // Build the CheckAvailabilityTask
-    taskBuilder = procBuilder.addTask("CheckAvailabilityTask", TaskType.None);
-    taskBuilder.addExecutionHandler(AvailabilityHandler.class).
-    addInputSet().
-    addPropertyInput("From", null).
-    addPropertyInput("To", null).
-    addPropertyInput("Date", null).
-    addPropertyInput("Seats", null).
-    addOutputSet().
-    addPropertyOutput("isAvailable", null).
-    addPropertyOutput("Price", null).
-    addSequenceFlow("AvailabilityGateway");
-
-    // Build the SendInvalidTask
-    taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
-    taskBuilder.addMessageRef("InvalidDataMsg", getMessageListenerID()).
-    addMessageProperty("Name", null, true).
-    addMessageProperty("From", null, true).
-    addMessageProperty("To", null, true).
-    addMessageProperty("Date", null, true).
-    addMessageProperty("Seats", null, true).
-    addSequenceFlow("ReceiveReqTask");
-
-    // Build the AvailabilityGateway
-    gatewayBuilder = procBuilder.addGateway("AvailabilityGateway", GatewayType.Exclusive);
-    gatewayBuilder.addConditionalGate("SendOfferTask", ExpressionLanguage.MVEL, "isAvailable == true").
-    addDefaultGate("SendNotAvailableTask");
-    
-    // Build the SendOfferTask
-    taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
-    taskBuilder.addMessageRef("OfferMsg", getMessageListenerID()).
-    addMessageProperty("Name", null, true).
-    addMessageProperty("From", null, true).
-    addMessageProperty("To", null, true).
-    addMessageProperty("Date", null, true).
-    addMessageProperty("Seats", null, true).
-    addMessageProperty("Price", null, true).
-    addSequenceFlow("ReceiveOrderTask");
-
-    // Build the SendNotAvailableTask
-    taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
-    taskBuilder.addMessageRef("NotAvailableMsg", getMessageListenerID()).
-    addMessageProperty("Name", null, true).
-    addMessageProperty("From", null, true).
-    addMessageProperty("To", null, true).
-    addMessageProperty("Date", null, true).
-    addMessageProperty("Seats", null, true).
-    addSequenceFlow("ReceiveReqTask");
-
-    // Build the ReceiveReqTask
-    taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
-    taskBuilder.addMessageRef("AcceptOfferMsg", null).
-    addMessageProperty("CreditCard", null, true).
-    addMessageProperty("Expire", null, true).
-    addMessageProperty("isOfferAccepted", null, true).
-    addSequenceFlow("AcceptOfferGateway");
-    
-    // Build the AcceptOfferGateway
-    gatewayBuilder = procBuilder.addGateway("AcceptOfferGateway", GatewayType.Exclusive);
-    gatewayBuilder.addConditionalGate("ParallelSplitGateway", ExpressionLanguage.MVEL, "isOfferAccepted == true").
-    addDefaultGate("ReceiveReqTask");
-    
-    // Build the AcceptOfferGateway
-    gatewayBuilder = procBuilder.addGateway("ParallelSplitGateway", GatewayType.Parallel);
-    gatewayBuilder.addGate("CreditCardTask").
-    addGate("BookingTask");
-    
-    // Build the CreditCardTask
-    taskBuilder = procBuilder.addTask("CreditCardTask", TaskType.None);
-    taskBuilder.addInputSet().
-    addPropertyInput("CreditCard", null).
-    addPropertyInput("Expire", null).
-    addPropertyInput("Price", null).
-    addSequenceFlow("SynchronizedJoinGateway");
-    
-    // Build the BookingTask
-    taskBuilder = procBuilder.addTask("BookingTask", TaskType.None);
-    taskBuilder.addInputSet().
-    addPropertyInput("Name", null).
-    addPropertyInput("From", null).
-    addPropertyInput("To", null).
-    addPropertyInput("Date", null).
-    addPropertyInput("Seats", null).
-    addSequenceFlow("SynchronizedJoinGateway");
-    
-    // Build the SynchronizedJoinGateway
-    gatewayBuilder = procBuilder.addGateway("SynchronizedJoinGateway", GatewayType.Parallel);
-    gatewayBuilder.addGate("SendConfirmTask");
-    
-    // Build the SendConfirmTask
-    taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
-    taskBuilder.addMessageRef("ConfirmMsg", getMessageListenerID()).
-    addMessageProperty("Name", null, true).
-    addMessageProperty("From", null, true).
-    addMessageProperty("To", null, true).
-    addMessageProperty("Date", null, true).
-    addMessageProperty("Seats", null, true).
-    addMessageProperty("Price", null, true).
-    addSequenceFlow("End");
-    
-    // Add the EndEvent
-    Process proc = procBuilder.addEndEvent("End").getProcess();
-    ProcessManager pm = ProcessManager.locateProcessManager();
-    pm.registerProcess(proc);
-    return proc;
-  }
-
   private Message getValidRequestMessage()
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();




More information about the jbpm-commits mailing list